[msl] Fix read-write textureStore in entry points

When emitting calls to the `fence()` builtin member function, wrap the
object in a `const_cast<>` to remove the `const` qualifier.

We do this to work around an MSL bug that prevents us from being able
to use texture fence intrinsics when texture handles are stored inside
const-qualified structures.

Fixed: 365570202
Change-Id: I8571804f063e60f544e2150f1454a6d7c63a4af3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/206194
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/src/tint/lang/msl/writer/printer/printer.cc b/src/tint/lang/msl/writer/printer/printer.cc
index e053fa0..aead73c 100644
--- a/src/tint/lang/msl/writer/printer/printer.cc
+++ b/src/tint/lang/msl/writer/printer/printer.cc
@@ -902,7 +902,20 @@
     }
 
     void EmitMslMemberBuiltinCall(StringStream& out, const msl::ir::MemberBuiltinCall* c) {
-        EmitValue(out, c->Object());
+        if (c->Func() == BuiltinFn::kFence) {
+            // If this is a fence builtin, we need to `const_cast<>` the object to remove the
+            // `const` qualifier. We do this to work around an MSL bug that prevents us from being
+            // able to use texture fence intrinsics when texture handles are stored inside
+            // const-qualified structures (see crbug.com/365570202).
+            out << "const_cast<";
+            EmitType(out, c->Object()->Type());
+            out << "thread &>(";
+            EmitValue(out, c->Object());
+            out << ")";
+        } else {
+            EmitValue(out, c->Object());
+        }
+
         out << "." << c->Func() << "(";
         bool needs_comma = false;
         for (const auto* arg : c->Args()) {
diff --git a/test/tint/bug/tint/365570202.wgsl b/test/tint/bug/tint/365570202.wgsl
new file mode 100644
index 0000000..6c14fd9
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl
@@ -0,0 +1,7 @@
+@group(0) @binding(0)
+var tex : texture_storage_2d<rgba8unorm, read_write>;
+
+@compute @workgroup_size(1)
+fn main() {
+  textureStore(tex, vec2(), vec4());
+}
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/365570202.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..923c350
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.dxc.hlsl
@@ -0,0 +1,7 @@
+RWTexture2D<float4> tex : register(u0);
+
+[numthreads(1, 1, 1)]
+void main() {
+  tex[(0).xx] = (0.0f).xxxx;
+  return;
+}
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/365570202.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..923c350
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.fxc.hlsl
@@ -0,0 +1,7 @@
+RWTexture2D<float4> tex : register(u0);
+
+[numthreads(1, 1, 1)]
+void main() {
+  tex[(0).xx] = (0.0f).xxxx;
+  return;
+}
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.glsl b/test/tint/bug/tint/365570202.wgsl.expected.glsl
new file mode 100644
index 0000000..f987917
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+#version 310 es
+
+layout(binding = 0, rgba8) uniform highp writeonly image2D tex;
+void tint_symbol() {
+  imageStore(tex, ivec2(0), vec4(0.0f));
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tint_symbol();
+  return;
+}
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/365570202.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..904d9ab
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,7 @@
+
+RWTexture2D<float4> tex : register(u0);
+[numthreads(1, 1, 1)]
+void main() {
+  tex[(0).xx] = (0.0f).xxxx;
+}
+
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/365570202.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..904d9ab
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,7 @@
+
+RWTexture2D<float4> tex : register(u0);
+[numthreads(1, 1, 1)]
+void main() {
+  tex[(0).xx] = (0.0f).xxxx;
+}
+
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.ir.glsl b/test/tint/bug/tint/365570202.wgsl.expected.ir.glsl
new file mode 100644
index 0000000..dd0e0d8
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.ir.glsl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/glsl/writer/printer/printer.cc:729 internal compiler error: TINT_UNREACHABLE 
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.ir.msl b/test/tint/bug/tint/365570202.wgsl.expected.ir.msl
new file mode 100644
index 0000000..fedee45
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.ir.msl
@@ -0,0 +1,12 @@
+#include <metal_stdlib>
+using namespace metal;
+
+struct tint_module_vars_struct {
+  texture2d<float, access::read_write> tex;
+};
+
+kernel void tint_symbol(texture2d<float, access::read_write> tex [[texture(0)]]) {
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.tex=tex};
+  tint_module_vars.tex.write(float4(0.0f), uint2(int2(0)));
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.tex).fence();
+}
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.msl b/test/tint/bug/tint/365570202.wgsl.expected.msl
new file mode 100644
index 0000000..4f1af74
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.msl
@@ -0,0 +1,8 @@
+#include <metal_stdlib>
+
+using namespace metal;
+kernel void tint_symbol(texture2d<float, access::read_write> tint_symbol_1 [[texture(0)]]) {
+  tint_symbol_1.write(float4(0.0f), uint2(int2(0))); tint_symbol_1.fence();
+  return;
+}
+
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.spvasm b/test/tint/bug/tint/365570202.wgsl.expected.spvasm
new file mode 100644
index 0000000..b4f4462
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 16
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %tex "tex"
+               OpName %main "main"
+               OpDecorate %tex DescriptorSet 0
+               OpDecorate %tex Binding 0
+               OpDecorate %tex Coherent
+      %float = OpTypeFloat 32
+          %3 = OpTypeImage %float 2D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3
+        %tex = OpVariable %_ptr_UniformConstant_3 UniformConstant
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+         %11 = OpConstantNull %v2int
+    %v4float = OpTypeVector %float 4
+         %14 = OpConstantNull %v4float
+       %main = OpFunction %void None %7
+          %8 = OpLabel
+          %9 = OpLoad %3 %tex None
+               OpImageWrite %9 %11 %14 None
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/bug/tint/365570202.wgsl.expected.wgsl b/test/tint/bug/tint/365570202.wgsl.expected.wgsl
new file mode 100644
index 0000000..49a0420
--- /dev/null
+++ b/test/tint/bug/tint/365570202.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+@group(0) @binding(0) var tex : texture_storage_2d<rgba8unorm, read_write>;
+
+@compute @workgroup_size(1)
+fn main() {
+  textureStore(tex, vec2(), vec4());
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.ir.msl
index 3e71a61..2bb0967 100644
--- a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_031506(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.ir.msl
index abe703f..85f02a9 100644
--- a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_036d0e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.ir.msl
index 0ddfcda..b50d868 100644
--- a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_03e7a0(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.ir.msl
index 96cc863..ec36375 100644
--- a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_042b06(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.ir.msl
index 95e1c5f..eb48e43 100644
--- a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_052a4e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.ir.msl
index fe4393d..c7a1ff4 100644
--- a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_053664(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.ir.msl
index 9e90415..e9f5dca 100644
--- a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_09e4d5(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/0ad124.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0ad124.wgsl.expected.ir.msl
index 3979c80..45cd743 100644
--- a/test/tint/builtins/gen/literal/textureStore/0ad124.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/0ad124.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_0ad124(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.msl
index b4f8754..08e4d69 100644
--- a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_0ade9a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.msl
index d74c0d9..cd7307a 100644
--- a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_0ff97a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.ir.msl
index d0b4c90..86aad4f 100644
--- a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_101325(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.ir.msl
index a8acc26..1a93fa9 100644
--- a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_145061(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.ir.msl
index 5932016..141ed4a 100644
--- a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_178e69(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.ir.msl
index 1e4069a..4c2e135 100644
--- a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_195d1b(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.ir.msl
index 289cf87..352561b 100644
--- a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_197637(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.msl
index 65def37..53b65b5 100644
--- a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_1a6c0b(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.ir.msl
index f1b1d63..f566e91 100644
--- a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_1af236(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.msl
index d0c2175..dd7d864 100644
--- a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_1e9fbd(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.msl
index 5c7bb01..c57c250 100644
--- a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_1fef04(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.ir.msl
index d60355a..085b313 100644
--- a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_2046db(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.ir.msl
index bd7a968..9d43e68 100644
--- a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_2173fd(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.ir.msl
index 54fd72e..8f1883b 100644
--- a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_24e6b7(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.ir.msl
index 1430aaf..1934f3d 100644
--- a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_26a26d(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/272f5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/272f5a.wgsl.expected.ir.msl
index bfc3a10..6ba7a14 100644
--- a/test/tint/builtins/gen/literal/textureStore/272f5a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/272f5a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_272f5a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.ir.msl
index 24f9674..50d795a 100644
--- a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_28e109(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.ir.msl
index dd51d06..029a3ce 100644
--- a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_2a60c9(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.ir.msl
index 6b38351..7b4a935 100644
--- a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_2addd6(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.ir.msl
index 38bbcd4..95c9c44 100644
--- a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_2c76db(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/2e512f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2e512f.wgsl.expected.ir.msl
index 04e263f..df0fb18 100644
--- a/test/tint/builtins/gen/literal/textureStore/2e512f.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2e512f.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_2e512f(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.ir.msl
index f28f916..936798d 100644
--- a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_2f29ea(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.ir.msl
index ee34de6..5c23c7f 100644
--- a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_312f27(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.msl
index a8b3367..56d2de2 100644
--- a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_32d3d6(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.ir.msl
index fad5b95..d878af9 100644
--- a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_3310d3(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.ir.msl
index 07f5882..602df33 100644
--- a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_345332(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.msl
index 46de323..c313a7f 100644
--- a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_3d1ebe(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.ir.msl
index 6eb4923..71b167c 100644
--- a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_3d96a4(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.ir.msl
index 5095479..419dded 100644
--- a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_3e0dc4(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.ir.msl
index 3994918..590ff22 100644
--- a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_3f61ca(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/43d1df.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/43d1df.wgsl.expected.ir.msl
index 7122261..5b53f55 100644
--- a/test/tint/builtins/gen/literal/textureStore/43d1df.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/43d1df.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_43d1df(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.ir.msl
index 26d944a..6b7828af 100644
--- a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_441222(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.ir.msl
index 0ad15cc..5f59aac 100644
--- a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_4483e7(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.ir.msl
index f707e55..d87d507 100644
--- a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_44b372(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.msl
index 194c24b..221e618 100644
--- a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_473ead(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.ir.msl
index d006bfc..f79c0f9 100644
--- a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_47bd70(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.ir.msl
index 1f87cc6..fa34616 100644
--- a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_48cb56(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.msl
index c58d32e..472fd86 100644
--- a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_4bf1fd(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.ir.msl
index 893d2b0..2f36824 100644
--- a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_4c76b7(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.msl
index ae3a890..2793033 100644
--- a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_4cce74(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.ir.msl
index 8b84c46..d5965f7 100644
--- a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_4ddf52(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.ir.msl
index 8555671..dc0323c 100644
--- a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_4e2b3a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.ir.msl
index 75174c8..67502a9 100644
--- a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_5030f5(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.msl
index c3f933a..0a5de0e 100644
--- a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_51ec82(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.msl
index 70c8674..3515648 100644
--- a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_5246b4(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.ir.msl
index ffa4578..ae30f62 100644
--- a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_53a68b(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.ir.msl
index 6c1a35d..2dd506c 100644
--- a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_5425ab(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.ir.msl
index b449d21..3e6b09d 100644
--- a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_544f06(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.ir.msl
index d17e652..b141973 100644
--- a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_55f9dc(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.msl
index c7ed79d..3d7ed5f 100644
--- a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_574a31(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.ir.msl
index ffa4f9b..c6d70f3 100644
--- a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_579b93(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.ir.msl
index 7e0cf6e..41ec512 100644
--- a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_58fc35(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.ir.msl
index dfd0518..4a3bdec 100644
--- a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_5a8b41(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.msl
index f16819f..28bcd3c 100644
--- a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_5b17eb(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.ir.msl
index 5420582..82a7796 100644
--- a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_5b4522(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.msl
index a5b28cc..622b823 100644
--- a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_5ec6b2(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.msl
index 06dd50e..cf5480d 100644
--- a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_5ee194(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.ir.msl
index 9305009..1c92687 100644
--- a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_614b58(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.msl
index 333e1cd..4d43326 100644
--- a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_635584(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.msl
index 8b38b4e..174e3a0 100644
--- a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_63f34a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.ir.msl
index 9e1c177..05ace86 100644
--- a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_646dbc(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.ir.msl
index 4e1dcb8..39d0cfe 100644
--- a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_65b6aa(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/65ba8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/65ba8b.wgsl.expected.ir.msl
index ee6f491..6992ba9 100644
--- a/test/tint/builtins/gen/literal/textureStore/65ba8b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/65ba8b.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_65ba8b(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.ir.msl
index c6fc999..34e4d56 100644
--- a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_6be9e0(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.msl
index 2403947..bf1e474 100644
--- a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_6c4a70(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.ir.msl
index ac071ae..7e43f33 100644
--- a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_6d1809(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.ir.msl
index 74c4f6c..fff44c9 100644
--- a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_6d259f(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.msl
index 8405bfa..db2b7a4 100644
--- a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_6e6cc0(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/6f0c92.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6f0c92.wgsl.expected.ir.msl
index 106d855..7e2b200 100644
--- a/test/tint/builtins/gen/literal/textureStore/6f0c92.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6f0c92.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_6f0c92(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.ir.msl
index c2ca3fe..04a2d6c 100644
--- a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_6f3542(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.ir.msl
index 4be7271..751e253 100644
--- a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_6fb99b(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.ir.msl
index 33c0e0e..d789643 100644
--- a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_704e1f(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.ir.msl
index d7247bd..e53824a 100644
--- a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_706236(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.ir.msl
index d0d4c9b..0cf731d 100644
--- a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_706560(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.ir.msl
index 5a35c44..a19e7a8 100644
--- a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_726d6d(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.ir.msl
index 326ea72..494af6b 100644
--- a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_73a735(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.ir.msl
index 1966ecf..6e0bbe7 100644
--- a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_751256(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.ir.msl
index 15fd5ce..fbe4779 100644
--- a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_75bbd5(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.msl
index 7374fa3..18599d7 100644
--- a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_7792fa(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.msl
index ec29ca6..828f918 100644
--- a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_7b8f86(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.ir.msl
index d8abee9..16d0ffa 100644
--- a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_7d10e0(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.ir.msl
index 25a2a52..ed61e4e 100644
--- a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_7dd042(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.ir.msl
index 450d6f8..0e4871d 100644
--- a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_7e787a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/803a10.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/803a10.wgsl.expected.ir.msl
index c6a4ccf..c4946ad 100644
--- a/test/tint/builtins/gen/literal/textureStore/803a10.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/803a10.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_803a10(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.ir.msl
index 5b69490..6198971 100644
--- a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_80bf1d(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.ir.msl
index 5a0e6c0..4d79655 100644
--- a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_818df6(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.ir.msl
index 8737970..63fb21c 100644
--- a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_81ae31(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.ir.msl
index 62111d2..0a80d42 100644
--- a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_820272(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.ir.msl
index ab015cd..d462ba2 100644
--- a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_84d435(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.ir.msl
index 6028deb..0412f9d 100644
--- a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_84f4f4(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.msl
index b1734a4..e90dafd 100644
--- a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8676c9(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.ir.msl
index e036ce8..d62f972 100644
--- a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_86f713(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.ir.msl
index 4979422..3870c70 100644
--- a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_877c92(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.ir.msl
index 66c1d70..02cfe1a 100644
--- a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8815b1(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.ir.msl
index cc87374..5b7ed29 100644
--- a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_885921(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.ir.msl
index 180ae09..9d8b331 100644
--- a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_88ce7e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.ir.msl
index 15b029d..2f3b242f 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8a16b0(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.ir.msl
index cba8786..fd30f7c 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8a46ff(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.ir.msl
index 4528611..f3b2c67 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8a85b9(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.msl
index 860bd8d..99b198e 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8a8681(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.ir.msl
index 54fb30c..2c11dfb 100644
--- a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8ae0bc(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.ir.msl
index 2c8a822..51eb68d 100644
--- a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8cd841(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.ir.msl
index 50e2ce4..9b10012 100644
--- a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_8ebdc9(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.ir.msl
index 701cf13..943d54d 100644
--- a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_90960e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.ir.msl
index a32808d..8f5f9dc 100644
--- a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_90a553(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.ir.msl
index 6775dca..529f44e 100644
--- a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_976636(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.ir.msl
index 69a8a7d..1f47a54 100644
--- a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_9ba5c1(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.ir.msl
index 10488de..43bb5dd 100644
--- a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_9cea9e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.ir.msl
index 321e1db..f49641d 100644
--- a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_9d7c62(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.ir.msl
index a209183..b0117dc 100644
--- a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a0022f(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.ir.msl
index c35e511..6f4ba0f 100644
--- a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a14041(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.ir.msl
index 76fc165..5ed5933 100644
--- a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a19a12(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.ir.msl
index 66254fc..922dd2d 100644
--- a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a24491(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.ir.msl
index 1036524..386ce6f 100644
--- a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a5b88e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.ir.msl
index 1e33420..abd28df 100644
--- a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a5c925(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.ir.msl
index 6986a46..5bcd9e6 100644
--- a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a66ca4(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.ir.msl
index d1a7ff0..1af2e4e 100644
--- a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a702b6(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a7fc47.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a7fc47.wgsl.expected.ir.msl
index c417a76..2815a1b 100644
--- a/test/tint/builtins/gen/literal/textureStore/a7fc47.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a7fc47.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a7fc47(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.msl
index 57c7ff0..e1c98c7 100644
--- a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_a9298c(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.ir.msl
index 65952d5..9806799 100644
--- a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ab03b6(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.ir.msl
index 2b1d38d..e44db39 100644
--- a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ab788e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.msl
index c01cefe..8e0d36d 100644
--- a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_abdd21(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.ir.msl
index 620b503..d404a24 100644
--- a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ac0a55(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ae6a2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ae6a2a.wgsl.expected.ir.msl
index a37f98b..0834515 100644
--- a/test/tint/builtins/gen/literal/textureStore/ae6a2a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ae6a2a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ae6a2a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.ir.msl
index 2d47eb9..9d9e5ae 100644
--- a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_aedea3(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.ir.msl
index 002aee2..853da9c 100644
--- a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b16110(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.ir.msl
index 0289328..8cd296d 100644
--- a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b286b4(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.ir.msl
index dd4ffae..efe9f65 100644
--- a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b36bc1(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.ir.msl
index 2e880c8..524e273 100644
--- a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b4389e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.msl
index 70459b4..3b794cf 100644
--- a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b71c13(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.msl
index d568492..37c195d 100644
--- a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b7232c(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.ir.msl
index 8ca5c07..f425dbd 100644
--- a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b89ffb(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.ir.msl
index cfd21b1..0468367 100644
--- a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b9c81a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.ir.msl
index c7740b6..a3de3cd 100644
--- a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_b9d863(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.ir.msl
index e1c1e53..4507f9a 100644
--- a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_bc1423(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.ir.msl
index c99d2fd..ddfef4e 100644
--- a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_bcc97a(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.msl
index eb03300..48fea6d 100644
--- a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_bd6602(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.ir.msl
index 11aa959..25a2d0f 100644
--- a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_c06463(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.ir.msl
index 2935a99..4bb0d92 100644
--- a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_c1c664(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.ir.msl
index e4017ef..68f93fb 100644
--- a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_c1f760(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.ir.msl
index 534f3e5..011713e 100644
--- a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_c33478(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.msl
index 8541398..da27cf1 100644
--- a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_c35268(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.ir.msl
index 2374f20..fd7fed9 100644
--- a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_c63f05(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.ir.msl
index 014609b..399ce5d 100644
--- a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_c79451(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.ir.msl
index 7026f7a..e6fa3f6 100644
--- a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ccac20(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.msl
index 80da40a..a082e0c 100644
--- a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ceb832(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.ir.msl
index e7e64c0..a7922a9 100644
--- a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_d0d62c(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.ir.msl
index 1f65af0..0bdede6 100644
--- a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_d0fadc(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.ir.msl
index 26a2266..e64306c 100644
--- a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_d19db4(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.ir.msl
index 36c182c..bf2c4ac 100644
--- a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_d1ab82(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.ir.msl
index 46f6c95..67259b1 100644
--- a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_d3a22b(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.ir.msl
index 80f8f20..1096fb5 100644
--- a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_d86d33(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.ir.msl
index 2ac380c..f37e3a3 100644
--- a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_da530c(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.ir.msl
index 0a2b960..c3f20f4 100644
--- a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_db5128(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.msl
index 082f978..cc67038 100644
--- a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_dce0e2(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.ir.msl
index d8a3cf7..70f61f6 100644
--- a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_dd8b29(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.ir.msl
index 9e3a789..744f5e3 100644
--- a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_de38e5(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.msl
index 729835a..e843d3d 100644
--- a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_df0c51(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint3(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.msl
index 4f990d1..cd046ce 100644
--- a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_e077e7(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.ir.msl
index c67d7c2..ac42a89 100644
--- a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_e1784d(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.ir.msl
index 24cd718..32a89d4 100644
--- a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_e46fd8(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.ir.msl
index 687d6b2..6a95987 100644
--- a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_e72bdc(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.ir.msl
index ee4c43c..2e03802 100644
--- a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_e87f6e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.msl
index fd0cc30..3b43582 100644
--- a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ea30d2(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ed6198.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ed6198.wgsl.expected.ir.msl
index 191d67f..64f750b 100644
--- a/test/tint/builtins/gen/literal/textureStore/ed6198.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ed6198.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ed6198(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint3(int3(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.ir.msl
index d749d760..b8e0209 100644
--- a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_f05928(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1u);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.msl
index de24499..4ce30bc 100644
--- a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_f64d69(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.ir.msl
index e7cbd9d..1baef95 100644
--- a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_f6f392(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.ir.msl
index 39b9547..6a1f1f9 100644
--- a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_f8aaf9(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(int4(1), uint2(int2(1)), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.ir.msl
index 80e0c99..12c9738 100644
--- a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_f975a0(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(float4(1.0f), uint2(int2(1)));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.ir.msl
index 87a388f..c9fee79 100644
--- a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_fc916e(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint2(1u), 1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.ir.msl
index af5d7ba..454dd0e 100644
--- a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 void textureStore_ff23b3(tint_module_vars_struct tint_module_vars) {
   tint_module_vars.arg_0.write(uint4(1u), uint(1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.ir.msl
index edfa657..7146392 100644
--- a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.ir.msl
index f775c86..60d6035 100644
--- a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.ir.msl
index d37cdf6..01382eb 100644
--- a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.ir.msl
index 43d5173..8234689 100644
--- a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.ir.msl
index 07552a6..ae3ede5 100644
--- a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.ir.msl
index 4726962..ade8c1c 100644
--- a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.ir.msl
index b5b1bf1..646bbfd 100644
--- a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/0ad124.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0ad124.wgsl.expected.ir.msl
index 085763c..135bf56 100644
--- a/test/tint/builtins/gen/var/textureStore/0ad124.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/0ad124.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.msl
index 85379e0..de374e5 100644
--- a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.msl
index e1d7af8..0470db3 100644
--- a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.ir.msl
index 7ac7d77..b34af0e 100644
--- a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.ir.msl
index 0c90ed4..77f2c41 100644
--- a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.ir.msl
index a4c3db7..2a16136 100644
--- a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.ir.msl
index 6641f0a..f323c2b 100644
--- a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.ir.msl
index 3664e67..c22be3f 100644
--- a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.msl
index 3db33d1..68cec21 100644
--- a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.ir.msl
index a5e7271..3a1ae4f 100644
--- a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.msl
index f540d81..ca9e576 100644
--- a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.msl
index 628ae7d..0c2281e 100644
--- a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.ir.msl
index e5ac956..e63784d 100644
--- a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.ir.msl
index 0cbdedc..e6403f8 100644
--- a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.ir.msl
index 3f066be..3a4a399 100644
--- a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.ir.msl
index 97956d1..138e845 100644
--- a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/272f5a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/272f5a.wgsl.expected.ir.msl
index 3d1a65d..81590bc 100644
--- a/test/tint/builtins/gen/var/textureStore/272f5a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/272f5a.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.ir.msl
index c3e71a1..fcb892f 100644
--- a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.ir.msl
index 6b19a1c..1d95656 100644
--- a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.ir.msl
index 3566f85..7967868 100644
--- a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.ir.msl
index 7da797e..6c0dff9 100644
--- a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/2e512f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2e512f.wgsl.expected.ir.msl
index 02d1be9..7458a43 100644
--- a/test/tint/builtins/gen/var/textureStore/2e512f.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/2e512f.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.ir.msl
index 27addf3..363b38a 100644
--- a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.ir.msl
index afb4ba5..7c65ef0 100644
--- a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.msl
index 13c2ae2..3e044fd 100644
--- a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.ir.msl
index 1f7aed3..8fb85a2 100644
--- a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.ir.msl
index 9914b41..3c613c5 100644
--- a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.msl
index 53d3439..036e3ca 100644
--- a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.ir.msl
index 3601c63..2ba0912 100644
--- a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.ir.msl
index 21cb2bd..7302fe9 100644
--- a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.ir.msl
index ccc72a7..694239e 100644
--- a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/43d1df.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/43d1df.wgsl.expected.ir.msl
index 6b6bdd8..72f7da7 100644
--- a/test/tint/builtins/gen/var/textureStore/43d1df.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/43d1df.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.ir.msl
index aa6ec44..3d3eb38 100644
--- a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.ir.msl
index affc876..b0f5b0d 100644
--- a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.ir.msl
index 7d0ea16..d4f22bc 100644
--- a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.msl
index 35bb356..dc4282f 100644
--- a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.ir.msl
index 386234c..0c68403 100644
--- a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.ir.msl
index ab29ada..e3b88e2 100644
--- a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.msl
index e2a7a91..cdd8304 100644
--- a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.ir.msl
index 3782499..a92a87a 100644
--- a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.msl
index 397ed9b..59a7a50 100644
--- a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.ir.msl
index 7b1b6b0..1f53dc4 100644
--- a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.ir.msl
index c22c623..97df42f 100644
--- a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.ir.msl
index dac57f3..2112539 100644
--- a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.msl
index e9f9d42..8f1971b 100644
--- a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.msl
index e328832..6dbe2a2 100644
--- a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.ir.msl
index 46a6ba8..daa49c9 100644
--- a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.ir.msl
index 6a1d513..9de7d36 100644
--- a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.ir.msl
index 6d229e0..45107d91 100644
--- a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.ir.msl
index c1988a3..05db4b4 100644
--- a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.msl
index c0e131c..d83a1c3 100644
--- a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.ir.msl
index 2511798..4f8bfa6 100644
--- a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.ir.msl
index f01ffc5..a5dcd85 100644
--- a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.ir.msl
index e98cd7e..246e077 100644
--- a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.msl
index 7955c50..357f47b 100644
--- a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.ir.msl
index c1afd1e..198fcdc 100644
--- a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.msl
index 3ee95cf..8f02911 100644
--- a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.msl
index e5160c3..2c9c1af 100644
--- a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.ir.msl
index c08a5b0..d8ac8ae 100644
--- a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.msl
index 59d8479..15a5c3d 100644
--- a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.msl
index 286306d..f02293f 100644
--- a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.ir.msl
index 9e31ffd..452928a 100644
--- a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.ir.msl
index 2707b90..53dc4de 100644
--- a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/65ba8b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/65ba8b.wgsl.expected.ir.msl
index d32e07b..02c54a3 100644
--- a/test/tint/builtins/gen/var/textureStore/65ba8b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/65ba8b.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.ir.msl
index 17415d8..a70faaa 100644
--- a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.msl
index aa6b03b..19adede 100644
--- a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.ir.msl
index def7e50..c94f97a 100644
--- a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.ir.msl
index 8c47257..ef6c9b6 100644
--- a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.msl
index f6c4ceb..2e1e168 100644
--- a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/6f0c92.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6f0c92.wgsl.expected.ir.msl
index a3c6ec3..6e214a0 100644
--- a/test/tint/builtins/gen/var/textureStore/6f0c92.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/6f0c92.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.ir.msl
index 354d007..7560211 100644
--- a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.ir.msl
index f206994..472d6c8 100644
--- a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.ir.msl
index 9fe3c56..43056d0 100644
--- a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.ir.msl
index f4d7f34..eae433f 100644
--- a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.ir.msl
index 9d76ece..746eb52 100644
--- a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.ir.msl
index 6849ad9..5e8e492 100644
--- a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.ir.msl
index 4b1ed0f..8da24c7 100644
--- a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.ir.msl
index 95dbf96..6ec9b50 100644
--- a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.ir.msl
index 1bcfe3f..e3f6191 100644
--- a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.msl
index e3da9b5..9974c31 100644
--- a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.msl
index d903352..3ebb801 100644
--- a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.ir.msl
index 0dc8eb3..c676a7a 100644
--- a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.ir.msl
index 7886594..589eb4f 100644
--- a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.ir.msl
index 0895cfb..d0d6726 100644
--- a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/803a10.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/803a10.wgsl.expected.ir.msl
index 0c969d9..8d48c47 100644
--- a/test/tint/builtins/gen/var/textureStore/803a10.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/803a10.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.ir.msl
index 37e3758..2af7136 100644
--- a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.ir.msl
index 5893223..13e1e01 100644
--- a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.ir.msl
index 27c6ff1..cff4b17 100644
--- a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.ir.msl
index 24e3554..23364e6 100644
--- a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.ir.msl
index f1fccb3..1a53045 100644
--- a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.ir.msl
index 79ea2fd..0bda5aa 100644
--- a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.msl
index b662e5f..9ec92a8 100644
--- a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.ir.msl
index e38a108..7ce0ea6 100644
--- a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.ir.msl
index 8a8d725..4ca6f2e 100644
--- a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.ir.msl
index d1fa078..67d3210 100644
--- a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.ir.msl
index dd10280..53859af 100644
--- a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.ir.msl
index 08c1a81..75b0022 100644
--- a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.ir.msl
index e06e7ca..533bfc0 100644
--- a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.ir.msl
index c2da7ee..c70386a 100644
--- a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.ir.msl
index f8de432..4fa5713 100644
--- a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.msl
index aad6734..fa80d51 100644
--- a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.ir.msl
index de5127e..26cbb49 100644
--- a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.ir.msl
index 7a7c627..b9e6330 100644
--- a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.ir.msl
index fb6d383..e831523 100644
--- a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.ir.msl
index fb89a01..069a849 100644
--- a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.ir.msl
index 1430210..55c23ea 100644
--- a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.ir.msl
index 54874bc..cce617e 100644
--- a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.ir.msl
index b0a45e7..0420b61 100644
--- a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.ir.msl
index f0c22cf..3c8621a 100644
--- a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.ir.msl
index 681ebb1..02e0d91 100644
--- a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.ir.msl
index 8cc69b2..6c1bc50 100644
--- a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.ir.msl
index 35a125e..ffebf62 100644
--- a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.ir.msl
index c900fc7..fdb1f00 100644
--- a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.ir.msl
index 33a3370..342a827 100644
--- a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.ir.msl
index b904af2..b933c39 100644
--- a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.ir.msl
index 4359be5..333ac2b 100644
--- a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.ir.msl
index 52650d2..f608c58 100644
--- a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.ir.msl
index b6f4dbf..4099e3b 100644
--- a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a7fc47.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a7fc47.wgsl.expected.ir.msl
index e38ff82..69edb0d 100644
--- a/test/tint/builtins/gen/var/textureStore/a7fc47.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a7fc47.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.msl
index e43aaa0..6a567d8 100644
--- a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.ir.msl
index da0560c..ecce565 100644
--- a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.ir.msl
index b91bdfc..6233f6a 100644
--- a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.msl
index 8572ca6..4c12e1f 100644
--- a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.ir.msl
index b677dce..36bd85a 100644
--- a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ae6a2a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ae6a2a.wgsl.expected.ir.msl
index d3d6989..6849b85 100644
--- a/test/tint/builtins/gen/var/textureStore/ae6a2a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ae6a2a.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.ir.msl
index df83eb2..bc0b7c1 100644
--- a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.ir.msl
index e77aaf8..45f0427 100644
--- a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.ir.msl
index 8b825f7..17f21d7 100644
--- a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.ir.msl
index 365fc39..24486e0 100644
--- a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.ir.msl
index d336b39..e4d46dc 100644
--- a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.msl
index b516a2b..33e3e01 100644
--- a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.msl
index d82ab20..2c5368b 100644
--- a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.ir.msl
index de8bfc2..613aa85 100644
--- a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.ir.msl
index 28eb1f6..939f93b 100644
--- a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.ir.msl
index a2fb092..1f42d0d 100644
--- a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.ir.msl
index 73fc81b..26cf069 100644
--- a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.ir.msl
index ac6ff6e..3152459 100644
--- a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.msl
index 28759f8..1f73ae0 100644
--- a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.ir.msl
index 4245f09..0a363fd 100644
--- a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.ir.msl
index 88e0bc3..a661f0d 100644
--- a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.ir.msl
index 62d630b..8bd30e3 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.ir.msl
index 86af576..c61d4dc 100644
--- a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.msl
index 5d90d84..80b15f2 100644
--- a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.ir.msl
index 014d727..c7f0342 100644
--- a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.ir.msl
index 49e6113..e75decc 100644
--- a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint arg_1 = 1u;
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.ir.msl
index 4419796..c77d3d8 100644
--- a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.msl
index eb10e94..f4bba55 100644
--- a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint arg_2 = 1u;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.ir.msl
index a465c76..0ee9ac9 100644
--- a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.ir.msl
index 4095bd6..5036c8f 100644
--- a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.ir.msl
index 656efb2..96dd015 100644
--- a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.ir.msl
index b232443..65293ee 100644
--- a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.ir.msl
index fcb08c0..0c6ad1e 100644
--- a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   uint4 arg_2 = uint4(1u);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.ir.msl
index febc16b..8c29b6d 100644
--- a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.ir.msl
index b2c4316..0f37d81 100644
--- a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.ir.msl
index 5fa480d..29c245e 100644
--- a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.msl
index e1c3990..b0225ef 100644
--- a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.ir.msl
index b2ff242..17ee327 100644
--- a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   uint4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.ir.msl
index 474ccfd..ab93bb8 100644
--- a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.msl
index 41c11f7..25ab3aa 100644
--- a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint3 arg_1 = uint3(1u);
   int4 arg_2 = int4(1);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.msl
index 64bc58b..17436cf 100644
--- a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.ir.msl
index 16765fc..7210126 100644
--- a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.ir.msl
index d7d490e..4c73379 100644
--- a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   uint2 arg_1 = uint2(1u);
   float4 arg_2 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_2, arg_1);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.ir.msl
index e767cf5..b660737 100644
--- a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   float4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.ir.msl
index ca32cce..8331b6f 100644
--- a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.msl
index 397454e..0b376e0 100644
--- a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   int4 arg_3 = int4(1);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ed6198.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ed6198.wgsl.expected.ir.msl
index d27347e..a9b07be 100644
--- a/test/tint/builtins/gen/var/textureStore/ed6198.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ed6198.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint3(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture3d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture3d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.ir.msl
index bb95f9b..d306af4 100644
--- a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   uint const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.msl
index 7ecfb37..32d7049 100644
--- a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int4 arg_2 = int4(1);
   int4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.ir.msl
index c7b5014..7fefbc1 100644
--- a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   float4 arg_3 = float4(1.0f);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.ir.msl
index 54f66ed..38c067d 100644
--- a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   int const v = arg_2;
   int4 const v_1 = arg_3;
   tint_module_vars.arg_0.write(v_1, uint2(arg_1), v);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<int, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<int, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.ir.msl
index 6d47216..04146ec 100644
--- a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   float4 arg_2 = float4(1.0f);
   float4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint2(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d<float, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d<float, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.ir.msl
index c3ae67c..1e71d50 100644
--- a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   int arg_2 = 1;
   uint4 arg_3 = uint4(1u);
   tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
-  tint_module_vars.arg_0.fence();
+  const_cast<texture2d_array<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture2d_array<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.ir.msl
index 8063083..92bf20b 100644
--- a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   uint4 arg_2 = uint4(1u);
   uint4 const v = arg_2;
   tint_module_vars.arg_0.write(v, uint(arg_1));
-  tint_module_vars.arg_0.fence();
+  const_cast<texture1d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
 }
 
 fragment void fragment_main(texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
diff --git a/test/tint/builtins/textureStore/loop_continuing_read_write_texture.wgsl.expected.ir.msl b/test/tint/builtins/textureStore/loop_continuing_read_write_texture.wgsl.expected.ir.msl
index 031e5f1..84b3346 100644
--- a/test/tint/builtins/textureStore/loop_continuing_read_write_texture.wgsl.expected.ir.msl
+++ b/test/tint/builtins/textureStore/loop_continuing_read_write_texture.wgsl.expected.ir.msl
@@ -19,7 +19,7 @@
       }
       {
         tint_module_vars.tex.write(int4(0), uint2(int2(0)));
-        tint_module_vars.tex.fence();
+        const_cast<texture2d<int, access::read_write>thread &>(tint_module_vars.tex).fence();
       }
       continue;
     }