[msl-writer] Add support for read-write textures

Insert a fence after every `textureStore()` on a read-write texture to
ensure that writes are visible to subsequent reads.

Bug: tint:2007
Change-Id: I2fdbb272a44d4aa21e486e1d05ddd0565d064655
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/146246
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.msl
index 4843189..478b947 100644
--- a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
-
-fn textureStore_031506() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_031506(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_031506();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_031506(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_031506();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_031506();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_031506(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/031506.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_031506(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.msl
index 4117d6a..b118db2 100644
--- a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
-
-fn textureStore_036d0e() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_036d0e(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_036d0e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_036d0e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_036d0e();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_036d0e();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_036d0e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/036d0e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_036d0e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.msl
index a5b4500..eae40a7 100644
--- a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
-
-fn textureStore_03e7a0() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_03e7a0(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_03e7a0();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_03e7a0(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_03e7a0();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_03e7a0();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_03e7a0(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/03e7a0.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_03e7a0(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.msl
index 3742f745..ae6e4e0 100644
--- a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
-
-fn textureStore_042b06() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_042b06(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_042b06();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_042b06(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_042b06();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_042b06();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_042b06(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/042b06.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_042b06(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.msl
index 08bb0b0..03beffc 100644
--- a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
-
-fn textureStore_052a4e() {
-  textureStore(arg_0, 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_052a4e(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_052a4e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_052a4e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_052a4e();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_052a4e();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_052a4e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/052a4e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_052a4e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.msl
index 58d9e7c..dc14ee8 100644
--- a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
-
-fn textureStore_053664() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_053664(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_053664();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_053664(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_053664();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_053664();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_053664(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/053664.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_053664(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.msl
index 11ed5e2..e3acca6 100644
--- a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
-
-fn textureStore_09e4d5() {
-  textureStore(arg_0, 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_09e4d5(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_09e4d5();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_09e4d5(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_09e4d5();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_09e4d5();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_09e4d5(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/09e4d5.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_09e4d5(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.msl
index 3c7ff5d..f8d041f 100644
--- a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
-
-fn textureStore_0ade9a() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_0ade9a(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_0ade9a();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_0ade9a(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_0ade9a();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_0ade9a();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_0ade9a(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/0ade9a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_0ade9a(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.msl
index 59e13dc..6f80d5d 100644
--- a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
-
-fn textureStore_0ff97a() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_0ff97a(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_0ff97a();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_0ff97a(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_0ff97a();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_0ff97a();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_0ff97a(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/0ff97a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_0ff97a(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.msl
index 2d5c64a..ede5222 100644
--- a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
-
-fn textureStore_101325() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_101325(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_101325();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_101325(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_101325();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_101325();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_101325(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/101325.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_101325(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.msl
index b8a372c..a9ee83d 100644
--- a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
-
-fn textureStore_145061() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_145061(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_145061();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_145061(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_145061();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_145061();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_145061(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/145061.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_145061(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.msl
index f1c8b2c..e7491c6 100644
--- a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
-
-fn textureStore_178e69() {
-  textureStore(arg_0, 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_178e69(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_178e69();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_178e69(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_178e69();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_178e69();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_178e69(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/178e69.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_178e69(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.msl
index 56e7d01..98875b2 100644
--- a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
-
-fn textureStore_195d1b() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_195d1b(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_195d1b();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_195d1b(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_195d1b();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_195d1b();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_195d1b(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/195d1b.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_195d1b(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.msl
index 530105e..945923d 100644
--- a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
-
-fn textureStore_197637() {
-  textureStore(arg_0, 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_197637(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_197637();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_197637(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_197637();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_197637();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_197637(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/197637.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_197637(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.msl
index 950e073..46fc6d4 100644
--- a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
-
-fn textureStore_1a6c0b() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_1a6c0b(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_1a6c0b();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_1a6c0b(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_1a6c0b();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_1a6c0b();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_1a6c0b(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/1a6c0b.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_1a6c0b(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.msl
index fbdf68d..4a2218d 100644
--- a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
-
-fn textureStore_1af236() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_1af236(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_1af236();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_1af236(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_1af236();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_1af236();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_1af236(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/1af236.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_1af236(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.msl
index eb09d65..90836ff 100644
--- a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
-
-fn textureStore_1e9fbd() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_1e9fbd(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_1e9fbd();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_1e9fbd(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_1e9fbd();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_1e9fbd();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_1e9fbd(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/1e9fbd.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_1e9fbd(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.msl
index 149bfb9..3f991da 100644
--- a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
-
-fn textureStore_1fef04() {
-  textureStore(arg_0, 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_1fef04(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_1fef04();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_1fef04(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_1fef04();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_1fef04();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_1fef04(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/1fef04.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_1fef04(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.msl
index b3f308b..bf0d868 100644
--- a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
-
-fn textureStore_2046db() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_2046db(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_2046db();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_2046db(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_2046db();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_2046db();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_2046db(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/2046db.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_2046db(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.msl
index 93a70fc..4b1683c 100644
--- a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
-
-fn textureStore_2173fd() {
-  textureStore(arg_0, 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_2173fd(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_2173fd();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_2173fd(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_2173fd();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_2173fd();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_2173fd(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/2173fd.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_2173fd(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.msl
index dbebad0..89e7fbf 100644
--- a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
-
-fn textureStore_24e6b7() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_24e6b7(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_24e6b7();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_24e6b7(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_24e6b7();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_24e6b7();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_24e6b7(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/24e6b7.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_24e6b7(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.msl
index 33dc3bd..de9ee2f 100644
--- a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
-
-fn textureStore_26a26d() {
-  textureStore(arg_0, 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_26a26d(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_26a26d();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_26a26d(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_26a26d();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_26a26d();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_26a26d(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/26a26d.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_26a26d(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.msl
index 3aa211b..5e9a42d 100644
--- a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
-
-fn textureStore_28e109() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_28e109(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_28e109();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_28e109(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_28e109();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_28e109();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_28e109(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/28e109.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_28e109(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.msl
index e596c85..c83a122 100644
--- a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
-
-fn textureStore_2a60c9() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_2a60c9(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_2a60c9();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_2a60c9(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_2a60c9();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_2a60c9();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_2a60c9(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/2a60c9.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_2a60c9(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.msl
index 5e24b58..9b4ab47 100644
--- a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
-
-fn textureStore_2addd6() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_2addd6(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_2addd6();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_2addd6(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_2addd6();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_2addd6();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_2addd6(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/2addd6.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_2addd6(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.msl
index 5d861d9..033584d 100644
--- a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
-
-fn textureStore_2c76db() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_2c76db(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_2c76db();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_2c76db(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_2c76db();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_2c76db();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_2c76db(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/2c76db.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_2c76db(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.msl
index 6c90156..020ed2d 100644
--- a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
-
-fn textureStore_2f29ea() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_2f29ea(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_2f29ea();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_2f29ea(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_2f29ea();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_2f29ea();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_2f29ea(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/2f29ea.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_2f29ea(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.msl
index cacef1b..bb99603 100644
--- a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
-
-fn textureStore_312f27() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_312f27(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_312f27();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_312f27(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_312f27();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_312f27();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_312f27(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/312f27.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_312f27(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.msl
index 99977f3..fa2fd75 100644
--- a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
-
-fn textureStore_32d3d6() {
-  textureStore(arg_0, 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_32d3d6(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_32d3d6();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_32d3d6(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_32d3d6();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_32d3d6();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_32d3d6(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/32d3d6.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_32d3d6(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.msl
index f07d974..4adf7b5 100644
--- a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
-
-fn textureStore_3310d3() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_3310d3(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_3310d3();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_3310d3(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_3310d3();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_3310d3();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_3310d3(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/3310d3.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_3310d3(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.msl
index 0b2c02a..620180e 100644
--- a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
-
-fn textureStore_345332() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_345332(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_345332();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_345332(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_345332();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_345332();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_345332(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/345332.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_345332(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.msl
index c6ebbd4..d947e8e 100644
--- a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
-
-fn textureStore_3d1ebe() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_3d1ebe(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_3d1ebe();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_3d1ebe(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_3d1ebe();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_3d1ebe();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_3d1ebe(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/3d1ebe.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_3d1ebe(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.msl
index c002af2..c6cff01 100644
--- a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
-
-fn textureStore_3d96a4() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_3d96a4(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_3d96a4();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_3d96a4(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_3d96a4();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_3d96a4();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_3d96a4(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/3d96a4.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_3d96a4(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.msl
index bed0923..f15d9e5 100644
--- a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
-
-fn textureStore_3e0dc4() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_3e0dc4(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_3e0dc4();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_3e0dc4(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_3e0dc4();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_3e0dc4();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_3e0dc4(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/3e0dc4.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_3e0dc4(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.msl
index 668cfdc..9057f1a 100644
--- a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
-
-fn textureStore_3f61ca() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_3f61ca(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_3f61ca();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_3f61ca(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_3f61ca();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_3f61ca();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_3f61ca(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/3f61ca.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_3f61ca(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.msl
index 589f906..fb9a30c 100644
--- a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
-
-fn textureStore_441222() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_441222(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_441222();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_441222(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_441222();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_441222();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_441222(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/441222.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_441222(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.msl
index c9d535d..542beb6 100644
--- a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
-
-fn textureStore_4483e7() {
-  textureStore(arg_0, 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_4483e7(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_4483e7();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_4483e7(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_4483e7();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_4483e7();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_4483e7(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/4483e7.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_4483e7(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.msl
index c3603eb..b30210b 100644
--- a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
-
-fn textureStore_44b372() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_44b372(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_44b372();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_44b372(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_44b372();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_44b372();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_44b372(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/44b372.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_44b372(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.msl
index 07f8c11..60c8822 100644
--- a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
-
-fn textureStore_473ead() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_473ead(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_473ead();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_473ead(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_473ead();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_473ead();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_473ead(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/473ead.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_473ead(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.msl
index 8494840..e3ed09d 100644
--- a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
-
-fn textureStore_47bd70() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_47bd70(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_47bd70();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_47bd70(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_47bd70();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_47bd70();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_47bd70(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/47bd70.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_47bd70(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.msl
index d08d043..47dee62 100644
--- a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
-
-fn textureStore_48cb56() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_48cb56(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_48cb56();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_48cb56(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_48cb56();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_48cb56();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_48cb56(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/48cb56.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_48cb56(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.msl
index a11a8c4..816bc26 100644
--- a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
-
-fn textureStore_4bf1fd() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_4bf1fd(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_4bf1fd();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_4bf1fd(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_4bf1fd();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_4bf1fd();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_4bf1fd(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/4bf1fd.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_4bf1fd(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.msl
index 7a52f73..710333c 100644
--- a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
-
-fn textureStore_4c76b7() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_4c76b7(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_4c76b7();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_4c76b7(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_4c76b7();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_4c76b7();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_4c76b7(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/4c76b7.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_4c76b7(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.msl
index 1e9ef82..9c00cc5 100644
--- a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
-
-fn textureStore_4cce74() {
-  textureStore(arg_0, 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_4cce74(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_4cce74();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_4cce74(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_4cce74();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_4cce74();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_4cce74(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/4cce74.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_4cce74(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.msl
index 185fd70..a424cfe 100644
--- a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
-
-fn textureStore_4ddf52() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_4ddf52(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_4ddf52();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_4ddf52(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_4ddf52();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_4ddf52();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_4ddf52(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/4ddf52.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_4ddf52(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.msl
index 93023cb..d8df4cb 100644
--- a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
-
-fn textureStore_4e2b3a() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_4e2b3a(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_4e2b3a();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_4e2b3a(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_4e2b3a();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_4e2b3a();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_4e2b3a(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/4e2b3a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_4e2b3a(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.msl
index d049b1a..ccedc11 100644
--- a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
-
-fn textureStore_5030f5() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_5030f5(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_5030f5();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_5030f5(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_5030f5();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_5030f5();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_5030f5(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/5030f5.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_5030f5(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.msl
index 7b4e4b2..3ab9c16 100644
--- a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
-
-fn textureStore_51ec82() {
-  textureStore(arg_0, 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_51ec82(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_51ec82();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_51ec82(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_51ec82();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_51ec82();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_51ec82(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/51ec82.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_51ec82(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.msl
index 9bdda1d..318acbd 100644
--- a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
-
-fn textureStore_5246b4() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_5246b4(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_5246b4();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_5246b4(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_5246b4();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_5246b4();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_5246b4(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/5246b4.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_5246b4(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.msl
index 9d09022..65e9fab 100644
--- a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
-
-fn textureStore_53a68b() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_53a68b(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_53a68b();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_53a68b(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_53a68b();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_53a68b();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_53a68b(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/53a68b.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_53a68b(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.msl
index 660db5f..dcb17eb 100644
--- a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
-
-fn textureStore_5425ab() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_5425ab(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_5425ab();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_5425ab(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_5425ab();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_5425ab();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_5425ab(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/5425ab.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_5425ab(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.msl
index bb3e090..200d399 100644
--- a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
-
-fn textureStore_544f06() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_544f06(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_544f06();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_544f06(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_544f06();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_544f06();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_544f06(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/544f06.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_544f06(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.msl
index f132f3d93..a680959 100644
--- a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
-
-fn textureStore_55f9dc() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_55f9dc(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_55f9dc();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_55f9dc(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_55f9dc();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_55f9dc();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_55f9dc(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/55f9dc.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_55f9dc(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.msl
index 02cee7a..6778700 100644
--- a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
-
-fn textureStore_574a31() {
-  textureStore(arg_0, 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_574a31(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_574a31();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_574a31(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_574a31();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_574a31();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_574a31(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/574a31.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_574a31(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.msl
index 1150f59..eeba0b6 100644
--- a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
-
-fn textureStore_579b93() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_579b93(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_579b93();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_579b93(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_579b93();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_579b93();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_579b93(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/579b93.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_579b93(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.msl
index 6d80f58..ad427a8 100644
--- a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
-
-fn textureStore_58fc35() {
-  textureStore(arg_0, 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_58fc35(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_58fc35();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_58fc35(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_58fc35();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_58fc35();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_58fc35(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/58fc35.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_58fc35(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.msl
index 2c02e76..ef54f2e 100644
--- a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
-
-fn textureStore_5a8b41() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_5a8b41(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_5a8b41();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_5a8b41(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_5a8b41();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_5a8b41();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_5a8b41(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/5a8b41.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_5a8b41(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.msl
index 72022b5..100b91c0 100644
--- a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
-
-fn textureStore_5b17eb() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_5b17eb(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_5b17eb();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_5b17eb(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_5b17eb();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_5b17eb();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_5b17eb(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/5b17eb.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_5b17eb(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.msl
index ee38cf9..be7e28a 100644
--- a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
-
-fn textureStore_5b4522() {
-  textureStore(arg_0, 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_5b4522(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_5b4522();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_5b4522(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_5b4522();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_5b4522();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_5b4522(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/5b4522.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_5b4522(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.msl
index 3e55827..9ba43de 100644
--- a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
-
-fn textureStore_5ec6b2() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_5ec6b2(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_5ec6b2();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_5ec6b2(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_5ec6b2();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_5ec6b2();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_5ec6b2(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/5ec6b2.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_5ec6b2(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.msl
index cecdf54..084fdc2 100644
--- a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
-
-fn textureStore_5ee194() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_5ee194(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_5ee194();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_5ee194(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_5ee194();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_5ee194();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_5ee194(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/5ee194.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_5ee194(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.msl
index 09ce63c..d0e18f3 100644
--- a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
-
-fn textureStore_614b58() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_614b58(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_614b58();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_614b58(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_614b58();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_614b58();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_614b58(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/614b58.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_614b58(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.msl
index 8cb9fd3..f6d819c 100644
--- a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
-
-fn textureStore_635584() {
-  textureStore(arg_0, 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_635584(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_635584();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_635584(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_635584();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_635584();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_635584(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/635584.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_635584(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.msl
index 27f57d7..a9710e7 100644
--- a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
-
-fn textureStore_63f34a() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_63f34a(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_63f34a();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_63f34a(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_63f34a();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_63f34a();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_63f34a(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/63f34a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_63f34a(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.msl
index ad99d86..d4deb23 100644
--- a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
-
-fn textureStore_646dbc() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_646dbc(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_646dbc();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_646dbc(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_646dbc();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_646dbc();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_646dbc(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/646dbc.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_646dbc(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.msl
index b13b879..9c3a4f5 100644
--- a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
-
-fn textureStore_65b6aa() {
-  textureStore(arg_0, 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_65b6aa(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_65b6aa();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_65b6aa(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_65b6aa();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_65b6aa();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_65b6aa(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/65b6aa.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_65b6aa(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.msl
index 1943714..e03d265 100644
--- a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
-
-fn textureStore_6be9e0() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_6be9e0(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_6be9e0();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_6be9e0(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_6be9e0();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_6be9e0();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_6be9e0(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/6be9e0.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_6be9e0(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.msl
index 46e72af..45c80cd 100644
--- a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
-
-fn textureStore_6c4a70() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_6c4a70(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_6c4a70();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_6c4a70(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_6c4a70();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_6c4a70();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_6c4a70(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/6c4a70.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_6c4a70(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.msl
index 330fac4..d08f70a 100644
--- a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
-
-fn textureStore_6d1809() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_6d1809(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_6d1809();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_6d1809(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_6d1809();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_6d1809();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_6d1809(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/6d1809.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_6d1809(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.msl
index 7ba7bca..8e759db 100644
--- a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
-
-fn textureStore_6d259f() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_6d259f(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_6d259f();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_6d259f(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_6d259f();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_6d259f();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_6d259f(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/6d259f.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_6d259f(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.msl
index db1548d..d97a96e 100644
--- a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
-
-fn textureStore_6e6cc0() {
-  textureStore(arg_0, 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_6e6cc0(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_6e6cc0();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_6e6cc0(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_6e6cc0();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_6e6cc0();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_6e6cc0(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/6e6cc0.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_6e6cc0(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.msl
index 3ccd41e..e6f59cc 100644
--- a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
-
-fn textureStore_6f3542() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_6f3542(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_6f3542();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_6f3542(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_6f3542();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_6f3542();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_6f3542(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/6f3542.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_6f3542(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.msl
index c9b4482..6576f92 100644
--- a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
-
-fn textureStore_6fb99b() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_6fb99b(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_6fb99b();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_6fb99b(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_6fb99b();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_6fb99b();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_6fb99b(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/6fb99b.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_6fb99b(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.msl
index 4cfb90e..67cf9d1 100644
--- a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
-
-fn textureStore_704e1f() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_704e1f(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_704e1f();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_704e1f(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_704e1f();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_704e1f();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_704e1f(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/704e1f.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_704e1f(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.msl
index 578e71e..c09eaa0 100644
--- a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
-
-fn textureStore_706236() {
-  textureStore(arg_0, 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_706236(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_706236();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_706236(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_706236();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_706236();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_706236(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/706236.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_706236(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.msl
index 6cd976f..c015598 100644
--- a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
-
-fn textureStore_706560() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_706560(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_706560();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_706560(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_706560();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_706560();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_706560(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/706560.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_706560(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.msl
index 6f0fe07..ff1c7de 100644
--- a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
-
-fn textureStore_726d6d() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_726d6d(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_726d6d();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_726d6d(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_726d6d();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_726d6d();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_726d6d(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/726d6d.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_726d6d(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.msl
index c80dee4..b093a44 100644
--- a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
-
-fn textureStore_73a735() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_73a735(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_73a735();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_73a735(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_73a735();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_73a735();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_73a735(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/73a735.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_73a735(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.msl
index ae95d17..f3cc461 100644
--- a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
-
-fn textureStore_751256() {
-  textureStore(arg_0, 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_751256(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_751256();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_751256(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_751256();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_751256();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_751256(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/751256.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_751256(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.msl
index 9a8f4ca..7aa316c 100644
--- a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
-
-fn textureStore_75bbd5() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_75bbd5(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_75bbd5();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_75bbd5(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_75bbd5();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_75bbd5();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_75bbd5(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/75bbd5.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_75bbd5(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.msl
index c8ea318..e6fd505 100644
--- a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
-
-fn textureStore_7792fa() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_7792fa(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_7792fa();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_7792fa(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_7792fa();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_7792fa();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_7792fa(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/7792fa.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_7792fa(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.msl
index 7968183..21ca4d5 100644
--- a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
-
-fn textureStore_7b8f86() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_7b8f86(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_7b8f86();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_7b8f86(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_7b8f86();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_7b8f86();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_7b8f86(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/7b8f86.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_7b8f86(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.msl
index ab393a5..7cfa2dd 100644
--- a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
-
-fn textureStore_7d10e0() {
-  textureStore(arg_0, 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_7d10e0(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_7d10e0();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_7d10e0(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_7d10e0();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_7d10e0();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_7d10e0(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/7d10e0.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_7d10e0(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.msl
index 0e41148..9dd7658 100644
--- a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
-
-fn textureStore_7dd042() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_7dd042(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_7dd042();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_7dd042(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_7dd042();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_7dd042();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_7dd042(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/7dd042.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_7dd042(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.msl
index 4913319..ff6bad4 100644
--- a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
-
-fn textureStore_7e787a() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_7e787a(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_7e787a();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_7e787a(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_7e787a();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_7e787a();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_7e787a(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/7e787a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_7e787a(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.msl
index c8685b8..6e66e27 100644
--- a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
-
-fn textureStore_80bf1d() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_80bf1d(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_80bf1d();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_80bf1d(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_80bf1d();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_80bf1d();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_80bf1d(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/80bf1d.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_80bf1d(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.msl
index 2783fb1..5abbc01 100644
--- a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
-
-fn textureStore_818df6() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_818df6(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_818df6();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_818df6(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_818df6();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_818df6();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_818df6(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/818df6.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_818df6(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.msl
index e4ed045..02a8837 100644
--- a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
-
-fn textureStore_81ae31() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_81ae31(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_81ae31();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_81ae31(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_81ae31();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_81ae31();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_81ae31(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/81ae31.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_81ae31(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.msl
index 264268d..8eb41d4 100644
--- a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
-
-fn textureStore_820272() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_820272(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_820272();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_820272(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_820272();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_820272();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_820272(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/820272.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_820272(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.msl
index 9c62291..6330698 100644
--- a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
-
-fn textureStore_84d435() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_84d435(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_84d435();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_84d435(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_84d435();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_84d435();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_84d435(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/84d435.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_84d435(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.msl
index 0694305..78409c0 100644
--- a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
-
-fn textureStore_84f4f4() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_84f4f4(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_84f4f4();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_84f4f4(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_84f4f4();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_84f4f4();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_84f4f4(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/84f4f4.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_84f4f4(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.msl
index c114c64..6207d96 100644
--- a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
-
-fn textureStore_8676c9() {
-  textureStore(arg_0, 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_8676c9(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8676c9();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_8676c9(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8676c9();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8676c9();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8676c9(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8676c9.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8676c9(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.msl
index 5890efe..e038414 100644
--- a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
-
-fn textureStore_86f713() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_86f713(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_86f713();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_86f713(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_86f713();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_86f713();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_86f713(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/86f713.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_86f713(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.msl
index 56b12ba..ab1a06b 100644
--- a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
-
-fn textureStore_877c92() {
-  textureStore(arg_0, 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_877c92(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_877c92();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_877c92(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_877c92();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_877c92();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_877c92(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/877c92.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_877c92(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.msl
index ebde451..32c27e0 100644
--- a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
-
-fn textureStore_8815b1() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_8815b1(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8815b1();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_8815b1(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8815b1();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8815b1();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8815b1(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8815b1.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8815b1(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.msl
index 6b1fda3..b50accd 100644
--- a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
-
-fn textureStore_885921() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_885921(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_885921();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_885921(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_885921();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_885921();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_885921(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/885921.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_885921(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.msl
index cfa2152..7d03d31 100644
--- a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
-
-fn textureStore_88ce7e() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_88ce7e(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_88ce7e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_88ce7e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_88ce7e();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_88ce7e();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_88ce7e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/88ce7e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_88ce7e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.msl
index 1074af5..cbde78e 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
-
-fn textureStore_8a16b0() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_8a16b0(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8a16b0();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_8a16b0(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8a16b0();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8a16b0();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8a16b0(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8a16b0.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8a16b0(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.msl
index 93a806b..71aaacd 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
-
-fn textureStore_8a46ff() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_8a46ff(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8a46ff();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_8a46ff(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8a46ff();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8a46ff();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8a46ff(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8a46ff.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8a46ff(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.msl
index d88bbb2..0230c94 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
-
-fn textureStore_8a85b9() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_8a85b9(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8a85b9();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_8a85b9(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8a85b9();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8a85b9();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8a85b9(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8a85b9.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8a85b9(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.msl
index 9ccc5b3..ba09eb6 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
-
-fn textureStore_8a8681() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_8a8681(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8a8681();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_8a8681(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8a8681();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8a8681();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8a8681(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8a8681.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8a8681(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.msl
index d2ba91b..a9de46e 100644
--- a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
-
-fn textureStore_8ae0bc() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_8ae0bc(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8ae0bc();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_8ae0bc(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8ae0bc();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8ae0bc();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8ae0bc(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8ae0bc.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8ae0bc(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.msl
index 61a9f9e..f35b487 100644
--- a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
-
-fn textureStore_8cd841() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_8cd841(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8cd841();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_8cd841(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8cd841();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8cd841();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8cd841(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8cd841.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8cd841(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.msl
index e10f138..b8c76ce 100644
--- a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
-
-fn textureStore_8ebdc9() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_8ebdc9(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_8ebdc9();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_8ebdc9(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_8ebdc9();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_8ebdc9();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_8ebdc9(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/8ebdc9.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_8ebdc9(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.msl
index b336d5d..c786491 100644
--- a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
-
-fn textureStore_90960e() {
-  textureStore(arg_0, 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_90960e(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_90960e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_90960e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_90960e();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_90960e();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_90960e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/90960e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_90960e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.msl
index 83b2a5c..2444602 100644
--- a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
-
-fn textureStore_90a553() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_90a553(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_90a553();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_90a553(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_90a553();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_90a553();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_90a553(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/90a553.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_90a553(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.msl
index 90759e7..8d31acb 100644
--- a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
-
-fn textureStore_976636() {
-  textureStore(arg_0, 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_976636(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_976636();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_976636(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_976636();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_976636();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_976636(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/976636.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_976636(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.msl
index 641d853..cdd096a 100644
--- a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
-
-fn textureStore_9ba5c1() {
-  textureStore(arg_0, 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_9ba5c1(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_9ba5c1();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_9ba5c1(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_9ba5c1();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_9ba5c1();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_9ba5c1(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/9ba5c1.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_9ba5c1(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.msl
index b361399..bce4090 100644
--- a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
-
-fn textureStore_9cea9e() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_9cea9e(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_9cea9e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_9cea9e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_9cea9e();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_9cea9e();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_9cea9e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/9cea9e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_9cea9e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.msl
index 71b7fca..1ba59cd 100644
--- a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
-
-fn textureStore_9d7c62() {
-  textureStore(arg_0, 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_9d7c62(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_9d7c62();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_9d7c62(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_9d7c62();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_9d7c62();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_9d7c62(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/9d7c62.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_9d7c62(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.msl
index 15dc866..19c3c21 100644
--- a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
-
-fn textureStore_a0022f() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_a0022f(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a0022f();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_a0022f(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a0022f();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a0022f();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a0022f(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a0022f.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a0022f(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.msl
index 4b8aad4..6848053 100644
--- a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
-
-fn textureStore_a14041() {
-  textureStore(arg_0, 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_a14041(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a14041();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_a14041(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a14041();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a14041();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a14041(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a14041.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a14041(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.msl
index 059408a..932d87c 100644
--- a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
-
-fn textureStore_a19a12() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_a19a12(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a19a12();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_a19a12(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a19a12();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a19a12();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a19a12(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a19a12.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a19a12(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.msl
index ab0d26c..6c93df5 100644
--- a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
-
-fn textureStore_a24491() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_a24491(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a24491();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_a24491(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a24491();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a24491();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a24491(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a24491.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a24491(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.msl
index 0c6b072..17379f5 100644
--- a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
-
-fn textureStore_a5b88e() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_a5b88e(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a5b88e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_a5b88e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a5b88e();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a5b88e();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a5b88e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a5b88e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a5b88e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.msl
index bc2330b..de71bb3 100644
--- a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
-
-fn textureStore_a5c925() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_a5c925(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a5c925();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_a5c925(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a5c925();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a5c925();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a5c925(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a5c925.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a5c925(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.msl
index 47dd42d..db2bde4 100644
--- a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
-
-fn textureStore_a66ca4() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_a66ca4(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a66ca4();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_a66ca4(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a66ca4();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a66ca4();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a66ca4(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a66ca4.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a66ca4(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.msl
index f50f317..8b4f743 100644
--- a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
-
-fn textureStore_a702b6() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_a702b6(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a702b6();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_a702b6(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a702b6();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a702b6();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a702b6(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a702b6.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a702b6(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.msl
index 826c106..65667e2 100644
--- a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
-
-fn textureStore_a9298c() {
-  textureStore(arg_0, 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_a9298c(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_a9298c();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_a9298c(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_a9298c();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_a9298c();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_a9298c(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/a9298c.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_a9298c(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.msl
index 611a80e..97ec0be 100644
--- a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
-
-fn textureStore_ab03b6() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_ab03b6(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_ab03b6();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_ab03b6(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_ab03b6();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_ab03b6();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_ab03b6(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/ab03b6.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_ab03b6(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.msl
index dbf118f..22c55e5 100644
--- a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
-
-fn textureStore_ab788e() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_ab788e(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_ab788e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_ab788e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_ab788e();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_ab788e();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_ab788e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/ab788e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_ab788e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.msl
index 622e64f..e607140 100644
--- a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
-
-fn textureStore_abdd21() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_abdd21(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_abdd21();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_abdd21(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_abdd21();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_abdd21();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_abdd21(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/abdd21.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_abdd21(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.msl
index 6cc5ad2..d7e1241 100644
--- a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
-
-fn textureStore_ac0a55() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_ac0a55(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_ac0a55();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_ac0a55(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_ac0a55();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_ac0a55();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_ac0a55(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/ac0a55.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_ac0a55(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.msl
index d09f306..a722741 100644
--- a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
-
-fn textureStore_aedea3() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_aedea3(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_aedea3();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_aedea3(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_aedea3();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_aedea3();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_aedea3(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/aedea3.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_aedea3(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.msl
index c7276b7..05d40f1 100644
--- a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
-
-fn textureStore_b16110() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_b16110(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b16110();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_b16110(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b16110();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b16110();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b16110(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b16110.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b16110(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.msl
index 15788f3..768bd98 100644
--- a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
-
-fn textureStore_b286b4() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_b286b4(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b286b4();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_b286b4(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b286b4();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b286b4();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b286b4(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b286b4.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b286b4(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.msl
index 0403170..5f10cf2 100644
--- a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
-
-fn textureStore_b36bc1() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_b36bc1(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b36bc1();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_b36bc1(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b36bc1();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b36bc1();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b36bc1(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b36bc1.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b36bc1(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.msl
index 800a7ca..bdc4143 100644
--- a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
-
-fn textureStore_b4389e() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_b4389e(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b4389e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_b4389e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b4389e();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b4389e();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b4389e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b4389e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b4389e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.msl
index a08c52c..2fc1473 100644
--- a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
-
-fn textureStore_b71c13() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_b71c13(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b71c13();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_b71c13(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b71c13();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b71c13();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b71c13(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b71c13.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b71c13(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.msl
index 855e9c9..2732a6e 100644
--- a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
-
-fn textureStore_b7232c() {
-  textureStore(arg_0, 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_b7232c(texture1d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b7232c();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<float, access::read_write> tint_symbol_2) {
+  textureStore_b7232c(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b7232c();
+vertex tint_symbol vertex_main(texture1d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b7232c();
+fragment void fragment_main(texture1d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b7232c(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b7232c.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b7232c(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.msl
index 4c44ced..4db2d5e 100644
--- a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
-
-fn textureStore_b89ffb() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_b89ffb(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b89ffb();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_b89ffb(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b89ffb();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b89ffb();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b89ffb(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b89ffb.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b89ffb(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.msl
index 50148f7..70839bb 100644
--- a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
-
-fn textureStore_b9c81a() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_b9c81a(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b9c81a();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_b9c81a(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b9c81a();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b9c81a();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b9c81a(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b9c81a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b9c81a(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.msl
index 90c3df6..7788242 100644
--- a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
-
-fn textureStore_b9d863() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_b9d863(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_b9d863();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_b9d863(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_b9d863();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_b9d863();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_b9d863(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/b9d863.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_b9d863(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.msl
index f6f7c51..ca86fa9 100644
--- a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
-
-fn textureStore_bc1423() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_bc1423(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_bc1423();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_bc1423(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_bc1423();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_bc1423();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_bc1423(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/bc1423.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_bc1423(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.msl
index 6a266b3..185a01f 100644
--- a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
-
-fn textureStore_bcc97a() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_bcc97a(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_bcc97a();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_bcc97a(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_bcc97a();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_bcc97a();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_bcc97a(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/bcc97a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_bcc97a(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.msl
index 02cf9d7..bace3bd 100644
--- a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
-
-fn textureStore_bd6602() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_bd6602(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_bd6602();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_bd6602(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_bd6602();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_bd6602();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_bd6602(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/bd6602.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_bd6602(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.msl
index f075597..805be83 100644
--- a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
-
-fn textureStore_c06463() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_c06463(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_c06463();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_c06463(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_c06463();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_c06463();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_c06463(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/c06463.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_c06463(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.msl
index 82fd1bb..e0a55b0 100644
--- a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
-
-fn textureStore_c1c664() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_c1c664(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_c1c664();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_c1c664(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_c1c664();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_c1c664();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_c1c664(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/c1c664.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_c1c664(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.msl
index 8caceb2..cde7524 100644
--- a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
-
-fn textureStore_c1f760() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_c1f760(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_c1f760();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_c1f760(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_c1f760();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_c1f760();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_c1f760(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/c1f760.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_c1f760(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.msl
index f576e7d..caefbcd 100644
--- a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
-
-fn textureStore_c33478() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_c33478(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_c33478();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_c33478(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_c33478();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_c33478();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_c33478(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/c33478.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_c33478(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.msl
index 81c849a..cba62ec 100644
--- a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
-
-fn textureStore_c35268() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_c35268(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_c35268();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_c35268(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_c35268();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_c35268();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_c35268(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/c35268.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_c35268(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.msl
index 02f37ac..192150a 100644
--- a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
-
-fn textureStore_c63f05() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_c63f05(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_c63f05();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_c63f05(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_c63f05();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_c63f05();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_c63f05(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/c63f05.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_c63f05(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.msl
index e12d2b4..dd48ecc 100644
--- a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
-
-fn textureStore_c79451() {
-  textureStore(arg_0, 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_c79451(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1u)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_c79451();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_c79451(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_c79451();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_c79451();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_c79451(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/c79451.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_c79451(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.msl
index f3995f4..7f6f1e3 100644
--- a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
-
-fn textureStore_ccac20() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_ccac20(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_ccac20();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_ccac20(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_ccac20();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_ccac20();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_ccac20(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/ccac20.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_ccac20(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.msl
index 1a56963..43a29fc 100644
--- a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
-
-fn textureStore_ceb832() {
-  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_ceb832(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_ceb832();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_ceb832(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_ceb832();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_ceb832();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_ceb832(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/ceb832.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_ceb832(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.msl
index ef61074..685368e 100644
--- a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
-
-fn textureStore_d0d62c() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+using namespace metal;
+void textureStore_d0d62c(texture2d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_d0d62c();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<uint, access::read_write> tint_symbol_2) {
+  textureStore_d0d62c(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_d0d62c();
+vertex tint_symbol vertex_main(texture2d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_d0d62c();
+fragment void fragment_main(texture2d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_d0d62c(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/d0d62c.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_d0d62c(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.msl
index 2beb563..beb45cb 100644
--- a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
-
-fn textureStore_d0fadc() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_d0fadc(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_d0fadc();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_d0fadc(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_d0fadc();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_d0fadc();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_d0fadc(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/d0fadc.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_d0fadc(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.msl
index 758ea41..6009e7f 100644
--- a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
-
-fn textureStore_d19db4() {
-  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+using namespace metal;
+void textureStore_d19db4(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(int3(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_d19db4();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_d19db4(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_d19db4();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_d19db4();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_d19db4(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/d19db4.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_d19db4(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.msl
index 1bf37c7..8730349 100644
--- a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
-
-fn textureStore_d1ab82() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_d1ab82(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_d1ab82();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_d1ab82(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_d1ab82();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_d1ab82();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_d1ab82(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/d1ab82.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_d1ab82(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.msl
index d470856..42ff96e 100644
--- a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
-
-fn textureStore_d3a22b() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+using namespace metal;
+void textureStore_d3a22b(texture3d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_d3a22b();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<uint, access::read_write> tint_symbol_2) {
+  textureStore_d3a22b(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_d3a22b();
+vertex tint_symbol vertex_main(texture3d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_d3a22b();
+fragment void fragment_main(texture3d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_d3a22b(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/d3a22b.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_d3a22b(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.msl
index b92297f..5a1e92e 100644
--- a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
-
-fn textureStore_d86d33() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_d86d33(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_d86d33();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_d86d33(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_d86d33();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_d86d33();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_d86d33(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/d86d33.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_d86d33(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.msl
index d3bc8c9..0791007 100644
--- a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
-
-fn textureStore_da530c() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_da530c(texture2d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_da530c();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<int, access::read_write> tint_symbol_2) {
+  textureStore_da530c(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_da530c();
+vertex tint_symbol vertex_main(texture2d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_da530c();
+fragment void fragment_main(texture2d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_da530c(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/da530c.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_da530c(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.msl
index 3cd6800..af6c388 100644
--- a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
-
-fn textureStore_db5128() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+using namespace metal;
+void textureStore_db5128(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_db5128();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_db5128(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_db5128();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_db5128();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_db5128(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/db5128.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_db5128(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.msl
index ab80132..638148a 100644
--- a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
-
-fn textureStore_dce0e2() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_dce0e2(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_dce0e2();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_dce0e2(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_dce0e2();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_dce0e2();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_dce0e2(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/dce0e2.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_dce0e2(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.msl
index b1a0d4f..163533c 100644
--- a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
-
-fn textureStore_dd8b29() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_dd8b29(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_dd8b29();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_dd8b29(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_dd8b29();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_dd8b29();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_dd8b29(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/dd8b29.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_dd8b29(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.msl
index c89be40..218e331 100644
--- a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
-
-fn textureStore_de38e5() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_de38e5(texture3d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_de38e5();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<float, access::read_write> tint_symbol_2) {
+  textureStore_de38e5(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_de38e5();
+vertex tint_symbol vertex_main(texture3d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_de38e5();
+fragment void fragment_main(texture3d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_de38e5(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/de38e5.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_de38e5(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.msl
index f3c4a53..32f9bb9 100644
--- a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
-
-fn textureStore_df0c51() {
-  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+using namespace metal;
+void textureStore_df0c51(texture3d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint3(uint3(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_df0c51();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture3d<int, access::read_write> tint_symbol_2) {
+  textureStore_df0c51(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_df0c51();
+vertex tint_symbol vertex_main(texture3d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_df0c51();
+fragment void fragment_main(texture3d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_df0c51(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/df0c51.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture3d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_df0c51(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.msl
index fa9ad2e..54d45a1 100644
--- a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
-
-fn textureStore_e077e7() {
-  textureStore(arg_0, 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_e077e7(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_e077e7();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_e077e7(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_e077e7();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_e077e7();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_e077e7(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/e077e7.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_e077e7(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.msl
index 265fc9b..e47fdb3 100644
--- a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
-
-fn textureStore_e1784d() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_e1784d(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_e1784d();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_e1784d(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_e1784d();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_e1784d();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_e1784d(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/e1784d.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_e1784d(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.msl
index 72e41a0..c64fe50 100644
--- a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
-
-fn textureStore_e46fd8() {
-  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_e46fd8(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_e46fd8();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_e46fd8(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_e46fd8();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_e46fd8();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_e46fd8(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/e46fd8.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_e46fd8(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.msl
index 3a6585a..4fcb55b 100644
--- a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
-
-fn textureStore_e72bdc() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_e72bdc(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_e72bdc();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_e72bdc(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_e72bdc();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_e72bdc();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_e72bdc(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/e72bdc.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_e72bdc(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.msl
index b39c4de..45c65f5 100644
--- a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
-
-fn textureStore_e87f6e() {
-  textureStore(arg_0, 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_e87f6e(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_e87f6e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_e87f6e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_e87f6e();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_e87f6e();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_e87f6e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/e87f6e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_e87f6e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.msl
index 38d0470..79c0240 100644
--- a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
-
-fn textureStore_ea30d2() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_ea30d2(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_ea30d2();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_ea30d2(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_ea30d2();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_ea30d2();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_ea30d2(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/ea30d2.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_ea30d2(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.msl
index bff21be..58625a8 100644
--- a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
-
-fn textureStore_f05928() {
-  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+using namespace metal;
+void textureStore_f05928(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1u); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_f05928();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_f05928(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_f05928();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_f05928();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_f05928(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/f05928.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_f05928(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.msl
index c0c64eb..aad284f 100644
--- a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
-
-fn textureStore_f64d69() {
-  textureStore(arg_0, 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_f64d69(texture1d<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_f64d69();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<int, access::read_write> tint_symbol_2) {
+  textureStore_f64d69(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_f64d69();
+vertex tint_symbol vertex_main(texture1d<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_f64d69();
+fragment void fragment_main(texture1d<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_f64d69(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/f64d69.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_f64d69(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.msl
index aeef1e5..61b503f 100644
--- a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
-
-fn textureStore_f6f392() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_f6f392(texture2d_array<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_f6f392();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<float, access::read_write> tint_symbol_2) {
+  textureStore_f6f392(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_f6f392();
+vertex tint_symbol vertex_main(texture2d_array<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_f6f392();
+fragment void fragment_main(texture2d_array<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_f6f392(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/f6f392.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_f6f392(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.msl
index 8553215..e23dd5a 100644
--- a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
-
-fn textureStore_f8aaf9() {
-  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+using namespace metal;
+void textureStore_f8aaf9(texture2d_array<int, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(int4(1), uint2(int2(1)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_f8aaf9();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<int, access::read_write> tint_symbol_2) {
+  textureStore_f8aaf9(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_f8aaf9();
+vertex tint_symbol vertex_main(texture2d_array<int, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_f8aaf9();
+fragment void fragment_main(texture2d_array<int, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_f8aaf9(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/f8aaf9.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<int, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_f8aaf9(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.msl
index a9519dd..ef9fdd9 100644
--- a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
-
-fn textureStore_f975a0() {
-  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.0f));
+using namespace metal;
+void textureStore_f975a0(texture2d<float, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(float4(1.0f), uint2(int2(1))); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_f975a0();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d<float, access::read_write> tint_symbol_2) {
+  textureStore_f975a0(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_f975a0();
+vertex tint_symbol vertex_main(texture2d<float, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_f975a0();
+fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_f975a0(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/f975a0.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d<float, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_f975a0(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.msl
index a36fcd5..bff098b 100644
--- a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
-
-fn textureStore_fc916e() {
-  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_fc916e(texture2d_array<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint2(uint2(1u)), 1); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_fc916e();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture2d_array<uint, access::read_write> tint_symbol_2) {
+  textureStore_fc916e(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_fc916e();
+vertex tint_symbol vertex_main(texture2d_array<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_fc916e();
+fragment void fragment_main(texture2d_array<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_fc916e(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/fc916e.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture2d_array<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_fc916e(tint_symbol_5);
+  return;
+}
 
diff --git a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.msl
index 4925f1d..9dbed19 100644
--- a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.msl
@@ -1,31 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
-
-fn textureStore_ff23b3() {
-  textureStore(arg_0, 1i, vec4<u32>(1u));
+using namespace metal;
+void textureStore_ff23b3(texture1d<uint, access::read_write> tint_symbol_1) {
+  tint_symbol_1.write(uint4(1u), uint(1)); tint_symbol_1.fence();
 }
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureStore_ff23b3();
-  return vec4<f32>();
+struct tint_symbol {
+  float4 value [[position]];
+};
+
+float4 vertex_main_inner(texture1d<uint, access::read_write> tint_symbol_2) {
+  textureStore_ff23b3(tint_symbol_2);
+  return float4(0.0f);
 }
 
-@fragment
-fn fragment_main() {
-  textureStore_ff23b3();
+vertex tint_symbol vertex_main(texture1d<uint, access::read_write> tint_symbol_3 [[texture(0)]]) {
+  float4 const inner_result = vertex_main_inner(tint_symbol_3);
+  tint_symbol wrapper_result = {};
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureStore_ff23b3();
+fragment void fragment_main(texture1d<uint, access::read_write> tint_symbol_4 [[texture(0)]]) {
+  textureStore_ff23b3(tint_symbol_4);
+  return;
 }
 
-Failed to generate: builtins/gen/literal/textureStore/ff23b3.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+kernel void compute_main(texture1d<uint, access::read_write> tint_symbol_5 [[texture(0)]]) {
+  textureStore_ff23b3(tint_symbol_5);
+  return;
+}