[tint] Add RW storage textureStore overloads

Adds them to the intrinsics table but no codegen support yet.

Bug: tint:2007
Change-Id: Ie909b9bf1557f69a4adde6ab2a9ff8646b9ce53f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/146240
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl
new file mode 100644
index 0000000..1edcc88
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32float, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_031506() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..edfea97
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/031506.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..edfea97
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/031506.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.glsl
new file mode 100644
index 0000000..15887ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_031506() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_031506();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_031506() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_031506();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_031506() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_031506();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.msl
new file mode 100644
index 0000000..4843189
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.spvasm
new file mode 100644
index 0000000..3d15993
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/031506.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.wgsl
new file mode 100644
index 0000000..053dd60
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/031506.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl
new file mode 100644
index 0000000..8e16e0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8unorm, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_036d0e() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..dab6153
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/036d0e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..dab6153
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/036d0e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.glsl
new file mode 100644
index 0000000..b1d3b0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_036d0e() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_036d0e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_036d0e() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_036d0e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_036d0e() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_036d0e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..4117d6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.spvasm
new file mode 100644
index 0000000..612c613
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/036d0e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.wgsl
new file mode 100644
index 0000000..50f98b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/036d0e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl
new file mode 100644
index 0000000..d5a8bb6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_03e7a0() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..169b2b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/03e7a0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..169b2b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/03e7a0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.glsl
new file mode 100644
index 0000000..f6f6025
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_03e7a0() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_03e7a0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_03e7a0() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_03e7a0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_03e7a0() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_03e7a0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..a5b4500
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.spvasm
new file mode 100644
index 0000000..c323ccb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/03e7a0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.wgsl
new file mode 100644
index 0000000..a02743e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/03e7a0.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl
new file mode 100644
index 0000000..985d5ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8snorm, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_042b06() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9c9ff05
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/042b06.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9c9ff05
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/042b06.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.glsl
new file mode 100644
index 0000000..cd30705
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_042b06() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_042b06();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_042b06() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_042b06();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_042b06() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_042b06();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..3742f745
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.spvasm
new file mode 100644
index 0000000..3cea2f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/042b06.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.wgsl
new file mode 100644
index 0000000..2576a06
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/042b06.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl
new file mode 100644
index 0000000..469a363
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8unorm, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_052a4e() {
+  textureStore(arg_0, 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5b32146
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/052a4e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5b32146
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/052a4e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.glsl
new file mode 100644
index 0000000..b8294d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_052a4e() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_052a4e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_052a4e() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_052a4e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_052a4e() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_052a4e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..08bb0b0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.spvasm
new file mode 100644
index 0000000..2a0a286
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/052a4e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.wgsl
new file mode 100644
index 0000000..ec361f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/052a4e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/053664.wgsl b/test/tint/builtins/gen/literal/textureStore/053664.wgsl
new file mode 100644
index 0000000..8df379a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32float, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_053664() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9ca05b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/053664.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9ca05b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/053664.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.glsl
new file mode 100644
index 0000000..6e8d37d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_053664() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_053664();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_053664() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_053664();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_053664() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_053664();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..58d9e7c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.spvasm
new file mode 100644
index 0000000..521c4a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/053664.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.wgsl
new file mode 100644
index 0000000..d5c7868
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/053664.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl
new file mode 100644
index 0000000..ab4bcca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<bgra8unorm, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_09e4d5() {
+  textureStore(arg_0, 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..91c4cee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/09e4d5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..91c4cee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/09e4d5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.glsl
new file mode 100644
index 0000000..96dd374
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_09e4d5() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_09e4d5();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_09e4d5() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_09e4d5();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_09e4d5() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_09e4d5();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..11ed5e2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.spvasm
new file mode 100644
index 0000000..8ebda7b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/09e4d5.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.wgsl
new file mode 100644
index 0000000..29485b0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/09e4d5.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl
new file mode 100644
index 0000000..29a500b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_0ade9a() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8251e68
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/0ade9a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8251e68
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/0ade9a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.glsl
new file mode 100644
index 0000000..004546c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_0ade9a() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_0ade9a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_0ade9a() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_0ade9a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_0ade9a() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_0ade9a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.msl
new file mode 100644
index 0000000..3c7ff5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.spvasm
new file mode 100644
index 0000000..f605b7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/0ade9a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.wgsl
new file mode 100644
index 0000000..9c9a026
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl
new file mode 100644
index 0000000..6aa06f6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32float, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_0ff97a() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..31dea2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/0ff97a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..31dea2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/0ff97a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.glsl
new file mode 100644
index 0000000..e34cc0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_0ff97a() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_0ff97a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_0ff97a() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_0ff97a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_0ff97a() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_0ff97a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..59e13dc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.spvasm
new file mode 100644
index 0000000..8c90fdd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/0ff97a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.wgsl
new file mode 100644
index 0000000..82e57ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/101325.wgsl b/test/tint/builtins/gen/literal/textureStore/101325.wgsl
new file mode 100644
index 0000000..4c5c0cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_101325() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..86c9b2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/101325.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..86c9b2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/101325.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.glsl
new file mode 100644
index 0000000..4d1c93c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_101325() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_101325();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_101325() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_101325();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_101325() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_101325();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..2d5c64a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.spvasm
new file mode 100644
index 0000000..4cc18ee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/101325.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.wgsl
new file mode 100644
index 0000000..7d92267
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/101325.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/145061.wgsl b/test/tint/builtins/gen/literal/textureStore/145061.wgsl
new file mode 100644
index 0000000..7f3dbb2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_145061() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7968ebe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/145061.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7968ebe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/145061.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.glsl
new file mode 100644
index 0000000..ef2c962
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_145061() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_145061();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_145061() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_145061();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_145061() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_145061();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..b8a372c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.spvasm
new file mode 100644
index 0000000..12e88c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/145061.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.wgsl
new file mode 100644
index 0000000..36c1ef1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/145061.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl
new file mode 100644
index 0000000..b0e2299
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<bgra8unorm, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_178e69() {
+  textureStore(arg_0, 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3bd878a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/178e69.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3bd878a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/178e69.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.glsl
new file mode 100644
index 0000000..c9e0215
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_178e69() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_178e69();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_178e69() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_178e69();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_178e69() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_178e69();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..f1c8b2c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.spvasm
new file mode 100644
index 0000000..8cf77cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/178e69.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.wgsl
new file mode 100644
index 0000000..3fd1f26
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/178e69.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl
new file mode 100644
index 0000000..a0516b2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32float, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_195d1b() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c56911c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/195d1b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c56911c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/195d1b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.glsl
new file mode 100644
index 0000000..48ac40b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_195d1b() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_195d1b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_195d1b() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_195d1b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_195d1b() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_195d1b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..56e7d01
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.spvasm
new file mode 100644
index 0000000..15815b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/195d1b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.wgsl
new file mode 100644
index 0000000..9591806
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/195d1b.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/197637.wgsl b/test/tint/builtins/gen/literal/textureStore/197637.wgsl
new file mode 100644
index 0000000..a945156
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32float, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_197637() {
+  textureStore(arg_0, 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..827c723
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/197637.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..827c723
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/197637.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.glsl
new file mode 100644
index 0000000..1285776
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_197637() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_197637();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_197637() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_197637();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_197637() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_197637();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..530105e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.spvasm
new file mode 100644
index 0000000..c0afbe8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/197637.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.wgsl
new file mode 100644
index 0000000..93c97c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/197637.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl
new file mode 100644
index 0000000..ae0866c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_1a6c0b() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e7aef80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1a6c0b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e7aef80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1a6c0b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.glsl
new file mode 100644
index 0000000..f76a755
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1a6c0b() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_1a6c0b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1a6c0b() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_1a6c0b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1a6c0b() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_1a6c0b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.msl
new file mode 100644
index 0000000..950e073
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.spvasm
new file mode 100644
index 0000000..c971a24
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1a6c0b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.wgsl
new file mode 100644
index 0000000..bbf7d81
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl
new file mode 100644
index 0000000..623cd37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16float, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_1af236() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8f34bb0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1af236.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8f34bb0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1af236.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.glsl
new file mode 100644
index 0000000..e020541
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_1af236() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_1af236();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_1af236() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_1af236();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_1af236() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_1af236();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..fbdf68d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.spvasm
new file mode 100644
index 0000000..c743884
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1af236.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.wgsl
new file mode 100644
index 0000000..36cfcc4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1af236.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl
new file mode 100644
index 0000000..1a1bdfc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_1e9fbd() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b8d1af1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1e9fbd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b8d1af1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1e9fbd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.glsl
new file mode 100644
index 0000000..3b6f6ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1e9fbd() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_1e9fbd();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1e9fbd() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_1e9fbd();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1e9fbd() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_1e9fbd();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..eb09d65
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.spvasm
new file mode 100644
index 0000000..8d99563
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1e9fbd.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.wgsl
new file mode 100644
index 0000000..3941498
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl
new file mode 100644
index 0000000..60d5edd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_1fef04() {
+  textureStore(arg_0, 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ea78036
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1fef04.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ea78036
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1fef04.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.glsl
new file mode 100644
index 0000000..78bdc4f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_1fef04() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_1fef04();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_1fef04() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_1fef04();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_1fef04() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_1fef04();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..149bfb9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.spvasm
new file mode 100644
index 0000000..c02970e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/1fef04.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.wgsl
new file mode 100644
index 0000000..dc8d0ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl
new file mode 100644
index 0000000..7dcbd72
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16float, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_2046db() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..30bed81
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2046db.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..30bed81
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2046db.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.glsl
new file mode 100644
index 0000000..0c9ee62
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_2046db() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_2046db();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_2046db() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_2046db();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_2046db() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_2046db();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..b3f308b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.spvasm
new file mode 100644
index 0000000..3eba90d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2046db.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.wgsl
new file mode 100644
index 0000000..2fc0545
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2046db.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl
new file mode 100644
index 0000000..b59c412
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_2173fd() {
+  textureStore(arg_0, 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d8a239b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2173fd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d8a239b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2173fd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.glsl
new file mode 100644
index 0000000..a619fb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_2173fd() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_2173fd();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_2173fd() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_2173fd();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_2173fd() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_2173fd();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..93a70fc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.spvasm
new file mode 100644
index 0000000..0172cfe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2173fd.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.wgsl
new file mode 100644
index 0000000..1f64c21
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2173fd.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl
new file mode 100644
index 0000000..fdffd24
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_24e6b7() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1c9286f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/24e6b7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1c9286f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/24e6b7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.glsl
new file mode 100644
index 0000000..8df6de4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_24e6b7() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_24e6b7();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_24e6b7() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_24e6b7();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_24e6b7() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_24e6b7();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..dbebad0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.spvasm
new file mode 100644
index 0000000..d308f6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/24e6b7.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.wgsl
new file mode 100644
index 0000000..fc48848
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/24e6b7.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl
new file mode 100644
index 0000000..ddbd5e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8snorm, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_26a26d() {
+  textureStore(arg_0, 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c329e84
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/26a26d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c329e84
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/26a26d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.glsl
new file mode 100644
index 0000000..5a59a10
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_26a26d() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_26a26d();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_26a26d() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_26a26d();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_26a26d() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_26a26d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..33dc3bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.spvasm
new file mode 100644
index 0000000..dffbaa2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/26a26d.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.wgsl
new file mode 100644
index 0000000..e7fb61b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/26a26d.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl
new file mode 100644
index 0000000..08f20b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_28e109() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eac58d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/28e109.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eac58d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/28e109.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.glsl
new file mode 100644
index 0000000..9f6fbb9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_28e109() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_28e109();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_28e109() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_28e109();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_28e109() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_28e109();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..3aa211b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.spvasm
new file mode 100644
index 0000000..e0d3ef8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/28e109.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.wgsl
new file mode 100644
index 0000000..0331143
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/28e109.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl
new file mode 100644
index 0000000..aa63e45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_2a60c9() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..861a6c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2a60c9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..861a6c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2a60c9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.glsl
new file mode 100644
index 0000000..3db88d1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_2a60c9() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_2a60c9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_2a60c9() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_2a60c9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_2a60c9() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_2a60c9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..e596c85
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.spvasm
new file mode 100644
index 0000000..c1e59c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2a60c9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.wgsl
new file mode 100644
index 0000000..9786d1a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2a60c9.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl
new file mode 100644
index 0000000..62a25f7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_2addd6() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..48b4369
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2addd6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..48b4369
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2addd6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.glsl
new file mode 100644
index 0000000..9b43f70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_2addd6() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_2addd6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_2addd6() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_2addd6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_2addd6() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_2addd6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..5e24b58
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.spvasm
new file mode 100644
index 0000000..ddc1662
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2addd6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.wgsl
new file mode 100644
index 0000000..5974ebb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2addd6.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl
new file mode 100644
index 0000000..49f0ca0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8snorm, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_2c76db() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..729bcc0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2c76db.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..729bcc0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2c76db.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.glsl
new file mode 100644
index 0000000..fb239fc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_2c76db() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_2c76db();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_2c76db() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_2c76db();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_2c76db() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_2c76db();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..5d861d9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.spvasm
new file mode 100644
index 0000000..a237fd5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2c76db.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.wgsl
new file mode 100644
index 0000000..3c45be0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2c76db.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl
new file mode 100644
index 0000000..6597f9c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_2f29ea() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4dfc417
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2f29ea.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4dfc417
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2f29ea.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.glsl
new file mode 100644
index 0000000..0d15893
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_2f29ea() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_2f29ea();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_2f29ea() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_2f29ea();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_2f29ea() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_2f29ea();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..6c90156
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.spvasm
new file mode 100644
index 0000000..81211d9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/2f29ea.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.wgsl
new file mode 100644
index 0000000..e6fcaac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/2f29ea.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl
new file mode 100644
index 0000000..11ba03a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32float, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_312f27() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eb0423f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/312f27.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eb0423f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/312f27.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.glsl
new file mode 100644
index 0000000..6ab2e66
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_312f27() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_312f27();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_312f27() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_312f27();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_312f27() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_312f27();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..cacef1b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.spvasm
new file mode 100644
index 0000000..5f80482
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/312f27.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.wgsl
new file mode 100644
index 0000000..4c3ab76
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/312f27.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl
new file mode 100644
index 0000000..1747b91
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_32d3d6() {
+  textureStore(arg_0, 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a89b4bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/32d3d6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a89b4bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/32d3d6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.glsl
new file mode 100644
index 0000000..3a04cc1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_32d3d6() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_32d3d6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_32d3d6() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_32d3d6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_32d3d6() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_32d3d6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..99977f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.spvasm
new file mode 100644
index 0000000..09ed993
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/32d3d6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.wgsl
new file mode 100644
index 0000000..6349900
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl
new file mode 100644
index 0000000..0d4b9e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8snorm, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_3310d3() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b6f85f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3310d3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b6f85f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3310d3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.glsl
new file mode 100644
index 0000000..4a39a24
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_3310d3() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_3310d3();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_3310d3() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_3310d3();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_3310d3() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_3310d3();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..f07d974
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.spvasm
new file mode 100644
index 0000000..610a3bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3310d3.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.wgsl
new file mode 100644
index 0000000..d01ca31
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3310d3.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/345332.wgsl b/test/tint/builtins/gen/literal/textureStore/345332.wgsl
new file mode 100644
index 0000000..b71158b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_345332() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4260b8b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/345332.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4260b8b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/345332.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.glsl
new file mode 100644
index 0000000..6c2e1f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_345332() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_345332();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_345332() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_345332();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_345332() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_345332();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..0b2c02a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.spvasm
new file mode 100644
index 0000000..8a365bf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/345332.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.wgsl
new file mode 100644
index 0000000..a0247c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/345332.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl
new file mode 100644
index 0000000..402f8b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32float, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_3d1ebe() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6a0253d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3d1ebe.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6a0253d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3d1ebe.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.glsl
new file mode 100644
index 0000000..c5ec2c6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_3d1ebe() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_3d1ebe();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_3d1ebe() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_3d1ebe();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_3d1ebe() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_3d1ebe();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c6ebbd4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.spvasm
new file mode 100644
index 0000000..e7e0346
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3d1ebe.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.wgsl
new file mode 100644
index 0000000..d303a1f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl
new file mode 100644
index 0000000..f348d5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_3d96a4() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c9dcd1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3d96a4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c9dcd1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3d96a4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.glsl
new file mode 100644
index 0000000..a422485
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_3d96a4() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_3d96a4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_3d96a4() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_3d96a4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_3d96a4() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_3d96a4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c002af2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.spvasm
new file mode 100644
index 0000000..5295c29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3d96a4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.wgsl
new file mode 100644
index 0000000..131b86c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3d96a4.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl
new file mode 100644
index 0000000..31173ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32float, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_3e0dc4() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2f02bd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3e0dc4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2f02bd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3e0dc4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.glsl
new file mode 100644
index 0000000..74c1987
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_3e0dc4() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_3e0dc4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_3e0dc4() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_3e0dc4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_3e0dc4() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_3e0dc4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.msl
new file mode 100644
index 0000000..bed0923
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.spvasm
new file mode 100644
index 0000000..a2f058a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3e0dc4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.wgsl
new file mode 100644
index 0000000..110a487
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3e0dc4.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl
new file mode 100644
index 0000000..51089fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8snorm, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_3f61ca() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8901610
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3f61ca.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8901610
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3f61ca.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.glsl
new file mode 100644
index 0000000..b7c0348
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_3f61ca() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_3f61ca();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_3f61ca() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_3f61ca();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_3f61ca() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_3f61ca();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..668cfdc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.spvasm
new file mode 100644
index 0000000..b179ef1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/3f61ca.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.wgsl
new file mode 100644
index 0000000..75ece5a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/3f61ca.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/441222.wgsl b/test/tint/builtins/gen/literal/textureStore/441222.wgsl
new file mode 100644
index 0000000..3569cb9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_441222() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..930fc7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/441222.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..930fc7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/441222.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.glsl
new file mode 100644
index 0000000..60789a8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_441222() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_441222();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_441222() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_441222();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_441222() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_441222();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..589f906
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.spvasm
new file mode 100644
index 0000000..e070176
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/441222.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.wgsl
new file mode 100644
index 0000000..a53af20
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/441222.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl
new file mode 100644
index 0000000..e27df73
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_4483e7() {
+  textureStore(arg_0, 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a40b20b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4483e7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a40b20b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4483e7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.glsl
new file mode 100644
index 0000000..65156f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4483e7() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_4483e7();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4483e7() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_4483e7();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4483e7() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_4483e7();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c9d535d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.spvasm
new file mode 100644
index 0000000..94fe445
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4483e7.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.wgsl
new file mode 100644
index 0000000..8a8ed62
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4483e7.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl
new file mode 100644
index 0000000..04a078e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_44b372() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0f764f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/44b372.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0f764f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/44b372.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.glsl
new file mode 100644
index 0000000..7fea5c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_44b372() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_44b372();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_44b372() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_44b372();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_44b372() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_44b372();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c3603eb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.spvasm
new file mode 100644
index 0000000..3bb831c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/44b372.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.wgsl
new file mode 100644
index 0000000..081c51b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/44b372.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl
new file mode 100644
index 0000000..caf2bc0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_473ead() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..aa4c6ae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/473ead.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..aa4c6ae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/473ead.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.glsl
new file mode 100644
index 0000000..5e34b3a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_473ead() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_473ead();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_473ead() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_473ead();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_473ead() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_473ead();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.msl
new file mode 100644
index 0000000..07f8c11
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.spvasm
new file mode 100644
index 0000000..938bb15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/473ead.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.wgsl
new file mode 100644
index 0000000..95f8af6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl
new file mode 100644
index 0000000..7029094
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8unorm, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_47bd70() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4e3e48f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/47bd70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4e3e48f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/47bd70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.glsl
new file mode 100644
index 0000000..0f4964e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_47bd70() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_47bd70();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_47bd70() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_47bd70();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_47bd70() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_47bd70();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..8494840
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.spvasm
new file mode 100644
index 0000000..ae0c649
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/47bd70.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.wgsl
new file mode 100644
index 0000000..5d745bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/47bd70.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl
new file mode 100644
index 0000000..cd19812
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_48cb56() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..606d2c8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/48cb56.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..606d2c8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/48cb56.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.glsl
new file mode 100644
index 0000000..dec9552
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_48cb56() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_48cb56();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_48cb56() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_48cb56();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_48cb56() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_48cb56();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..d08d043
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.spvasm
new file mode 100644
index 0000000..f3172f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/48cb56.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.wgsl
new file mode 100644
index 0000000..abfc5dc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/48cb56.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl
new file mode 100644
index 0000000..9cedfb9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_4bf1fd() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..66f192a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4bf1fd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..66f192a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4bf1fd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.glsl
new file mode 100644
index 0000000..741702e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4bf1fd() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_4bf1fd();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4bf1fd() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_4bf1fd();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4bf1fd() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_4bf1fd();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..a11a8c4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.spvasm
new file mode 100644
index 0000000..dd64bef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4bf1fd.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.wgsl
new file mode 100644
index 0000000..6520a34
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl
new file mode 100644
index 0000000..7b02b4d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<bgra8unorm, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_4c76b7() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9a9f2dc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4c76b7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9a9f2dc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4c76b7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.glsl
new file mode 100644
index 0000000..bae1831
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_4c76b7() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_4c76b7();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_4c76b7() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_4c76b7();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_4c76b7() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_4c76b7();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..7a52f73
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.spvasm
new file mode 100644
index 0000000..c2c6d57
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4c76b7.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.wgsl
new file mode 100644
index 0000000..6e014fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4c76b7.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl
new file mode 100644
index 0000000..a5025c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_4cce74() {
+  textureStore(arg_0, 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4336a1e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4cce74.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4336a1e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4cce74.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.glsl
new file mode 100644
index 0000000..4b8772e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4cce74() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_4cce74();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4cce74() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_4cce74();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4cce74() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_4cce74();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.msl
new file mode 100644
index 0000000..1e9ef82
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.spvasm
new file mode 100644
index 0000000..fc7f901
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4cce74.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.wgsl
new file mode 100644
index 0000000..943edf4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4cce74.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl
new file mode 100644
index 0000000..61c8406
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_4ddf52() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8b9e921
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4ddf52.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8b9e921
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4ddf52.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.glsl
new file mode 100644
index 0000000..84c6812
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4ddf52() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_4ddf52();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4ddf52() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_4ddf52();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4ddf52() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_4ddf52();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..185fd70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.spvasm
new file mode 100644
index 0000000..62deb17
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4ddf52.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.wgsl
new file mode 100644
index 0000000..40e0b7f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4ddf52.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl
new file mode 100644
index 0000000..ec66b49
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32float, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_4e2b3a() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e963b1c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4e2b3a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e963b1c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4e2b3a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.glsl
new file mode 100644
index 0000000..034ead9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_4e2b3a() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_4e2b3a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_4e2b3a() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_4e2b3a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_4e2b3a() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_4e2b3a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.msl
new file mode 100644
index 0000000..93023cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.spvasm
new file mode 100644
index 0000000..3a26d9f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/4e2b3a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.wgsl
new file mode 100644
index 0000000..dc859e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/4e2b3a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl
new file mode 100644
index 0000000..cc007f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<bgra8unorm, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_5030f5() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a7ad375
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5030f5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a7ad375
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5030f5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.glsl
new file mode 100644
index 0000000..336051c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_5030f5() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_5030f5();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_5030f5() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_5030f5();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_5030f5() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_5030f5();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..d049b1a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.spvasm
new file mode 100644
index 0000000..e9c2377
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5030f5.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.wgsl
new file mode 100644
index 0000000..06b36f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5030f5.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl
new file mode 100644
index 0000000..cd8dae7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32float, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_51ec82() {
+  textureStore(arg_0, 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d947408
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/51ec82.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d947408
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/51ec82.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.glsl
new file mode 100644
index 0000000..0930e14
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_51ec82() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_51ec82();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_51ec82() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_51ec82();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_51ec82() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_51ec82();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.msl
new file mode 100644
index 0000000..7b4e4b2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.spvasm
new file mode 100644
index 0000000..0f9eb98
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/51ec82.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.wgsl
new file mode 100644
index 0000000..27e1a7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/51ec82.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl
new file mode 100644
index 0000000..0b30f5c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_5246b4() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..553eb19
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5246b4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..553eb19
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5246b4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.glsl
new file mode 100644
index 0000000..0c823a2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_5246b4() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_5246b4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_5246b4() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_5246b4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_5246b4() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_5246b4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..9bdda1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.spvasm
new file mode 100644
index 0000000..6008413
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5246b4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.wgsl
new file mode 100644
index 0000000..993b622
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl
new file mode 100644
index 0000000..d61995d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_53a68b() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2b24e0d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/53a68b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2b24e0d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/53a68b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.glsl
new file mode 100644
index 0000000..d1e0b23
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_53a68b() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_53a68b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_53a68b() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_53a68b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_53a68b() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_53a68b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..9d09022
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.spvasm
new file mode 100644
index 0000000..caec1c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/53a68b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.wgsl
new file mode 100644
index 0000000..17b9be6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/53a68b.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl
new file mode 100644
index 0000000..810331f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_5425ab() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..508563e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5425ab.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..508563e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5425ab.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.glsl
new file mode 100644
index 0000000..8d33ad0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5425ab() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_5425ab();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5425ab() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_5425ab();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5425ab() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_5425ab();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.msl
new file mode 100644
index 0000000..660db5f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.spvasm
new file mode 100644
index 0000000..ea298c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5425ab.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.wgsl
new file mode 100644
index 0000000..ca19f22
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5425ab.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl
new file mode 100644
index 0000000..efd5e79a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<bgra8unorm, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_544f06() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3b043ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/544f06.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3b043ed
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/544f06.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.glsl
new file mode 100644
index 0000000..17b9f5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_544f06() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_544f06();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_544f06() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_544f06();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_544f06() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_544f06();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..bb3e090
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.spvasm
new file mode 100644
index 0000000..cd4ad99
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/544f06.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.wgsl
new file mode 100644
index 0000000..fbc24ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/544f06.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl
new file mode 100644
index 0000000..a09adf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32float, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_55f9dc() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6cdbda0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/55f9dc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6cdbda0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/55f9dc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.glsl
new file mode 100644
index 0000000..ab2a15b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_55f9dc() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_55f9dc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_55f9dc() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_55f9dc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_55f9dc() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_55f9dc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..f132f3d93
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.spvasm
new file mode 100644
index 0000000..142e3af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/55f9dc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.wgsl
new file mode 100644
index 0000000..de66236
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/55f9dc.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl
new file mode 100644
index 0000000..54631d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_574a31() {
+  textureStore(arg_0, 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6b0cd96
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/574a31.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6b0cd96
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/574a31.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.glsl
new file mode 100644
index 0000000..d0d8f24
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_574a31() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_574a31();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_574a31() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_574a31();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_574a31() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_574a31();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.msl
new file mode 100644
index 0000000..02cee7a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.spvasm
new file mode 100644
index 0000000..ec3424f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/574a31.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.wgsl
new file mode 100644
index 0000000..bc1557a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl
new file mode 100644
index 0000000..82aad6c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_579b93() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..15b56a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/579b93.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..15b56a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/579b93.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.glsl
new file mode 100644
index 0000000..fcc3a3e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_579b93() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_579b93();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_579b93() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_579b93();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_579b93() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_579b93();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..1150f59
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.spvasm
new file mode 100644
index 0000000..bff9cac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/579b93.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.wgsl
new file mode 100644
index 0000000..e4837cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/579b93.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl
new file mode 100644
index 0000000..f4e0307
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16float, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_58fc35() {
+  textureStore(arg_0, 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1132af0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/58fc35.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1132af0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/58fc35.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.glsl
new file mode 100644
index 0000000..57cf2ee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_58fc35() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_58fc35();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_58fc35() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_58fc35();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_58fc35() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_58fc35();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..6d80f58
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.spvasm
new file mode 100644
index 0000000..ff7e101
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/58fc35.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.wgsl
new file mode 100644
index 0000000..47855e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/58fc35.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl
new file mode 100644
index 0000000..b2e82aa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32float, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_5a8b41() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..53438fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5a8b41.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..53438fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5a8b41.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.glsl
new file mode 100644
index 0000000..69db9e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5a8b41() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_5a8b41();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5a8b41() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_5a8b41();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5a8b41() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_5a8b41();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..2c02e76
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.spvasm
new file mode 100644
index 0000000..041456f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5a8b41.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.wgsl
new file mode 100644
index 0000000..5a39ba8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5a8b41.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl
new file mode 100644
index 0000000..accae6d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32float, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_5b17eb() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..21697c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5b17eb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..21697c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5b17eb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.glsl
new file mode 100644
index 0000000..3da52fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_5b17eb() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_5b17eb();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_5b17eb() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_5b17eb();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_5b17eb() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_5b17eb();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.msl
new file mode 100644
index 0000000..72022b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.spvasm
new file mode 100644
index 0000000..769ff2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5b17eb.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.wgsl
new file mode 100644
index 0000000..75d7165
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl
new file mode 100644
index 0000000..ceea8f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_5b4522() {
+  textureStore(arg_0, 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..07f38f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5b4522.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..07f38f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5b4522.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.glsl
new file mode 100644
index 0000000..12f7a65
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5b4522() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_5b4522();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5b4522() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_5b4522();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5b4522() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_5b4522();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..ee38cf9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.spvasm
new file mode 100644
index 0000000..59c9b31
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5b4522.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.wgsl
new file mode 100644
index 0000000..f7da3e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5b4522.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl
new file mode 100644
index 0000000..8ea1f6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32float, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_5ec6b2() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0097a88
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5ec6b2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0097a88
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5ec6b2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.glsl
new file mode 100644
index 0000000..5582db9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_5ec6b2() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_5ec6b2();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_5ec6b2() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_5ec6b2();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_5ec6b2() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_5ec6b2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..3e55827
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.spvasm
new file mode 100644
index 0000000..198579a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5ec6b2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.wgsl
new file mode 100644
index 0000000..362e7d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl
new file mode 100644
index 0000000..333bfd5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32float, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_5ee194() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..625ba20
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5ee194.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..625ba20
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5ee194.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.glsl
new file mode 100644
index 0000000..50c88c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5ee194() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_5ee194();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5ee194() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_5ee194();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5ee194() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_5ee194();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.msl
new file mode 100644
index 0000000..cecdf54
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.spvasm
new file mode 100644
index 0000000..555c801
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/5ee194.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.wgsl
new file mode 100644
index 0000000..4be49b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl
new file mode 100644
index 0000000..9f542e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_614b58() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..fdf4cdf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/614b58.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..fdf4cdf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/614b58.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.glsl
new file mode 100644
index 0000000..7bea358
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_614b58() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_614b58();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_614b58() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_614b58();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_614b58() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_614b58();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..09ce63c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.spvasm
new file mode 100644
index 0000000..0343162
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/614b58.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.wgsl
new file mode 100644
index 0000000..9a0195b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/614b58.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl
new file mode 100644
index 0000000..e2693e0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32float, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_635584() {
+  textureStore(arg_0, 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5994363
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/635584.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5994363
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/635584.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.glsl
new file mode 100644
index 0000000..63b30cc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_635584() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_635584();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_635584() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_635584();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_635584() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_635584();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.msl
new file mode 100644
index 0000000..8cb9fd3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.spvasm
new file mode 100644
index 0000000..652bd2d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/635584.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.wgsl
new file mode 100644
index 0000000..f299988
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl
new file mode 100644
index 0000000..abf284a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_63f34a() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..da756ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/63f34a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..da756ea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/63f34a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.glsl
new file mode 100644
index 0000000..b5ec06c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_63f34a() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_63f34a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_63f34a() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_63f34a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_63f34a() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_63f34a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.msl
new file mode 100644
index 0000000..27f57d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.spvasm
new file mode 100644
index 0000000..76c2815
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/63f34a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.wgsl
new file mode 100644
index 0000000..6b6f593
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl
new file mode 100644
index 0000000..b88e92e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_646dbc() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0f8361a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/646dbc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0f8361a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/646dbc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.glsl
new file mode 100644
index 0000000..28180ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_646dbc() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_646dbc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_646dbc() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_646dbc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_646dbc() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_646dbc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..ad99d86
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.spvasm
new file mode 100644
index 0000000..4c939fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/646dbc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.wgsl
new file mode 100644
index 0000000..cf66686
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/646dbc.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl
new file mode 100644
index 0000000..a25bb85
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_65b6aa() {
+  textureStore(arg_0, 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..93a061f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/65b6aa.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..93a061f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/65b6aa.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.glsl
new file mode 100644
index 0000000..5234434
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_65b6aa() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_65b6aa();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_65b6aa() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_65b6aa();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_65b6aa() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_65b6aa();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..b13b879
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.spvasm
new file mode 100644
index 0000000..ba91d27
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/65b6aa.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.wgsl
new file mode 100644
index 0000000..5fe6574
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/65b6aa.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl
new file mode 100644
index 0000000..cfc54a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32float, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_6be9e0() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f85be28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6be9e0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f85be28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6be9e0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.glsl
new file mode 100644
index 0000000..dee9638
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_6be9e0() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_6be9e0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_6be9e0() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_6be9e0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_6be9e0() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_6be9e0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..1943714
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.spvasm
new file mode 100644
index 0000000..7e5d6fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6be9e0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.wgsl
new file mode 100644
index 0000000..5b15abc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6be9e0.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl
new file mode 100644
index 0000000..bb52316
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_6c4a70() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..579d634
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6c4a70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..579d634
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6c4a70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.glsl
new file mode 100644
index 0000000..a114460
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_6c4a70() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_6c4a70();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_6c4a70() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_6c4a70();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_6c4a70() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_6c4a70();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..46e72af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.spvasm
new file mode 100644
index 0000000..a4d2bc2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6c4a70.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.wgsl
new file mode 100644
index 0000000..3206a1e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl
new file mode 100644
index 0000000..febc905
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8unorm, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_6d1809() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..98d9c03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6d1809.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..98d9c03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6d1809.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.glsl
new file mode 100644
index 0000000..7d49861
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_6d1809() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_6d1809();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_6d1809() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_6d1809();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_6d1809() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_6d1809();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..330fac4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.spvasm
new file mode 100644
index 0000000..7c0cda9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6d1809.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.wgsl
new file mode 100644
index 0000000..289254a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d1809.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl
new file mode 100644
index 0000000..9150429
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_6d259f() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..001869c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6d259f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..001869c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6d259f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.glsl
new file mode 100644
index 0000000..2557bf9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_6d259f() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_6d259f();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_6d259f() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_6d259f();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_6d259f() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_6d259f();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..7ba7bca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.spvasm
new file mode 100644
index 0000000..db04335
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6d259f.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.wgsl
new file mode 100644
index 0000000..dcbc99e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6d259f.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl
new file mode 100644
index 0000000..7d6b343a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32float, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_6e6cc0() {
+  textureStore(arg_0, 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4ddaccb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6e6cc0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4ddaccb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6e6cc0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.glsl
new file mode 100644
index 0000000..ab938c5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_6e6cc0() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_6e6cc0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_6e6cc0() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_6e6cc0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_6e6cc0() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_6e6cc0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..db1548d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.spvasm
new file mode 100644
index 0000000..58f1a35
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6e6cc0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.wgsl
new file mode 100644
index 0000000..7fbe850
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6e6cc0.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl
new file mode 100644
index 0000000..d38b2f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_6f3542() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3cb90a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6f3542.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3cb90a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6f3542.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.glsl
new file mode 100644
index 0000000..1dcf6e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_6f3542() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_6f3542();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_6f3542() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_6f3542();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_6f3542() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_6f3542();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..3ccd41e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.spvasm
new file mode 100644
index 0000000..b17667f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6f3542.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.wgsl
new file mode 100644
index 0000000..c1af65f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6f3542.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl
new file mode 100644
index 0000000..ac0a875
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16float, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_6fb99b() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..fc46bfb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6fb99b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..fc46bfb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6fb99b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.glsl
new file mode 100644
index 0000000..5586e56
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_6fb99b() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_6fb99b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_6fb99b() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_6fb99b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_6fb99b() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_6fb99b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c9b4482
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.spvasm
new file mode 100644
index 0000000..4dd5ce1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/6fb99b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.wgsl
new file mode 100644
index 0000000..b1e7ffe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/6fb99b.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl
new file mode 100644
index 0000000..a3bc34f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8unorm, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_704e1f() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..09e261e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/704e1f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..09e261e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/704e1f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.glsl
new file mode 100644
index 0000000..3070f28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_704e1f() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_704e1f();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_704e1f() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_704e1f();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_704e1f() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_704e1f();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..4cfb90e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.spvasm
new file mode 100644
index 0000000..b902f51
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/704e1f.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.wgsl
new file mode 100644
index 0000000..2e452b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/704e1f.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/706236.wgsl b/test/tint/builtins/gen/literal/textureStore/706236.wgsl
new file mode 100644
index 0000000..ff0358b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8unorm, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_706236() {
+  textureStore(arg_0, 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9d51707
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/706236.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9d51707
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/706236.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.glsl
new file mode 100644
index 0000000..5aa62e6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_706236() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_706236();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_706236() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_706236();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_706236() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_706236();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..578e71e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.spvasm
new file mode 100644
index 0000000..2c43517
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/706236.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.wgsl
new file mode 100644
index 0000000..63f0f70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706236.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/706560.wgsl b/test/tint/builtins/gen/literal/textureStore/706560.wgsl
new file mode 100644
index 0000000..0f75165
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_706560() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b4c6d2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/706560.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b4c6d2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/706560.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.glsl
new file mode 100644
index 0000000..1a43976
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_706560() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_706560();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_706560() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_706560();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_706560() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_706560();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..6cd976f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.spvasm
new file mode 100644
index 0000000..8b4739c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/706560.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.wgsl
new file mode 100644
index 0000000..437338e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/706560.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl
new file mode 100644
index 0000000..5b40c73
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16float, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_726d6d() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ebcabd8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/726d6d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ebcabd8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/726d6d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.glsl
new file mode 100644
index 0000000..6a3ddaf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_726d6d() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_726d6d();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_726d6d() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_726d6d();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_726d6d() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_726d6d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..6f0fe07
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.spvasm
new file mode 100644
index 0000000..ccdf642
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/726d6d.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.wgsl
new file mode 100644
index 0000000..1c1e966
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/726d6d.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl
new file mode 100644
index 0000000..073f0a7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_73a735() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8763ed4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/73a735.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8763ed4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/73a735.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.glsl
new file mode 100644
index 0000000..59b614f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_73a735() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_73a735();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_73a735() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_73a735();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_73a735() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_73a735();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c80dee4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.spvasm
new file mode 100644
index 0000000..987d9e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/73a735.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.wgsl
new file mode 100644
index 0000000..353fec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/73a735.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/751256.wgsl b/test/tint/builtins/gen/literal/textureStore/751256.wgsl
new file mode 100644
index 0000000..eec28d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_751256() {
+  textureStore(arg_0, 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5290d25
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/751256.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5290d25
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/751256.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.glsl
new file mode 100644
index 0000000..3032cd8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_751256() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_751256();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_751256() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_751256();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_751256() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_751256();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..ae95d17
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.spvasm
new file mode 100644
index 0000000..a7b5232
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/751256.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.wgsl
new file mode 100644
index 0000000..4b6f056
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/751256.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl
new file mode 100644
index 0000000..c4292d4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_75bbd5() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..353578e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/75bbd5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..353578e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/75bbd5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.glsl
new file mode 100644
index 0000000..5a72e03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_75bbd5() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_75bbd5();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_75bbd5() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_75bbd5();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_75bbd5() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_75bbd5();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.msl
new file mode 100644
index 0000000..9a8f4ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.spvasm
new file mode 100644
index 0000000..462fac5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/75bbd5.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.wgsl
new file mode 100644
index 0000000..2632e5b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/75bbd5.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl
new file mode 100644
index 0000000..71cde6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_7792fa() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..199cc67
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7792fa.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..199cc67
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7792fa.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.glsl
new file mode 100644
index 0000000..5428782
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_7792fa() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_7792fa();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_7792fa() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_7792fa();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_7792fa() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_7792fa();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.msl
new file mode 100644
index 0000000..c8ea318
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.spvasm
new file mode 100644
index 0000000..3b09cbf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7792fa.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.wgsl
new file mode 100644
index 0000000..0b0abe7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl
new file mode 100644
index 0000000..bb58815
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32float, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_7b8f86() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3de51ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7b8f86.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3de51ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7b8f86.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.glsl
new file mode 100644
index 0000000..0a0b85a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_7b8f86() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_7b8f86();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_7b8f86() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_7b8f86();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_7b8f86() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_7b8f86();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.msl
new file mode 100644
index 0000000..7968183
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.spvasm
new file mode 100644
index 0000000..e3fec93
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7b8f86.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.wgsl
new file mode 100644
index 0000000..cc8a16e1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl
new file mode 100644
index 0000000..a99eb4d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32float, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_7d10e0() {
+  textureStore(arg_0, 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0a5a7cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7d10e0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0a5a7cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7d10e0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.glsl
new file mode 100644
index 0000000..932472b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_7d10e0() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_7d10e0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_7d10e0() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_7d10e0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_7d10e0() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_7d10e0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..ab393a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.spvasm
new file mode 100644
index 0000000..590e53e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7d10e0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.wgsl
new file mode 100644
index 0000000..5d763e6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7d10e0.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl
new file mode 100644
index 0000000..f2eaf14
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_7dd042() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..06c1557
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7dd042.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..06c1557
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7dd042.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.glsl
new file mode 100644
index 0000000..6796c49
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_7dd042() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_7dd042();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_7dd042() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_7dd042();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_7dd042() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_7dd042();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..0e41148
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.spvasm
new file mode 100644
index 0000000..d0aded9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7dd042.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.wgsl
new file mode 100644
index 0000000..058d4eb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7dd042.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl
new file mode 100644
index 0000000..f8957c6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32float, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_7e787a() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8fbc450
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7e787a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8fbc450
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7e787a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.glsl
new file mode 100644
index 0000000..0af5eaa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_7e787a() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_7e787a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_7e787a() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_7e787a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_7e787a() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_7e787a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..4913319
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.spvasm
new file mode 100644
index 0000000..407ded8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/7e787a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.wgsl
new file mode 100644
index 0000000..719793c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/7e787a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl
new file mode 100644
index 0000000..480a923
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_80bf1d() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..77a787c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/80bf1d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..77a787c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/80bf1d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.glsl
new file mode 100644
index 0000000..bf6e0c3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_80bf1d() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_80bf1d();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_80bf1d() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_80bf1d();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_80bf1d() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_80bf1d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.msl
new file mode 100644
index 0000000..c8685b8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.spvasm
new file mode 100644
index 0000000..a6893e9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/80bf1d.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.wgsl
new file mode 100644
index 0000000..c714372
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/80bf1d.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl
new file mode 100644
index 0000000..f12458a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16float, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_818df6() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8c8daf3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/818df6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8c8daf3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/818df6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.glsl
new file mode 100644
index 0000000..c7cff28
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_818df6() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_818df6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_818df6() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_818df6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_818df6() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_818df6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..2783fb1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.spvasm
new file mode 100644
index 0000000..61974ab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/818df6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.wgsl
new file mode 100644
index 0000000..a010a3c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/818df6.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl
new file mode 100644
index 0000000..50c6ee0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32float, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_81ae31() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..16106ac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/81ae31.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..16106ac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/81ae31.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.glsl
new file mode 100644
index 0000000..f735b2d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_81ae31() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_81ae31();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_81ae31() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_81ae31();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_81ae31() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_81ae31();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..e4ed045
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.spvasm
new file mode 100644
index 0000000..dbf8a0c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/81ae31.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.wgsl
new file mode 100644
index 0000000..287d721
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/81ae31.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl
new file mode 100644
index 0000000..e7499bf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_820272() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e3128a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/820272.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e3128a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/820272.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.glsl
new file mode 100644
index 0000000..806bfc0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_820272() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_820272();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_820272() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_820272();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_820272() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_820272();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.msl
new file mode 100644
index 0000000..264268d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.spvasm
new file mode 100644
index 0000000..914153c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/820272.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.wgsl
new file mode 100644
index 0000000..446efbf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/820272.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl
new file mode 100644
index 0000000..e43555f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_84d435() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..104f563
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/84d435.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..104f563
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/84d435.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.glsl
new file mode 100644
index 0000000..f5c95a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84d435() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_84d435();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84d435() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_84d435();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84d435() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_84d435();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.msl
new file mode 100644
index 0000000..9c62291
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.spvasm
new file mode 100644
index 0000000..c63a51f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/84d435.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.wgsl
new file mode 100644
index 0000000..76a10fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84d435.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl
new file mode 100644
index 0000000..5db20f6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_84f4f4() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..fe08ae8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/84f4f4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..fe08ae8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/84f4f4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.glsl
new file mode 100644
index 0000000..1ef429c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84f4f4() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_84f4f4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84f4f4() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_84f4f4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84f4f4() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_84f4f4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..0694305
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.spvasm
new file mode 100644
index 0000000..d5f643e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/84f4f4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.wgsl
new file mode 100644
index 0000000..08cd8a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/84f4f4.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl
new file mode 100644
index 0000000..2b2fe70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_8676c9() {
+  textureStore(arg_0, 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..868852d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8676c9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..868852d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8676c9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.glsl
new file mode 100644
index 0000000..c70c0fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8676c9() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_8676c9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8676c9() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_8676c9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8676c9() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_8676c9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c114c64
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.spvasm
new file mode 100644
index 0000000..6f629cd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8676c9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.wgsl
new file mode 100644
index 0000000..930332f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8676c9.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl
new file mode 100644
index 0000000..8fb8647
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_86f713() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..70cb13b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/86f713.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..70cb13b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/86f713.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.glsl
new file mode 100644
index 0000000..9b81260
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_86f713() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_86f713();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_86f713() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_86f713();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_86f713() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_86f713();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..5890efe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.spvasm
new file mode 100644
index 0000000..b2734aa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/86f713.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.wgsl
new file mode 100644
index 0000000..b9e1c0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/86f713.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl
new file mode 100644
index 0000000..cedd211
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8snorm, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_877c92() {
+  textureStore(arg_0, 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..72b5bcb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/877c92.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..72b5bcb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/877c92.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.glsl
new file mode 100644
index 0000000..5ce6c3b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_877c92() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_877c92();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_877c92() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_877c92();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_877c92() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_877c92();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..56b12ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.spvasm
new file mode 100644
index 0000000..983b0b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/877c92.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.wgsl
new file mode 100644
index 0000000..2d33078
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/877c92.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl
new file mode 100644
index 0000000..4d15014
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_8815b1() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0540b7c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8815b1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0540b7c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8815b1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.glsl
new file mode 100644
index 0000000..1faed59
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8815b1() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_8815b1();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8815b1() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_8815b1();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8815b1() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_8815b1();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..ebde451
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.spvasm
new file mode 100644
index 0000000..98c996b8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8815b1.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.wgsl
new file mode 100644
index 0000000..35a4b42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8815b1.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/885921.wgsl b/test/tint/builtins/gen/literal/textureStore/885921.wgsl
new file mode 100644
index 0000000..6ba9025
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8unorm, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_885921() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d288f6d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/885921.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d288f6d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/885921.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.glsl
new file mode 100644
index 0000000..1a01ce5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_885921() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_885921();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_885921() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_885921();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_885921() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_885921();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..6b1fda3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.spvasm
new file mode 100644
index 0000000..26557fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/885921.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.wgsl
new file mode 100644
index 0000000..ab5d089
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/885921.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl
new file mode 100644
index 0000000..9f5f501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_88ce7e() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8f88c9c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/88ce7e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8f88c9c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/88ce7e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.glsl
new file mode 100644
index 0000000..48b07cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_88ce7e() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_88ce7e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_88ce7e() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_88ce7e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_88ce7e() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_88ce7e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..cfa2152
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.spvasm
new file mode 100644
index 0000000..a76268e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/88ce7e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.wgsl
new file mode 100644
index 0000000..fcbbecd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/88ce7e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl
new file mode 100644
index 0000000..a7427b7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_8a16b0() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..db93f80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a16b0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..db93f80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a16b0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.glsl
new file mode 100644
index 0000000..80f3640
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8a16b0() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_8a16b0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8a16b0() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_8a16b0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8a16b0() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_8a16b0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..1074af5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.spvasm
new file mode 100644
index 0000000..887ad6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a16b0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.wgsl
new file mode 100644
index 0000000..7fb4c8d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a16b0.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl
new file mode 100644
index 0000000..46103dc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16float, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_8a46ff() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0643518
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a46ff.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0643518
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a46ff.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.glsl
new file mode 100644
index 0000000..566c250
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_8a46ff() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_8a46ff();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_8a46ff() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_8a46ff();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_8a46ff() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_8a46ff();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..93a806b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.spvasm
new file mode 100644
index 0000000..2a914e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a46ff.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.wgsl
new file mode 100644
index 0000000..ebd94fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a46ff.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl
new file mode 100644
index 0000000..636beaf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_8a85b9() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e3c5329
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a85b9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e3c5329
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a85b9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.glsl
new file mode 100644
index 0000000..a155d16
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8a85b9() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_8a85b9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8a85b9() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_8a85b9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8a85b9() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_8a85b9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..d88bbb2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.spvasm
new file mode 100644
index 0000000..7bf811d5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a85b9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.wgsl
new file mode 100644
index 0000000..316e60d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a85b9.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl
new file mode 100644
index 0000000..eb75e9b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_8a8681() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..72689a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a8681.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..72689a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a8681.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.glsl
new file mode 100644
index 0000000..4b911d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8a8681() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_8a8681();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8a8681() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_8a8681();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8a8681() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_8a8681();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.msl
new file mode 100644
index 0000000..9ccc5b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.spvasm
new file mode 100644
index 0000000..c06f42e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8a8681.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.wgsl
new file mode 100644
index 0000000..5c3dcf2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl
new file mode 100644
index 0000000..b01bc36
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8snorm, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_8ae0bc() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bb34ba5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8ae0bc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bb34ba5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8ae0bc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.glsl
new file mode 100644
index 0000000..ffc1b29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ae0bc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_8ae0bc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ae0bc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_8ae0bc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ae0bc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_8ae0bc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..d2ba91b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.spvasm
new file mode 100644
index 0000000..163bc2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8ae0bc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.wgsl
new file mode 100644
index 0000000..4f8cec2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ae0bc.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl
new file mode 100644
index 0000000..ba79e86
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_8cd841() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..96c143b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8cd841.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..96c143b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8cd841.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.glsl
new file mode 100644
index 0000000..69ffeb1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8cd841() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_8cd841();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8cd841() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_8cd841();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8cd841() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_8cd841();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..61a9f9e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.spvasm
new file mode 100644
index 0000000..8b1eea0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8cd841.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.wgsl
new file mode 100644
index 0000000..e2f8bf4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8cd841.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl
new file mode 100644
index 0000000..c4de4a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16float, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_8ebdc9() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eeefb5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8ebdc9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eeefb5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8ebdc9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.glsl
new file mode 100644
index 0000000..e8823cc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ebdc9() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_8ebdc9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ebdc9() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_8ebdc9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ebdc9() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_8ebdc9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..e10f138
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.spvasm
new file mode 100644
index 0000000..6fb2e5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/8ebdc9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.wgsl
new file mode 100644
index 0000000..e2c8a78
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/8ebdc9.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl
new file mode 100644
index 0000000..7528657
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16float, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_90960e() {
+  textureStore(arg_0, 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..be89832
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/90960e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..be89832
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/90960e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.glsl
new file mode 100644
index 0000000..c9b9d05
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_90960e() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_90960e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_90960e() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_90960e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_90960e() {
+  imageStore(arg_0, ivec2(1, 0), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_90960e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..b336d5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.spvasm
new file mode 100644
index 0000000..960b411
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/90960e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.wgsl
new file mode 100644
index 0000000..6393cb0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90960e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl
new file mode 100644
index 0000000..47f6494
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_90a553() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..17bd291
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/90a553.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..17bd291
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/90a553.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.glsl
new file mode 100644
index 0000000..0ea1515
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_90a553() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_90a553();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_90a553() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_90a553();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_90a553() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_90a553();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..83b2a5c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.spvasm
new file mode 100644
index 0000000..9bb8935
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/90a553.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.wgsl
new file mode 100644
index 0000000..c9e80c0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/90a553.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/976636.wgsl b/test/tint/builtins/gen/literal/textureStore/976636.wgsl
new file mode 100644
index 0000000..59adbd5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_976636() {
+  textureStore(arg_0, 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f0648c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/976636.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f0648c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/976636.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.glsl
new file mode 100644
index 0000000..5c7e59a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_976636() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_976636();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_976636() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_976636();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_976636() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_976636();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..90759e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.spvasm
new file mode 100644
index 0000000..9ff5526
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/976636.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.wgsl
new file mode 100644
index 0000000..e6aaf6c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/976636.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl
new file mode 100644
index 0000000..0fbc3ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_9ba5c1() {
+  textureStore(arg_0, 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3870879
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9ba5c1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3870879
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9ba5c1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.glsl
new file mode 100644
index 0000000..ba78ea4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9ba5c1() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_9ba5c1();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9ba5c1() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_9ba5c1();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9ba5c1() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_9ba5c1();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..641d853
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.spvasm
new file mode 100644
index 0000000..648ca88
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9ba5c1.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.wgsl
new file mode 100644
index 0000000..2d6fa70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9ba5c1.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl
new file mode 100644
index 0000000..cedf3a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_9cea9e() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..59ebd1c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9cea9e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..59ebd1c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9cea9e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.glsl
new file mode 100644
index 0000000..a209e52
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_9cea9e() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_9cea9e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_9cea9e() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_9cea9e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_9cea9e() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_9cea9e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..b361399
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.spvasm
new file mode 100644
index 0000000..c7cb9fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9cea9e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.wgsl
new file mode 100644
index 0000000..abb656d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9cea9e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl
new file mode 100644
index 0000000..28cccf4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_9d7c62() {
+  textureStore(arg_0, 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d981b60
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9d7c62.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d981b60
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9d7c62.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.glsl
new file mode 100644
index 0000000..9ac6cdc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9d7c62() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_9d7c62();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9d7c62() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_9d7c62();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9d7c62() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_9d7c62();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..71b7fca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.spvasm
new file mode 100644
index 0000000..31ebeb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/9d7c62.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.wgsl
new file mode 100644
index 0000000..a55e128
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/9d7c62.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl
new file mode 100644
index 0000000..ab284d3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_a0022f() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d8665aa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a0022f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d8665aa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a0022f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.glsl
new file mode 100644
index 0000000..2c24d0d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_a0022f() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_a0022f();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_a0022f() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_a0022f();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_a0022f() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_a0022f();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..15dc866
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.spvasm
new file mode 100644
index 0000000..dc20793
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a0022f.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.wgsl
new file mode 100644
index 0000000..bcfd4df
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a0022f.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl
new file mode 100644
index 0000000..6b25ec5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_a14041() {
+  textureStore(arg_0, 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8856bea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a14041.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8856bea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a14041.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.glsl
new file mode 100644
index 0000000..7cbf5ab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_a14041() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_a14041();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_a14041() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_a14041();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_a14041() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_a14041();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..4b8aad4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.spvasm
new file mode 100644
index 0000000..11701ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a14041.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.wgsl
new file mode 100644
index 0000000..1026eb0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a14041.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl
new file mode 100644
index 0000000..a7ca0b1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_a19a12() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0be1a8b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a19a12.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0be1a8b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a19a12.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.glsl
new file mode 100644
index 0000000..887a90d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_a19a12() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_a19a12();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_a19a12() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_a19a12();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_a19a12() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_a19a12();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..059408a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.spvasm
new file mode 100644
index 0000000..58b8d02
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a19a12.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.wgsl
new file mode 100644
index 0000000..36ff7b0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a19a12.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl
new file mode 100644
index 0000000..e8fedd8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_a24491() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..cfb2497
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a24491.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..cfb2497
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a24491.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.glsl
new file mode 100644
index 0000000..b392f33
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a24491() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_a24491();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a24491() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_a24491();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a24491() {
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_a24491();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..ab0d26c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.spvasm
new file mode 100644
index 0000000..54ba873
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a24491.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.wgsl
new file mode 100644
index 0000000..95e2fff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a24491.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl
new file mode 100644
index 0000000..d480e02
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_a5b88e() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e24504f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a5b88e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e24504f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a5b88e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.glsl
new file mode 100644
index 0000000..d7bd99f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5b88e() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_a5b88e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5b88e() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_a5b88e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5b88e() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_a5b88e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..0c6b072
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.spvasm
new file mode 100644
index 0000000..8c92858
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a5b88e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.wgsl
new file mode 100644
index 0000000..dfc64ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5b88e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl
new file mode 100644
index 0000000..f32d873
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_a5c925() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d4cc1a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a5c925.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d4cc1a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a5c925.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.glsl
new file mode 100644
index 0000000..de35847
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5c925() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_a5c925();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5c925() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_a5c925();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5c925() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_a5c925();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..bc2330b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.spvasm
new file mode 100644
index 0000000..022b154
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a5c925.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.wgsl
new file mode 100644
index 0000000..73baa78
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a5c925.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl
new file mode 100644
index 0000000..960c680
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<bgra8unorm, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_a66ca4() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2885f0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a66ca4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2885f0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a66ca4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.glsl
new file mode 100644
index 0000000..326c4fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_a66ca4() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_a66ca4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_a66ca4() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_a66ca4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_a66ca4() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_a66ca4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..47dd42d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.spvasm
new file mode 100644
index 0000000..8625615
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a66ca4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.wgsl
new file mode 100644
index 0000000..691ad2b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a66ca4.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl
new file mode 100644
index 0000000..303bf88
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_a702b6() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bd9a17a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a702b6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bd9a17a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a702b6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.glsl
new file mode 100644
index 0000000..3d13769
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_a702b6() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_a702b6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_a702b6() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_a702b6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_a702b6() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_a702b6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.msl
new file mode 100644
index 0000000..f50f317
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.spvasm
new file mode 100644
index 0000000..410603c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a702b6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.wgsl
new file mode 100644
index 0000000..2e4d21d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a702b6.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl
new file mode 100644
index 0000000..b5d0ef1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_a9298c() {
+  textureStore(arg_0, 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5410d5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a9298c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5410d5d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a9298c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.glsl
new file mode 100644
index 0000000..96f150a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a9298c() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_a9298c();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a9298c() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_a9298c();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a9298c() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_a9298c();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.msl
new file mode 100644
index 0000000..826c106
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.spvasm
new file mode 100644
index 0000000..aaafb93
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/a9298c.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.wgsl
new file mode 100644
index 0000000..55a6fde
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl
new file mode 100644
index 0000000..8804eff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_ab03b6() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7115d2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ab03b6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7115d2f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ab03b6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.glsl
new file mode 100644
index 0000000..f328623
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_ab03b6() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_ab03b6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_ab03b6() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_ab03b6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_ab03b6() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_ab03b6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..611a80e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.spvasm
new file mode 100644
index 0000000..af16ea3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ab03b6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.wgsl
new file mode 100644
index 0000000..8ed8c31
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab03b6.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl
new file mode 100644
index 0000000..04087d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32float, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_ab788e() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0cfe05c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ab788e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0cfe05c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ab788e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.glsl
new file mode 100644
index 0000000..2c268f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_ab788e() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_ab788e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_ab788e() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_ab788e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_ab788e() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_ab788e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.msl
new file mode 100644
index 0000000..dbf118f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.spvasm
new file mode 100644
index 0000000..f720e66
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ab788e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.wgsl
new file mode 100644
index 0000000..3516687
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ab788e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl
new file mode 100644
index 0000000..720422c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_abdd21() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1196da1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/abdd21.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1196da1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/abdd21.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.glsl
new file mode 100644
index 0000000..7151be8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_abdd21() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_abdd21();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_abdd21() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_abdd21();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_abdd21() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_abdd21();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..622e64f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.spvasm
new file mode 100644
index 0000000..9b605e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/abdd21.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.wgsl
new file mode 100644
index 0000000..f66c6dc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl
new file mode 100644
index 0000000..12b96b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_ac0a55() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..72a462f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ac0a55.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..72a462f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ac0a55.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.glsl
new file mode 100644
index 0000000..fcc9c86
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_ac0a55() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_ac0a55();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_ac0a55() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_ac0a55();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_ac0a55() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_ac0a55();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..6cc5ad2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.spvasm
new file mode 100644
index 0000000..6a3aeef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ac0a55.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.wgsl
new file mode 100644
index 0000000..dc6442e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ac0a55.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl
new file mode 100644
index 0000000..53f242c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_aedea3() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4e15eb0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/aedea3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4e15eb0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/aedea3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.glsl
new file mode 100644
index 0000000..04b42dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_aedea3() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_aedea3();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_aedea3() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_aedea3();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_aedea3() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_aedea3();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..d09f306
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.spvasm
new file mode 100644
index 0000000..20d51e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/aedea3.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.wgsl
new file mode 100644
index 0000000..d3950c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/aedea3.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl
new file mode 100644
index 0000000..5919bc0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_b16110() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1161f0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b16110.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1161f0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b16110.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.glsl
new file mode 100644
index 0000000..4733c62
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_b16110() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_b16110();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_b16110() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_b16110();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_b16110() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_b16110();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c7276b7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.spvasm
new file mode 100644
index 0000000..6e2cfc5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b16110.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.wgsl
new file mode 100644
index 0000000..1a10aea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b16110.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl
new file mode 100644
index 0000000..2b57d41
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_b286b4() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b685f44
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b286b4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b685f44
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b286b4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.glsl
new file mode 100644
index 0000000..2a4b152
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b286b4() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_b286b4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b286b4() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_b286b4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b286b4() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_b286b4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..15788f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.spvasm
new file mode 100644
index 0000000..76c9a35
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b286b4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.wgsl
new file mode 100644
index 0000000..b03b940
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b286b4.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl
new file mode 100644
index 0000000..8f1aa50
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_b36bc1() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..823df29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b36bc1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..823df29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b36bc1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.glsl
new file mode 100644
index 0000000..6eb753f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b36bc1() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_b36bc1();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b36bc1() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_b36bc1();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b36bc1() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_b36bc1();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..0403170
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.spvasm
new file mode 100644
index 0000000..2e2b8ab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b36bc1.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.wgsl
new file mode 100644
index 0000000..cdb02c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b36bc1.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl
new file mode 100644
index 0000000..c87b522
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<bgra8unorm, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_b4389e() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6a9fe9d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b4389e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6a9fe9d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b4389e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.glsl
new file mode 100644
index 0000000..05a37d6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_b4389e() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_b4389e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_b4389e() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_b4389e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_b4389e() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_b4389e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..800a7ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.spvasm
new file mode 100644
index 0000000..7728af2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b4389e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.wgsl
new file mode 100644
index 0000000..53937ce
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b4389e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl
new file mode 100644
index 0000000..1caaf27
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32float, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_b71c13() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5f30b34
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b71c13.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5f30b34
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b71c13.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.glsl
new file mode 100644
index 0000000..8f2cd16
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_b71c13() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_b71c13();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_b71c13() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_b71c13();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_b71c13() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_b71c13();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.msl
new file mode 100644
index 0000000..a08c52c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.spvasm
new file mode 100644
index 0000000..d150cb3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b71c13.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.wgsl
new file mode 100644
index 0000000..ab1f388
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl
new file mode 100644
index 0000000..951a85d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32float, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_b7232c() {
+  textureStore(arg_0, 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..89e25d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b7232c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..89e25d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b7232c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.glsl
new file mode 100644
index 0000000..9b1e0a8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_b7232c() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_b7232c();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_b7232c() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_b7232c();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_b7232c() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_b7232c();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..855e9c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.spvasm
new file mode 100644
index 0000000..51fffea
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b7232c.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.wgsl
new file mode 100644
index 0000000..71fd744
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl
new file mode 100644
index 0000000..676b486
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<bgra8unorm, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_b89ffb() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9cb26ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b89ffb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9cb26ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b89ffb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.glsl
new file mode 100644
index 0000000..e84bc27
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_b89ffb() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_b89ffb();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_b89ffb() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_b89ffb();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_b89ffb() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_b89ffb();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..4c44ced
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.spvasm
new file mode 100644
index 0000000..bed112b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b89ffb.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.wgsl
new file mode 100644
index 0000000..e9474fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b89ffb.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl
new file mode 100644
index 0000000..49d6af8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_b9c81a() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5c660a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b9c81a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5c660a4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b9c81a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.glsl
new file mode 100644
index 0000000..7ee2f34
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b9c81a() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_b9c81a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b9c81a() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_b9c81a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b9c81a() {
+  imageStore(arg_0, ivec3(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_b9c81a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.msl
new file mode 100644
index 0000000..50148f7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.spvasm
new file mode 100644
index 0000000..7244445
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b9c81a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.wgsl
new file mode 100644
index 0000000..80b8458
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9c81a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl
new file mode 100644
index 0000000..3075a14
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_b9d863() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..31d98af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b9d863.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..31d98af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b9d863.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.glsl
new file mode 100644
index 0000000..57920c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b9d863() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_b9d863();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b9d863() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_b9d863();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b9d863() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_b9d863();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..90c3df6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.spvasm
new file mode 100644
index 0000000..4e3b1a7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/b9d863.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.wgsl
new file mode 100644
index 0000000..d61ad06
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/b9d863.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl
new file mode 100644
index 0000000..e64f396
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_bc1423() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1573913
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bc1423.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1573913
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bc1423.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.glsl
new file mode 100644
index 0000000..2b22eba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bc1423() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_bc1423();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bc1423() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_bc1423();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bc1423() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_bc1423();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..f6f7c51
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.spvasm
new file mode 100644
index 0000000..65ba6c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bc1423.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.wgsl
new file mode 100644
index 0000000..c3c20a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bc1423.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl
new file mode 100644
index 0000000..afd7862
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_bcc97a() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..479eb80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bcc97a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..479eb80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bcc97a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.glsl
new file mode 100644
index 0000000..079b505
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_bcc97a() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_bcc97a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_bcc97a() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_bcc97a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_bcc97a() {
+  imageStore(arg_0, ivec2(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_bcc97a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..6a266b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.spvasm
new file mode 100644
index 0000000..7bab2df
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bcc97a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.wgsl
new file mode 100644
index 0000000..27a5abc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bcc97a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl
new file mode 100644
index 0000000..f2bdd2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_bd6602() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..fe93fd8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bd6602.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..fe93fd8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bd6602.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.glsl
new file mode 100644
index 0000000..15f348c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bd6602() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_bd6602();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bd6602() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_bd6602();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bd6602() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_bd6602();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.msl
new file mode 100644
index 0000000..02cf9d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.spvasm
new file mode 100644
index 0000000..95040c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/bd6602.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.wgsl
new file mode 100644
index 0000000..f133558
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl
new file mode 100644
index 0000000..e3d846c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<bgra8unorm, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_c06463() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..43c2b2e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c06463.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..43c2b2e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c06463.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.glsl
new file mode 100644
index 0000000..0f2227a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_c06463() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_c06463();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_c06463() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_c06463();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_c06463() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_c06463();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..f075597
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.spvasm
new file mode 100644
index 0000000..e9e81f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c06463.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.wgsl
new file mode 100644
index 0000000..c099c6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c06463.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl
new file mode 100644
index 0000000..d30d525
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32float, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_c1c664() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ae8b352
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c1c664.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ae8b352
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c1c664.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.glsl
new file mode 100644
index 0000000..cb9de3b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_c1c664() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_c1c664();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_c1c664() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_c1c664();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_c1c664() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_c1c664();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..82fd1bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.spvasm
new file mode 100644
index 0000000..05de49d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c1c664.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.wgsl
new file mode 100644
index 0000000..dd3d7b0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1c664.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl
new file mode 100644
index 0000000..195312e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_c1f760() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..64d49c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c1f760.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..64d49c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c1f760.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.glsl
new file mode 100644
index 0000000..a5fd0ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c1f760() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_c1f760();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c1f760() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_c1f760();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c1f760() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_c1f760();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..8caceb2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.spvasm
new file mode 100644
index 0000000..85558b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c1f760.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.wgsl
new file mode 100644
index 0000000..0196d93
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c1f760.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl
new file mode 100644
index 0000000..ec08dd7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32float, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_c33478() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..32dc2bc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c33478.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..32dc2bc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c33478.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.glsl
new file mode 100644
index 0000000..2a7221e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_c33478() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_c33478();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_c33478() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_c33478();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_c33478() {
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_c33478();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.msl
new file mode 100644
index 0000000..f576e7d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.spvasm
new file mode 100644
index 0000000..fc9c558
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c33478.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.wgsl
new file mode 100644
index 0000000..306e65f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c33478.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl
new file mode 100644
index 0000000..9d003e6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_c35268() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d00cfab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c35268.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d00cfab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c35268.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.glsl
new file mode 100644
index 0000000..81847a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c35268() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_c35268();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c35268() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_c35268();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c35268() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_c35268();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..81c849a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.spvasm
new file mode 100644
index 0000000..ff6099e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c35268.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.wgsl
new file mode 100644
index 0000000..fb41b21
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl
new file mode 100644
index 0000000..923155b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_c63f05() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..cdb069a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c63f05.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..cdb069a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c63f05.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.glsl
new file mode 100644
index 0000000..31876d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_c63f05() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_c63f05();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_c63f05() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_c63f05();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_c63f05() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_c63f05();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..02f37ac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.spvasm
new file mode 100644
index 0000000..5868167
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c63f05.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.wgsl
new file mode 100644
index 0000000..f1fcf9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c63f05.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl
new file mode 100644
index 0000000..f9264b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_c79451() {
+  textureStore(arg_0, 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..91cdc89
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c79451.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..91cdc89
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c79451.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.glsl
new file mode 100644
index 0000000..90e3309
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_c79451() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_c79451();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_c79451() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_c79451();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_c79451() {
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_c79451();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..e12d2b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.spvasm
new file mode 100644
index 0000000..9618e84
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/c79451.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.wgsl
new file mode 100644
index 0000000..b0f2a84
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/c79451.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl
new file mode 100644
index 0000000..7e4bd4d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32float, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_ccac20() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7d2edff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ccac20.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7d2edff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ccac20.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.glsl
new file mode 100644
index 0000000..869cd3c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_ccac20() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_ccac20();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_ccac20() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_ccac20();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_ccac20() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_ccac20();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..f3995f4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.spvasm
new file mode 100644
index 0000000..d6cef27
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ccac20.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.wgsl
new file mode 100644
index 0000000..d6638cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ccac20.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl
new file mode 100644
index 0000000..2077640
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_ceb832() {
+  textureStore(arg_0, vec2<u32>(1u), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1a20c45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ceb832.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1a20c45
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ceb832.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.glsl
new file mode 100644
index 0000000..0d997e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ceb832() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_ceb832();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ceb832() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_ceb832();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ceb832() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_ceb832();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..1a56963
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.spvasm
new file mode 100644
index 0000000..742c2a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ceb832.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.wgsl
new file mode 100644
index 0000000..70e51ab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl
new file mode 100644
index 0000000..b3c24c0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_d0d62c() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ef4495e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d0d62c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ef4495e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d0d62c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.glsl
new file mode 100644
index 0000000..081c1c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_d0d62c() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_d0d62c();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_d0d62c() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_d0d62c();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_d0d62c() {
+  imageStore(arg_0, ivec2(1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_d0d62c();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..ef61074
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.spvasm
new file mode 100644
index 0000000..9715792
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d0d62c.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.wgsl
new file mode 100644
index 0000000..cdb12bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0d62c.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl
new file mode 100644
index 0000000..afa3927
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8unorm, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_d0fadc() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..adf369b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d0fadc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..adf369b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d0fadc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.glsl
new file mode 100644
index 0000000..cf82a53
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_d0fadc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_d0fadc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_d0fadc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_d0fadc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_d0fadc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_d0fadc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..2beb563
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.spvasm
new file mode 100644
index 0000000..608deb7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d0fadc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.wgsl
new file mode 100644
index 0000000..8a2e549
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d0fadc.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl
new file mode 100644
index 0000000..285dfcb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_d19db4() {
+  textureStore(arg_0, vec3<i32>(1i), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..317e188
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d19db4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..317e188
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d19db4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.glsl
new file mode 100644
index 0000000..0bbc432
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_d19db4() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_d19db4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_d19db4() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_d19db4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_d19db4() {
+  imageStore(arg_0, ivec3(1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_d19db4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.msl
new file mode 100644
index 0000000..758ea41
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.spvasm
new file mode 100644
index 0000000..1df691c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d19db4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.wgsl
new file mode 100644
index 0000000..3eb48a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d19db4.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl
new file mode 100644
index 0000000..a8dd6f9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8unorm, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_d1ab82() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..db5c623
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d1ab82.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..db5c623
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d1ab82.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.glsl
new file mode 100644
index 0000000..1df8b16
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_d1ab82() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_d1ab82();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_d1ab82() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_d1ab82();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_d1ab82() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_d1ab82();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..1bf37c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.spvasm
new file mode 100644
index 0000000..62e2e36
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d1ab82.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.wgsl
new file mode 100644
index 0000000..5a750af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d1ab82.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl
new file mode 100644
index 0000000..a8246b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_d3a22b() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a761eb5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d3a22b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a761eb5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d3a22b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.glsl
new file mode 100644
index 0000000..34be108
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_d3a22b() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_d3a22b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_d3a22b() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_d3a22b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_d3a22b() {
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_d3a22b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..d470856
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.spvasm
new file mode 100644
index 0000000..cb45a43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d3a22b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.wgsl
new file mode 100644
index 0000000..d9e2685
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d3a22b.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl
new file mode 100644
index 0000000..07fd7af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8snorm, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_d86d33() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eabf9e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d86d33.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eabf9e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d86d33.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.glsl
new file mode 100644
index 0000000..d50339c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_d86d33() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_d86d33();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_d86d33() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_d86d33();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_d86d33() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_d86d33();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..b92297f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.spvasm
new file mode 100644
index 0000000..b0b95fb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/d86d33.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.wgsl
new file mode 100644
index 0000000..26c44a6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/d86d33.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl
new file mode 100644
index 0000000..390b9f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_da530c() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e276f94
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/da530c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e276f94
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/da530c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.glsl
new file mode 100644
index 0000000..05cf301
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_da530c() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_da530c();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_da530c() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_da530c();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_da530c() {
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_da530c();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..d3bc8c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.spvasm
new file mode 100644
index 0000000..7610ef2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/da530c.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.wgsl
new file mode 100644
index 0000000..106222d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/da530c.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl
new file mode 100644
index 0000000..548e6a8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_db5128() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4201538
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/db5128.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4201538
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/db5128.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.glsl
new file mode 100644
index 0000000..63c4f26
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_db5128() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_db5128();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_db5128() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_db5128();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_db5128() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_db5128();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..3cd6800
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.spvasm
new file mode 100644
index 0000000..a00bdd1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/db5128.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.wgsl
new file mode 100644
index 0000000..d21b5b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/db5128.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl
new file mode 100644
index 0000000..a1c5745
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32float, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_dce0e2() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0da5bae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/dce0e2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0da5bae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/dce0e2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.glsl
new file mode 100644
index 0000000..cb062d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_dce0e2() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_dce0e2();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_dce0e2() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_dce0e2();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_dce0e2() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_dce0e2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..ab80132
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.spvasm
new file mode 100644
index 0000000..1967454
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/dce0e2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.wgsl
new file mode 100644
index 0000000..e8f1439
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl
new file mode 100644
index 0000000..e7490c5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_dd8b29() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..33bcb8d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/dd8b29.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..33bcb8d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/dd8b29.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.glsl
new file mode 100644
index 0000000..8dd01b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_dd8b29() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_dd8b29();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_dd8b29() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_dd8b29();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_dd8b29() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_dd8b29();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..b1a0d4f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.spvasm
new file mode 100644
index 0000000..14e73bf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/dd8b29.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.wgsl
new file mode 100644
index 0000000..cbae22f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/dd8b29.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl
new file mode 100644
index 0000000..c9dcafd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8snorm, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_de38e5() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c9fc8ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/de38e5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c9fc8ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/de38e5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.glsl
new file mode 100644
index 0000000..36c183b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_de38e5() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_de38e5();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_de38e5() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_de38e5();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_de38e5() {
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_de38e5();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c89be40
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.spvasm
new file mode 100644
index 0000000..080dee1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/de38e5.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.wgsl
new file mode 100644
index 0000000..8348626
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/de38e5.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl
new file mode 100644
index 0000000..9b0d626
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_df0c51() {
+  textureStore(arg_0, vec3<u32>(1u), vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7bacbd1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/df0c51.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7bacbd1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/df0c51.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.glsl
new file mode 100644
index 0000000..1ae1195
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_df0c51() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_df0c51();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_df0c51() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_df0c51();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_df0c51() {
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_df0c51();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..f3c4a53
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.spvasm
new file mode 100644
index 0000000..9a27a6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/df0c51.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.wgsl
new file mode 100644
index 0000000..6de453e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl
new file mode 100644
index 0000000..231c2e3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_e077e7() {
+  textureStore(arg_0, 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..da430fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e077e7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..da430fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e077e7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.glsl
new file mode 100644
index 0000000..f38d3a8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e077e7() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_e077e7();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e077e7() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_e077e7();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e077e7() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_e077e7();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.msl
new file mode 100644
index 0000000..fa9ad2e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c4afda
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e077e7.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.wgsl
new file mode 100644
index 0000000..f380495
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e077e7.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl
new file mode 100644
index 0000000..b5b1198
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32float, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_e1784d() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6d5d596
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e1784d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6d5d596
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e1784d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.glsl
new file mode 100644
index 0000000..2e27c41
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e1784d() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_e1784d();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e1784d() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_e1784d();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e1784d() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_e1784d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..265fc9b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.spvasm
new file mode 100644
index 0000000..d64199b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e1784d.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.wgsl
new file mode 100644
index 0000000..310d7bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e1784d.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl
new file mode 100644
index 0000000..9d3333e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<bgra8unorm, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_e46fd8() {
+  textureStore(arg_0, vec2<u32>(1u), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b8c7070
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e46fd8.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b8c7070
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e46fd8.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.glsl
new file mode 100644
index 0000000..f4b1bb7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_e46fd8() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_e46fd8();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_e46fd8() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_e46fd8();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_e46fd8() {
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_e46fd8();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..72e41a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.spvasm
new file mode 100644
index 0000000..ee06d50
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e46fd8.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.wgsl
new file mode 100644
index 0000000..b274174
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e46fd8.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl
new file mode 100644
index 0000000..fb127b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16float, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_e72bdc() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f66cca0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e72bdc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f66cca0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e72bdc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.glsl
new file mode 100644
index 0000000..5ca3352
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e72bdc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_e72bdc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e72bdc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_e72bdc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e72bdc() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_e72bdc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..3a6585a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.spvasm
new file mode 100644
index 0000000..e533fbc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e72bdc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.wgsl
new file mode 100644
index 0000000..896f547
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e72bdc.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl
new file mode 100644
index 0000000..a587452
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_e87f6e() {
+  textureStore(arg_0, 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3bc7d64
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e87f6e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3bc7d64
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e87f6e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.glsl
new file mode 100644
index 0000000..bfe6b81
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e87f6e() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_e87f6e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e87f6e() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_e87f6e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e87f6e() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_e87f6e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..b39c4de
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.spvasm
new file mode 100644
index 0000000..9e8d119
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/e87f6e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.wgsl
new file mode 100644
index 0000000..9bf54a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/e87f6e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl
new file mode 100644
index 0000000..abbdad2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_ea30d2() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..14978f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ea30d2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..14978f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ea30d2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.glsl
new file mode 100644
index 0000000..9d6eb31
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.glsl
@@ -0,0 +1,75 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ea30d2() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_ea30d2();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ea30d2() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_ea30d2();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ea30d2() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_ea30d2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.msl
new file mode 100644
index 0000000..38d0470
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.spvasm
new file mode 100644
index 0000000..6b26606
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ea30d2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.wgsl
new file mode 100644
index 0000000..42e23db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl
new file mode 100644
index 0000000..8af84b2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_f05928() {
+  textureStore(arg_0, vec2<i32>(1i), 1u, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..df35da7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f05928.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..df35da7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f05928.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.glsl
new file mode 100644
index 0000000..2464367
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f05928() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_f05928();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f05928() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_f05928();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f05928() {
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_f05928();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..bff21be
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.spvasm
new file mode 100644
index 0000000..6d0ba0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f05928.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.wgsl
new file mode 100644
index 0000000..613f3fe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f05928.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl
new file mode 100644
index 0000000..df5abbf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_f64d69() {
+  textureStore(arg_0, 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..45a5a7b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f64d69.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..45a5a7b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f64d69.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.glsl
new file mode 100644
index 0000000..87f10bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_f64d69() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_f64d69();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_f64d69() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_f64d69();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_f64d69() {
+  imageStore(arg_0, ivec2(1, 0), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_f64d69();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..c0c64eb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.spvasm
new file mode 100644
index 0000000..02dd7bf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f64d69.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.wgsl
new file mode 100644
index 0000000..96624f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f64d69.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl
new file mode 100644
index 0000000..dc12d82
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8unorm, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_f6f392() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a42a20d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f6f392.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a42a20d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f6f392.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.glsl
new file mode 100644
index 0000000..04246a2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_f6f392() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_f6f392();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_f6f392() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_f6f392();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_f6f392() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_f6f392();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..aeef1e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.spvasm
new file mode 100644
index 0000000..67a50bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f6f392.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.wgsl
new file mode 100644
index 0000000..c9e7e22
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f6f392.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl
new file mode 100644
index 0000000..72f7442
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_f8aaf9() {
+  textureStore(arg_0, vec2<i32>(1i), 1i, vec4<i32>(1i));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c490717
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f8aaf9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c490717
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f8aaf9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.glsl
new file mode 100644
index 0000000..3be152e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f8aaf9() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+vec4 vertex_main() {
+  textureStore_f8aaf9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f8aaf9() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void fragment_main() {
+  textureStore_f8aaf9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f8aaf9() {
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
+}
+
+void compute_main() {
+  textureStore_f8aaf9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..8553215
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.spvasm
new file mode 100644
index 0000000..bd33fc6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f8aaf9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.wgsl
new file mode 100644
index 0000000..c17fe88
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f8aaf9.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl
new file mode 100644
index 0000000..589f462
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8snorm, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_f975a0() {
+  textureStore(arg_0, vec2<i32>(1i), vec4<f32>(1.f));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..82c3230
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f975a0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..82c3230
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f975a0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.glsl
new file mode 100644
index 0000000..b9e2d39
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_f975a0() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+vec4 vertex_main() {
+  textureStore_f975a0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_f975a0() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void fragment_main() {
+  textureStore_f975a0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_f975a0() {
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
+}
+
+void compute_main() {
+  textureStore_f975a0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..a9519dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.spvasm
new file mode 100644
index 0000000..4f81d78
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/f975a0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.wgsl
new file mode 100644
index 0000000..0cbb064
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/f975a0.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl
new file mode 100644
index 0000000..489216d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_fc916e() {
+  textureStore(arg_0, vec2<u32>(1u), 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c91dac4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/fc916e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c91dac4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/fc916e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.glsl
new file mode 100644
index 0000000..a3d9c2c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_fc916e() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_fc916e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_fc916e() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_fc916e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_fc916e() {
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_fc916e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..a36fcd5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.spvasm
new file mode 100644
index 0000000..458ec7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/fc916e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.wgsl
new file mode 100644
index 0000000..b0e1053
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/fc916e.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl
new file mode 100644
index 0000000..473d6e1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_ff23b3() {
+  textureStore(arg_0, 1i, vec4<u32>(1u));
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
diff --git a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0334aa0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ff23b3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0334aa0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ff23b3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.glsl
new file mode 100644
index 0000000..ebb3802
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.glsl
@@ -0,0 +1,52 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_ff23b3() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+vec4 vertex_main() {
+  textureStore_ff23b3();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_ff23b3() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void fragment_main() {
+  textureStore_ff23b3();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_ff23b3() {
+  imageStore(arg_0, ivec2(1, 0), uvec4(1u));
+}
+
+void compute_main() {
+  textureStore_ff23b3();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  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
new file mode 100644
index 0000000..4925f1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
+
+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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.spvasm
new file mode 100644
index 0000000..a7e85be
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.spvasm
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
+
+Failed to generate: builtins/gen/literal/textureStore/ff23b3.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.wgsl
new file mode 100644
index 0000000..2a9b7b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureStore/ff23b3.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+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));
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl b/test/tint/builtins/gen/var/textureStore/031506.wgsl
new file mode 100644
index 0000000..a959d4c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32float, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_031506() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..822aa74
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_031506() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
+
+Failed to generate: builtins/gen/var/textureStore/031506.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..822aa74
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_031506() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
+
+Failed to generate: builtins/gen/var/textureStore/031506.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.glsl
new file mode 100644
index 0000000..6c6dd52
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_031506() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_031506();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_031506() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_031506();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_031506() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_031506();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.msl
new file mode 100644
index 0000000..a3e3fc4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_031506() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.spvasm
new file mode 100644
index 0000000..8b9abbc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_031506() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
+
+Failed to generate: builtins/gen/var/textureStore/031506.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.wgsl
new file mode 100644
index 0000000..78c7878
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_031506() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_031506();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_031506();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_031506();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl
new file mode 100644
index 0000000..b328fc7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8unorm, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_036d0e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5d3dd29
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_036d0e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/036d0e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5d3dd29
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_036d0e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/036d0e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.glsl
new file mode 100644
index 0000000..aecef68
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_036d0e() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_036d0e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_036d0e() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_036d0e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_036d0e() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_036d0e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.msl
new file mode 100644
index 0000000..9269fe2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_036d0e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.spvasm
new file mode 100644
index 0000000..dfedbea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_036d0e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/036d0e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.wgsl
new file mode 100644
index 0000000..988a91a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_036d0e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_036d0e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_036d0e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_036d0e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl
new file mode 100644
index 0000000..44a6ac2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_03e7a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6305346
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_03e7a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/03e7a0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6305346
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_03e7a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/03e7a0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.glsl
new file mode 100644
index 0000000..851f13f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_03e7a0() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_03e7a0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_03e7a0() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_03e7a0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_03e7a0() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_03e7a0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.msl
new file mode 100644
index 0000000..1f4b4dc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_03e7a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.spvasm
new file mode 100644
index 0000000..deb25c1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_03e7a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/03e7a0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.wgsl
new file mode 100644
index 0000000..00753bd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_03e7a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_03e7a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_03e7a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_03e7a0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl b/test/tint/builtins/gen/var/textureStore/042b06.wgsl
new file mode 100644
index 0000000..87e34d1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8snorm, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_042b06() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e432d1c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_042b06() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
+
+Failed to generate: builtins/gen/var/textureStore/042b06.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e432d1c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_042b06() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
+
+Failed to generate: builtins/gen/var/textureStore/042b06.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.glsl
new file mode 100644
index 0000000..e17aaf1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_042b06() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_042b06();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_042b06() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_042b06();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_042b06() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_042b06();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.msl
new file mode 100644
index 0000000..35bbfba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_042b06() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.spvasm
new file mode 100644
index 0000000..1ad3148
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_042b06() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
+
+Failed to generate: builtins/gen/var/textureStore/042b06.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.wgsl
new file mode 100644
index 0000000..8223cd2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_042b06() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_042b06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_042b06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_042b06();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl
new file mode 100644
index 0000000..ae2fc56
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8unorm, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_052a4e() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..653dc2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_052a4e() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/052a4e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..653dc2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_052a4e() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/052a4e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.glsl
new file mode 100644
index 0000000..5bf0c22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_052a4e() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_052a4e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_052a4e() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_052a4e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_052a4e() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_052a4e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.msl
new file mode 100644
index 0000000..770ff14
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_052a4e() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.spvasm
new file mode 100644
index 0000000..e15f630
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_052a4e() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/052a4e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.wgsl
new file mode 100644
index 0000000..be422e9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_052a4e() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_052a4e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_052a4e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_052a4e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl b/test/tint/builtins/gen/var/textureStore/053664.wgsl
new file mode 100644
index 0000000..7d2510a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32float, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_053664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..051d044
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_053664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
+
+Failed to generate: builtins/gen/var/textureStore/053664.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..051d044
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_053664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
+
+Failed to generate: builtins/gen/var/textureStore/053664.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.glsl
new file mode 100644
index 0000000..dd351eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_053664() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_053664();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_053664() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_053664();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_053664() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_053664();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.msl
new file mode 100644
index 0000000..80f1c64
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_053664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.spvasm
new file mode 100644
index 0000000..1e2489b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_053664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
+
+Failed to generate: builtins/gen/var/textureStore/053664.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.wgsl
new file mode 100644
index 0000000..ee2c9ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_053664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_053664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_053664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_053664();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl
new file mode 100644
index 0000000..1564ca8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<bgra8unorm, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_09e4d5() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7925443
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_09e4d5() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/09e4d5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7925443
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_09e4d5() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/09e4d5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.glsl
new file mode 100644
index 0000000..8fd5fc9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_09e4d5() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_09e4d5();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_09e4d5() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2.bgra);
+}
+
+void fragment_main() {
+  textureStore_09e4d5();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_09e4d5() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2.bgra);
+}
+
+void compute_main() {
+  textureStore_09e4d5();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.msl
new file mode 100644
index 0000000..1056284
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_09e4d5() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.spvasm
new file mode 100644
index 0000000..1b32b58
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_09e4d5() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/09e4d5.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.wgsl
new file mode 100644
index 0000000..1da6380
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_09e4d5() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_09e4d5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_09e4d5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_09e4d5();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl
new file mode 100644
index 0000000..95527ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_0ade9a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bb483e4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_0ade9a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/0ade9a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bb483e4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_0ade9a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/0ade9a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.glsl
new file mode 100644
index 0000000..37ca096
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_0ade9a() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_0ade9a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_0ade9a() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_0ade9a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_0ade9a() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_0ade9a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.msl
new file mode 100644
index 0000000..58535eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_0ade9a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.spvasm
new file mode 100644
index 0000000..4496659
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_0ade9a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/0ade9a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.wgsl
new file mode 100644
index 0000000..b903fa0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_0ade9a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ade9a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ade9a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ade9a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl
new file mode 100644
index 0000000..53b17da
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32float, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_0ff97a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e717769
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_0ff97a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/0ff97a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e717769
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_0ff97a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/0ff97a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.glsl
new file mode 100644
index 0000000..9ec94fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_0ff97a() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_0ff97a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_0ff97a() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_0ff97a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_0ff97a() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_0ff97a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.msl
new file mode 100644
index 0000000..9abff65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_0ff97a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.spvasm
new file mode 100644
index 0000000..8bfd4be
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_0ff97a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/0ff97a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.wgsl
new file mode 100644
index 0000000..d961080
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_0ff97a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_0ff97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_0ff97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_0ff97a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl b/test/tint/builtins/gen/var/textureStore/101325.wgsl
new file mode 100644
index 0000000..265d8db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_101325() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0c452ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_101325() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
+
+Failed to generate: builtins/gen/var/textureStore/101325.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0c452ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_101325() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
+
+Failed to generate: builtins/gen/var/textureStore/101325.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.glsl
new file mode 100644
index 0000000..607d593
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_101325() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_101325();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_101325() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_101325();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_101325() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_101325();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.msl
new file mode 100644
index 0000000..b5df00d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_101325() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.spvasm
new file mode 100644
index 0000000..8457a29
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_101325() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
+
+Failed to generate: builtins/gen/var/textureStore/101325.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.wgsl
new file mode 100644
index 0000000..ac4c61f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_101325() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_101325();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_101325();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_101325();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl b/test/tint/builtins/gen/var/textureStore/145061.wgsl
new file mode 100644
index 0000000..667d7cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_145061() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2afd326
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_145061() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
+
+Failed to generate: builtins/gen/var/textureStore/145061.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2afd326
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_145061() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
+
+Failed to generate: builtins/gen/var/textureStore/145061.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.glsl
new file mode 100644
index 0000000..58269e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_145061() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_145061();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_145061() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_145061();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_145061() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_145061();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.msl
new file mode 100644
index 0000000..6705be4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_145061() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.spvasm
new file mode 100644
index 0000000..7f0d259
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_145061() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
+
+Failed to generate: builtins/gen/var/textureStore/145061.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.wgsl
new file mode 100644
index 0000000..212cb65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, read_write>;
+
+fn textureStore_145061() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_145061();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_145061();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_145061();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl b/test/tint/builtins/gen/var/textureStore/178e69.wgsl
new file mode 100644
index 0000000..5d37457
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<bgra8unorm, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_178e69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..cedb3ef
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_178e69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
+
+Failed to generate: builtins/gen/var/textureStore/178e69.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..cedb3ef
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_178e69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
+
+Failed to generate: builtins/gen/var/textureStore/178e69.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.glsl
new file mode 100644
index 0000000..0c791cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_178e69() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_178e69();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_178e69() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2.bgra);
+}
+
+void fragment_main() {
+  textureStore_178e69();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_178e69() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2.bgra);
+}
+
+void compute_main() {
+  textureStore_178e69();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.msl
new file mode 100644
index 0000000..7484684
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_178e69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.spvasm
new file mode 100644
index 0000000..5fa60ca
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_178e69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
+
+Failed to generate: builtins/gen/var/textureStore/178e69.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.wgsl
new file mode 100644
index 0000000..140bb08
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<bgra8unorm, read_write>;
+
+fn textureStore_178e69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_178e69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_178e69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_178e69();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl
new file mode 100644
index 0000000..23a6586
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32float, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_195d1b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e3ac2f6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_195d1b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/195d1b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e3ac2f6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_195d1b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/195d1b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.glsl
new file mode 100644
index 0000000..65e15b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_195d1b() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_195d1b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_195d1b() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_195d1b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_195d1b() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_195d1b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.msl
new file mode 100644
index 0000000..1c80db6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_195d1b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.spvasm
new file mode 100644
index 0000000..d04bce6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_195d1b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/195d1b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.wgsl
new file mode 100644
index 0000000..84211b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_195d1b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_195d1b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_195d1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_195d1b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl b/test/tint/builtins/gen/var/textureStore/197637.wgsl
new file mode 100644
index 0000000..b7dc3c3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32float, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_197637() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c6aea21
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_197637() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
+
+Failed to generate: builtins/gen/var/textureStore/197637.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c6aea21
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_197637() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
+
+Failed to generate: builtins/gen/var/textureStore/197637.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.glsl
new file mode 100644
index 0000000..b51c04c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_197637() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_197637();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_197637() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_197637();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_197637() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_197637();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.msl
new file mode 100644
index 0000000..fe59677
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_197637() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.spvasm
new file mode 100644
index 0000000..0ccda80
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_197637() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
+
+Failed to generate: builtins/gen/var/textureStore/197637.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.wgsl
new file mode 100644
index 0000000..1e20890
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_197637() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_197637();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_197637();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_197637();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl
new file mode 100644
index 0000000..b35c875
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_1a6c0b() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..078f7c4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_1a6c0b() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1a6c0b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..078f7c4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_1a6c0b() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1a6c0b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.glsl
new file mode 100644
index 0000000..b150f26
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1a6c0b() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_1a6c0b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1a6c0b() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_1a6c0b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1a6c0b() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_1a6c0b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.msl
new file mode 100644
index 0000000..b96f30a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_1a6c0b() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.spvasm
new file mode 100644
index 0000000..1fadd2a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_1a6c0b() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1a6c0b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.wgsl
new file mode 100644
index 0000000..29a27bd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_1a6c0b() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1a6c0b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1a6c0b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1a6c0b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl b/test/tint/builtins/gen/var/textureStore/1af236.wgsl
new file mode 100644
index 0000000..7d7b630
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16float, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_1af236() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4d028d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_1af236() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1af236.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4d028d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_1af236() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1af236.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.glsl
new file mode 100644
index 0000000..bf16a47
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_1af236() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_1af236();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_1af236() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_1af236();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_1af236() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_1af236();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.msl
new file mode 100644
index 0000000..6331434
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_1af236() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.spvasm
new file mode 100644
index 0000000..c01a31d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_1af236() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1af236.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.wgsl
new file mode 100644
index 0000000..1ac5bf5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_1af236() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1af236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1af236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1af236();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl
new file mode 100644
index 0000000..5fb6681
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_1e9fbd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8096da3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_1e9fbd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1e9fbd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8096da3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_1e9fbd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1e9fbd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.glsl
new file mode 100644
index 0000000..bdd8daf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1e9fbd() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_1e9fbd();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1e9fbd() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_1e9fbd();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_1e9fbd() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_1e9fbd();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.msl
new file mode 100644
index 0000000..d2c00a3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_1e9fbd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.spvasm
new file mode 100644
index 0000000..4905990
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_1e9fbd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1e9fbd.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.wgsl
new file mode 100644
index 0000000..7f2b1a1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_1e9fbd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1e9fbd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1e9fbd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1e9fbd();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl
new file mode 100644
index 0000000..cc421d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_1fef04() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8f3406f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_1fef04() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1fef04.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8f3406f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_1fef04() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1fef04.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.glsl
new file mode 100644
index 0000000..2fe86b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_1fef04() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_1fef04();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_1fef04() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_1fef04();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_1fef04() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_1fef04();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.msl
new file mode 100644
index 0000000..65f5d93
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_1fef04() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.spvasm
new file mode 100644
index 0000000..de499ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_1fef04() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
+
+Failed to generate: builtins/gen/var/textureStore/1fef04.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.wgsl
new file mode 100644
index 0000000..0e6b296
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_1fef04() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_1fef04();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_1fef04();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_1fef04();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl b/test/tint/builtins/gen/var/textureStore/2046db.wgsl
new file mode 100644
index 0000000..6d264cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16float, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_2046db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e29af62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_2046db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2046db.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e29af62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_2046db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2046db.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.glsl
new file mode 100644
index 0000000..0556142
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_2046db() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_2046db();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_2046db() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_2046db();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_2046db() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_2046db();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.msl
new file mode 100644
index 0000000..c38c278
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_2046db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.spvasm
new file mode 100644
index 0000000..66d42e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_2046db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2046db.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.wgsl
new file mode 100644
index 0000000..1ec56f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_2046db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2046db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2046db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2046db();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl
new file mode 100644
index 0000000..ed2e036
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_2173fd() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..883e446
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_2173fd() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2173fd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..883e446
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_2173fd() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2173fd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.glsl
new file mode 100644
index 0000000..3caf72b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_2173fd() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_2173fd();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_2173fd() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_2173fd();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_2173fd() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_2173fd();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.msl
new file mode 100644
index 0000000..1490945
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_2173fd() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.spvasm
new file mode 100644
index 0000000..d9b5794
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_2173fd() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2173fd.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.wgsl
new file mode 100644
index 0000000..8bace82
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_2173fd() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2173fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2173fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2173fd();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl
new file mode 100644
index 0000000..ae352a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_24e6b7() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..13fdebe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_24e6b7() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/24e6b7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..13fdebe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_24e6b7() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/24e6b7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.glsl
new file mode 100644
index 0000000..01f0d3c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_24e6b7() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_24e6b7();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_24e6b7() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_24e6b7();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_24e6b7() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_24e6b7();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.msl
new file mode 100644
index 0000000..7b0bbd7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_24e6b7() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.spvasm
new file mode 100644
index 0000000..edc6e07
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_24e6b7() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/24e6b7.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.wgsl
new file mode 100644
index 0000000..cd09b8f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_24e6b7() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_24e6b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_24e6b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_24e6b7();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl
new file mode 100644
index 0000000..41f8474
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8snorm, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_26a26d() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9276c5a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_26a26d() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/26a26d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9276c5a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_26a26d() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/26a26d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.glsl
new file mode 100644
index 0000000..819f03e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_26a26d() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_26a26d();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_26a26d() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_26a26d();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_26a26d() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_26a26d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.msl
new file mode 100644
index 0000000..1dc632c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_26a26d() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.spvasm
new file mode 100644
index 0000000..2fcfb6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_26a26d() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/26a26d.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.wgsl
new file mode 100644
index 0000000..86aa4b7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_26a26d() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_26a26d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_26a26d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_26a26d();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl b/test/tint/builtins/gen/var/textureStore/28e109.wgsl
new file mode 100644
index 0000000..15eb206
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_28e109() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..885bc22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_28e109() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
+
+Failed to generate: builtins/gen/var/textureStore/28e109.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..885bc22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_28e109() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
+
+Failed to generate: builtins/gen/var/textureStore/28e109.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.glsl
new file mode 100644
index 0000000..47de48f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_28e109() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_28e109();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_28e109() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_28e109();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_28e109() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_28e109();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.msl
new file mode 100644
index 0000000..25b490e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_28e109() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.spvasm
new file mode 100644
index 0000000..beea9a3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_28e109() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
+
+Failed to generate: builtins/gen/var/textureStore/28e109.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.wgsl
new file mode 100644
index 0000000..a0d88e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_28e109() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_28e109();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_28e109();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_28e109();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl
new file mode 100644
index 0000000..0dae2a1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_2a60c9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b565a8b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_2a60c9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2a60c9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b565a8b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_2a60c9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2a60c9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.glsl
new file mode 100644
index 0000000..7c2961b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_2a60c9() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_2a60c9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_2a60c9() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_2a60c9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_2a60c9() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_2a60c9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.msl
new file mode 100644
index 0000000..6130075
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_2a60c9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.spvasm
new file mode 100644
index 0000000..f518718
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_2a60c9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2a60c9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.wgsl
new file mode 100644
index 0000000..df30af5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_2a60c9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2a60c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2a60c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2a60c9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl
new file mode 100644
index 0000000..8c3004a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_2addd6() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..55d06b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_2addd6() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2addd6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..55d06b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_2addd6() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2addd6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.glsl
new file mode 100644
index 0000000..148b9b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_2addd6() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_2addd6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_2addd6() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_2addd6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_2addd6() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_2addd6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.msl
new file mode 100644
index 0000000..413a9e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_2addd6() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.spvasm
new file mode 100644
index 0000000..090c92d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_2addd6() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2addd6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.wgsl
new file mode 100644
index 0000000..57ae30e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_2addd6() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2addd6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2addd6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2addd6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl
new file mode 100644
index 0000000..1269367
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8snorm, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_2c76db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d48af1b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_2c76db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2c76db.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d48af1b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_2c76db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2c76db.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.glsl
new file mode 100644
index 0000000..d24a4e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_2c76db() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_2c76db();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_2c76db() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_2c76db();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_2c76db() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_2c76db();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.msl
new file mode 100644
index 0000000..1efd199
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_2c76db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.spvasm
new file mode 100644
index 0000000..c6cc758
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_2c76db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2c76db.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.wgsl
new file mode 100644
index 0000000..4c2f9cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_2c76db() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2c76db();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2c76db();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2c76db();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl
new file mode 100644
index 0000000..6e08a93
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_2f29ea() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7db3190
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_2f29ea() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2f29ea.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7db3190
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_2f29ea() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2f29ea.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.glsl
new file mode 100644
index 0000000..a315409
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_2f29ea() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_2f29ea();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_2f29ea() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_2f29ea();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_2f29ea() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_2f29ea();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.msl
new file mode 100644
index 0000000..a5e8912
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_2f29ea() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.spvasm
new file mode 100644
index 0000000..9087e48
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_2f29ea() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
+
+Failed to generate: builtins/gen/var/textureStore/2f29ea.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.wgsl
new file mode 100644
index 0000000..6d187cb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_2f29ea() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_2f29ea();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_2f29ea();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_2f29ea();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl b/test/tint/builtins/gen/var/textureStore/312f27.wgsl
new file mode 100644
index 0000000..16f27a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32float, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_312f27() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..382e6af
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_312f27() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
+
+Failed to generate: builtins/gen/var/textureStore/312f27.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..382e6af
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_312f27() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
+
+Failed to generate: builtins/gen/var/textureStore/312f27.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.glsl
new file mode 100644
index 0000000..d7814e7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_312f27() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_312f27();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_312f27() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_312f27();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_312f27() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_312f27();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.msl
new file mode 100644
index 0000000..20f73c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_312f27() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.spvasm
new file mode 100644
index 0000000..a4f7c59
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_312f27() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
+
+Failed to generate: builtins/gen/var/textureStore/312f27.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.wgsl
new file mode 100644
index 0000000..e82535c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_312f27() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_312f27();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_312f27();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_312f27();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl
new file mode 100644
index 0000000..bb4aab3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_32d3d6() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..759c7bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_32d3d6() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/32d3d6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..759c7bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_32d3d6() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/32d3d6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.glsl
new file mode 100644
index 0000000..462afc5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_32d3d6() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_32d3d6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_32d3d6() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_32d3d6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_32d3d6() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_32d3d6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.msl
new file mode 100644
index 0000000..db71ea9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_32d3d6() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.spvasm
new file mode 100644
index 0000000..06abe1f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_32d3d6() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/32d3d6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.wgsl
new file mode 100644
index 0000000..78e3a99
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_32d3d6() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_32d3d6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_32d3d6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_32d3d6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl
new file mode 100644
index 0000000..2074e9c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8snorm, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_3310d3() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bd40e83
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_3310d3() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3310d3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bd40e83
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_3310d3() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3310d3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.glsl
new file mode 100644
index 0000000..ec14ea4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_3310d3() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_3310d3();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_3310d3() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_3310d3();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_3310d3() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_3310d3();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.msl
new file mode 100644
index 0000000..80177b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_3310d3() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.spvasm
new file mode 100644
index 0000000..e5b24bd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_3310d3() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3310d3.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.wgsl
new file mode 100644
index 0000000..7c5bea3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_3310d3() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3310d3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3310d3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3310d3();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl b/test/tint/builtins/gen/var/textureStore/345332.wgsl
new file mode 100644
index 0000000..78ed5aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_345332() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f900520
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_345332() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
+
+Failed to generate: builtins/gen/var/textureStore/345332.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f900520
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_345332() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
+
+Failed to generate: builtins/gen/var/textureStore/345332.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.glsl
new file mode 100644
index 0000000..0400e36
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_345332() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_345332();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_345332() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_345332();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_345332() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_345332();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.msl
new file mode 100644
index 0000000..b67a039
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_345332() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.spvasm
new file mode 100644
index 0000000..5fa8a9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_345332() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
+
+Failed to generate: builtins/gen/var/textureStore/345332.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.wgsl
new file mode 100644
index 0000000..4bcb413
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_345332() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_345332();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_345332();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_345332();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl
new file mode 100644
index 0000000..43cc38f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32float, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_3d1ebe() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5ab2140
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_3d1ebe() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3d1ebe.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5ab2140
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_3d1ebe() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3d1ebe.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.glsl
new file mode 100644
index 0000000..d47fa98
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_3d1ebe() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_3d1ebe();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_3d1ebe() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_3d1ebe();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_3d1ebe() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_3d1ebe();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.msl
new file mode 100644
index 0000000..44cbb77
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_3d1ebe() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.spvasm
new file mode 100644
index 0000000..82a94ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_3d1ebe() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3d1ebe.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.wgsl
new file mode 100644
index 0000000..c6c84fa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, read_write>;
+
+fn textureStore_3d1ebe() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d1ebe();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d1ebe();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d1ebe();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl
new file mode 100644
index 0000000..8f203ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_3d96a4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ee97599
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_3d96a4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3d96a4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ee97599
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_3d96a4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3d96a4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.glsl
new file mode 100644
index 0000000..64633d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_3d96a4() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_3d96a4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_3d96a4() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_3d96a4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_3d96a4() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_3d96a4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.msl
new file mode 100644
index 0000000..ffdd4bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_3d96a4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.spvasm
new file mode 100644
index 0000000..062bac3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_3d96a4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3d96a4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.wgsl
new file mode 100644
index 0000000..986cd8e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_3d96a4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3d96a4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3d96a4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3d96a4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl
new file mode 100644
index 0000000..2e4cb0c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32float, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_3e0dc4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b6d3e22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_3e0dc4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3e0dc4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b6d3e22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_3e0dc4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3e0dc4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.glsl
new file mode 100644
index 0000000..fcbb86f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_3e0dc4() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_3e0dc4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_3e0dc4() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_3e0dc4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_3e0dc4() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_3e0dc4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.msl
new file mode 100644
index 0000000..937eb52
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_3e0dc4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.spvasm
new file mode 100644
index 0000000..92c9690
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_3e0dc4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3e0dc4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.wgsl
new file mode 100644
index 0000000..6f965d5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_3e0dc4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3e0dc4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3e0dc4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3e0dc4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl
new file mode 100644
index 0000000..e4b922f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8snorm, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_3f61ca() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ae3f33e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_3f61ca() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3f61ca.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ae3f33e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_3f61ca() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3f61ca.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.glsl
new file mode 100644
index 0000000..71eb274
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_3f61ca() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_3f61ca();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_3f61ca() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_3f61ca();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_3f61ca() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_3f61ca();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.msl
new file mode 100644
index 0000000..4130ea8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_3f61ca() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.spvasm
new file mode 100644
index 0000000..9fe0305
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_3f61ca() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
+
+Failed to generate: builtins/gen/var/textureStore/3f61ca.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.wgsl
new file mode 100644
index 0000000..875cf64
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_3f61ca() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_3f61ca();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_3f61ca();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_3f61ca();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl b/test/tint/builtins/gen/var/textureStore/441222.wgsl
new file mode 100644
index 0000000..68876d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_441222() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f361f62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_441222() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
+
+Failed to generate: builtins/gen/var/textureStore/441222.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f361f62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_441222() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
+
+Failed to generate: builtins/gen/var/textureStore/441222.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.glsl
new file mode 100644
index 0000000..9fb53bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_441222() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_441222();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_441222() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_441222();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_441222() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_441222();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.msl
new file mode 100644
index 0000000..c1d3a93
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_441222() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.spvasm
new file mode 100644
index 0000000..3abba41
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_441222() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
+
+Failed to generate: builtins/gen/var/textureStore/441222.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.wgsl
new file mode 100644
index 0000000..f9f5d2c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, read_write>;
+
+fn textureStore_441222() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_441222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_441222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_441222();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl
new file mode 100644
index 0000000..89e45ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_4483e7() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a71827d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_4483e7() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4483e7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a71827d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_4483e7() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4483e7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.glsl
new file mode 100644
index 0000000..15e64db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4483e7() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_4483e7();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4483e7() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_4483e7();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4483e7() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_4483e7();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.msl
new file mode 100644
index 0000000..52f0e54
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_4483e7() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.spvasm
new file mode 100644
index 0000000..50c3b6b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_4483e7() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4483e7.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.wgsl
new file mode 100644
index 0000000..ba18509
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_4483e7() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4483e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4483e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4483e7();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl b/test/tint/builtins/gen/var/textureStore/44b372.wgsl
new file mode 100644
index 0000000..f1ab2d4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_44b372() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..41c608b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_44b372() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
+
+Failed to generate: builtins/gen/var/textureStore/44b372.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..41c608b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_44b372() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
+
+Failed to generate: builtins/gen/var/textureStore/44b372.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.glsl
new file mode 100644
index 0000000..4fbc767
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_44b372() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_44b372();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_44b372() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_44b372();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_44b372() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_44b372();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.msl
new file mode 100644
index 0000000..02681ef
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_44b372() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.spvasm
new file mode 100644
index 0000000..2d7e7b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_44b372() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
+
+Failed to generate: builtins/gen/var/textureStore/44b372.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.wgsl
new file mode 100644
index 0000000..05d9dd9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_44b372() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_44b372();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_44b372();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_44b372();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl
new file mode 100644
index 0000000..10e4db3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_473ead() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..38a617b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_473ead() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
+
+Failed to generate: builtins/gen/var/textureStore/473ead.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..38a617b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_473ead() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
+
+Failed to generate: builtins/gen/var/textureStore/473ead.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.glsl
new file mode 100644
index 0000000..54ea7de
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_473ead() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_473ead();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_473ead() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_473ead();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_473ead() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_473ead();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.msl
new file mode 100644
index 0000000..4be6792
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_473ead() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.spvasm
new file mode 100644
index 0000000..210efab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_473ead() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
+
+Failed to generate: builtins/gen/var/textureStore/473ead.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.wgsl
new file mode 100644
index 0000000..a5469e8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_473ead() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_473ead();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_473ead();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_473ead();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl
new file mode 100644
index 0000000..e636959
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8unorm, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_47bd70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1b9b0de
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_47bd70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
+
+Failed to generate: builtins/gen/var/textureStore/47bd70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1b9b0de
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_47bd70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
+
+Failed to generate: builtins/gen/var/textureStore/47bd70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.glsl
new file mode 100644
index 0000000..66120fe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_47bd70() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_47bd70();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_47bd70() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_47bd70();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_47bd70() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_47bd70();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.msl
new file mode 100644
index 0000000..a2f8ed2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_47bd70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.spvasm
new file mode 100644
index 0000000..5b5c733
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_47bd70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
+
+Failed to generate: builtins/gen/var/textureStore/47bd70.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.wgsl
new file mode 100644
index 0000000..bc812ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_47bd70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_47bd70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_47bd70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_47bd70();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl
new file mode 100644
index 0000000..8ac6fb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_48cb56() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..15ed4c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_48cb56() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
+
+Failed to generate: builtins/gen/var/textureStore/48cb56.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..15ed4c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_48cb56() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
+
+Failed to generate: builtins/gen/var/textureStore/48cb56.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.glsl
new file mode 100644
index 0000000..5d61e7b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_48cb56() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_48cb56();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_48cb56() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_48cb56();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_48cb56() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_48cb56();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.msl
new file mode 100644
index 0000000..56d6eb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_48cb56() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.spvasm
new file mode 100644
index 0000000..c6d1a15
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_48cb56() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
+
+Failed to generate: builtins/gen/var/textureStore/48cb56.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.wgsl
new file mode 100644
index 0000000..ea95c9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_48cb56() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_48cb56();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_48cb56();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_48cb56();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl
new file mode 100644
index 0000000..2fbeec6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_4bf1fd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..61871b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_4bf1fd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4bf1fd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..61871b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_4bf1fd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4bf1fd.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.glsl
new file mode 100644
index 0000000..646bcbc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4bf1fd() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_4bf1fd();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4bf1fd() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_4bf1fd();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4bf1fd() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_4bf1fd();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.msl
new file mode 100644
index 0000000..859f49c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_4bf1fd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.spvasm
new file mode 100644
index 0000000..be054c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_4bf1fd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4bf1fd.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.wgsl
new file mode 100644
index 0000000..38027dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_4bf1fd() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4bf1fd();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4bf1fd();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4bf1fd();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl
new file mode 100644
index 0000000..4a98b64
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<bgra8unorm, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_4c76b7() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ca01aba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_4c76b7() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4c76b7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ca01aba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_4c76b7() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4c76b7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.glsl
new file mode 100644
index 0000000..4f37662
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_4c76b7() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_4c76b7();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_4c76b7() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3.bgra);
+}
+
+void fragment_main() {
+  textureStore_4c76b7();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_4c76b7() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3.bgra);
+}
+
+void compute_main() {
+  textureStore_4c76b7();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.msl
new file mode 100644
index 0000000..8d39714
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_4c76b7() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.spvasm
new file mode 100644
index 0000000..09360fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_4c76b7() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4c76b7.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.wgsl
new file mode 100644
index 0000000..c6a242c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_4c76b7() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4c76b7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4c76b7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4c76b7();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl
new file mode 100644
index 0000000..ca40022
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_4cce74() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..43583bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_4cce74() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4cce74.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..43583bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_4cce74() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4cce74.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.glsl
new file mode 100644
index 0000000..4aaa314
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4cce74() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_4cce74();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4cce74() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_4cce74();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_4cce74() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_4cce74();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.msl
new file mode 100644
index 0000000..b2da6d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_4cce74() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.spvasm
new file mode 100644
index 0000000..d22d913
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_4cce74() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4cce74.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.wgsl
new file mode 100644
index 0000000..f0c4cd1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_4cce74() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4cce74();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4cce74();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4cce74();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl
new file mode 100644
index 0000000..24365d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_4ddf52() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3c6cb14
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_4ddf52() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4ddf52.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3c6cb14
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_4ddf52() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4ddf52.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.glsl
new file mode 100644
index 0000000..2889cbe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4ddf52() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_4ddf52();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4ddf52() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_4ddf52();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_4ddf52() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_4ddf52();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.msl
new file mode 100644
index 0000000..01a2df8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_4ddf52() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.spvasm
new file mode 100644
index 0000000..45bccde
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_4ddf52() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4ddf52.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.wgsl
new file mode 100644
index 0000000..81b1c37
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, read_write>;
+
+fn textureStore_4ddf52() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4ddf52();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4ddf52();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4ddf52();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl
new file mode 100644
index 0000000..6fa1294
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32float, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_4e2b3a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f72f4fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_4e2b3a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4e2b3a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f72f4fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_4e2b3a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4e2b3a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.glsl
new file mode 100644
index 0000000..d200476
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_4e2b3a() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_4e2b3a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_4e2b3a() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_4e2b3a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_4e2b3a() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_4e2b3a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.msl
new file mode 100644
index 0000000..5d93bcc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_4e2b3a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.spvasm
new file mode 100644
index 0000000..9a458fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_4e2b3a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/4e2b3a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.wgsl
new file mode 100644
index 0000000..c35b5a7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_4e2b3a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_4e2b3a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_4e2b3a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_4e2b3a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl
new file mode 100644
index 0000000..df8915d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<bgra8unorm, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_5030f5() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..39dae11
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_5030f5() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5030f5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..39dae11
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_5030f5() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5030f5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.glsl
new file mode 100644
index 0000000..50a684d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_5030f5() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_5030f5();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_5030f5() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3.bgra);
+}
+
+void fragment_main() {
+  textureStore_5030f5();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_5030f5() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3.bgra);
+}
+
+void compute_main() {
+  textureStore_5030f5();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.msl
new file mode 100644
index 0000000..08a2e5e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_5030f5() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.spvasm
new file mode 100644
index 0000000..6344b0f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_5030f5() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5030f5.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.wgsl
new file mode 100644
index 0000000..a304e95
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_5030f5() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5030f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5030f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5030f5();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl
new file mode 100644
index 0000000..abe6156
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32float, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_51ec82() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e86c8f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_51ec82() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
+
+Failed to generate: builtins/gen/var/textureStore/51ec82.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e86c8f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_51ec82() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
+
+Failed to generate: builtins/gen/var/textureStore/51ec82.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.glsl
new file mode 100644
index 0000000..a148df9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_51ec82() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_51ec82();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_51ec82() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_51ec82();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_51ec82() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_51ec82();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.msl
new file mode 100644
index 0000000..c9c7d99
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_51ec82() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.spvasm
new file mode 100644
index 0000000..8aeb5ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_51ec82() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
+
+Failed to generate: builtins/gen/var/textureStore/51ec82.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.wgsl
new file mode 100644
index 0000000..05c26e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_51ec82() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_51ec82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_51ec82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_51ec82();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl
new file mode 100644
index 0000000..c7c6201
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_5246b4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..57a3512
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_5246b4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5246b4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..57a3512
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_5246b4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5246b4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.glsl
new file mode 100644
index 0000000..3562ae7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_5246b4() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_5246b4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_5246b4() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_5246b4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_5246b4() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_5246b4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.msl
new file mode 100644
index 0000000..f16bd85
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_5246b4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.spvasm
new file mode 100644
index 0000000..4b6785c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_5246b4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5246b4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.wgsl
new file mode 100644
index 0000000..d083b74
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_5246b4() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5246b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5246b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5246b4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl
new file mode 100644
index 0000000..b6c9e9a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_53a68b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..af5c71c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_53a68b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/53a68b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..af5c71c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_53a68b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/53a68b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.glsl
new file mode 100644
index 0000000..d357d00
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_53a68b() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_53a68b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_53a68b() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_53a68b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_53a68b() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_53a68b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.msl
new file mode 100644
index 0000000..201bd49
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_53a68b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.spvasm
new file mode 100644
index 0000000..10a17ed
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_53a68b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/53a68b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.wgsl
new file mode 100644
index 0000000..b96fbb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, read_write>;
+
+fn textureStore_53a68b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_53a68b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_53a68b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_53a68b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl
new file mode 100644
index 0000000..fd9c713
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_5425ab() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..59cc209
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_5425ab() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5425ab.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..59cc209
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_5425ab() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5425ab.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.glsl
new file mode 100644
index 0000000..afd4560
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5425ab() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_5425ab();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5425ab() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_5425ab();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5425ab() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_5425ab();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.msl
new file mode 100644
index 0000000..0b07562
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_5425ab() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.spvasm
new file mode 100644
index 0000000..0eaafbb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_5425ab() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5425ab.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.wgsl
new file mode 100644
index 0000000..f461d9d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_5425ab() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5425ab();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5425ab();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5425ab();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl b/test/tint/builtins/gen/var/textureStore/544f06.wgsl
new file mode 100644
index 0000000..a2e362a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<bgra8unorm, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_544f06() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0abfb21
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_544f06() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
+
+Failed to generate: builtins/gen/var/textureStore/544f06.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0abfb21
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_544f06() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
+
+Failed to generate: builtins/gen/var/textureStore/544f06.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.glsl
new file mode 100644
index 0000000..afd85e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_544f06() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_544f06();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_544f06() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2.bgra);
+}
+
+void fragment_main() {
+  textureStore_544f06();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_544f06() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2.bgra);
+}
+
+void compute_main() {
+  textureStore_544f06();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.msl
new file mode 100644
index 0000000..6f7cd42
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_544f06() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.spvasm
new file mode 100644
index 0000000..0aef0ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_544f06() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
+
+Failed to generate: builtins/gen/var/textureStore/544f06.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.wgsl
new file mode 100644
index 0000000..2ab0dc5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_544f06() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_544f06();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_544f06();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_544f06();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl
new file mode 100644
index 0000000..21da21d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32float, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_55f9dc() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1a53bab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_55f9dc() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/55f9dc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1a53bab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_55f9dc() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/55f9dc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.glsl
new file mode 100644
index 0000000..d64fe3f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_55f9dc() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_55f9dc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_55f9dc() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_55f9dc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_55f9dc() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_55f9dc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.msl
new file mode 100644
index 0000000..f24b2e4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_55f9dc() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.spvasm
new file mode 100644
index 0000000..394af5a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_55f9dc() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/55f9dc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.wgsl
new file mode 100644
index 0000000..06a2b41
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_55f9dc() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_55f9dc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_55f9dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_55f9dc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl
new file mode 100644
index 0000000..f185c4d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_574a31() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3687c3e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_574a31() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
+
+Failed to generate: builtins/gen/var/textureStore/574a31.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3687c3e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_574a31() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
+
+Failed to generate: builtins/gen/var/textureStore/574a31.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.glsl
new file mode 100644
index 0000000..657b994
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_574a31() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_574a31();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_574a31() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_574a31();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_574a31() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_574a31();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.msl
new file mode 100644
index 0000000..17ca7e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_574a31() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.spvasm
new file mode 100644
index 0000000..591b347
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_574a31() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
+
+Failed to generate: builtins/gen/var/textureStore/574a31.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.wgsl
new file mode 100644
index 0000000..9193f6f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_574a31() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_574a31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_574a31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_574a31();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl b/test/tint/builtins/gen/var/textureStore/579b93.wgsl
new file mode 100644
index 0000000..7f33c9c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_579b93() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..fcf78279c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_579b93() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
+
+Failed to generate: builtins/gen/var/textureStore/579b93.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..fcf78279c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_579b93() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
+
+Failed to generate: builtins/gen/var/textureStore/579b93.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.glsl
new file mode 100644
index 0000000..1638c34
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_579b93() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_579b93();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_579b93() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_579b93();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_579b93() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_579b93();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.msl
new file mode 100644
index 0000000..36422bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_579b93() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.spvasm
new file mode 100644
index 0000000..d44d048
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_579b93() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
+
+Failed to generate: builtins/gen/var/textureStore/579b93.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.wgsl
new file mode 100644
index 0000000..6ad905e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, read_write>;
+
+fn textureStore_579b93() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_579b93();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_579b93();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_579b93();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl
new file mode 100644
index 0000000..0586e26
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16float, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_58fc35() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4cc0821
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_58fc35() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
+
+Failed to generate: builtins/gen/var/textureStore/58fc35.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4cc0821
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_58fc35() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
+
+Failed to generate: builtins/gen/var/textureStore/58fc35.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.glsl
new file mode 100644
index 0000000..9345ecb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_58fc35() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_58fc35();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_58fc35() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_58fc35();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_58fc35() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_58fc35();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.msl
new file mode 100644
index 0000000..d860dbd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_58fc35() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.spvasm
new file mode 100644
index 0000000..761b238
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_58fc35() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
+
+Failed to generate: builtins/gen/var/textureStore/58fc35.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.wgsl
new file mode 100644
index 0000000..405172f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_58fc35() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_58fc35();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_58fc35();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_58fc35();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl
new file mode 100644
index 0000000..525da4e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32float, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_5a8b41() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f1dfb7a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_5a8b41() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5a8b41.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f1dfb7a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_5a8b41() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5a8b41.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.glsl
new file mode 100644
index 0000000..c8bf747
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5a8b41() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_5a8b41();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5a8b41() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_5a8b41();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5a8b41() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_5a8b41();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.msl
new file mode 100644
index 0000000..eae558a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_5a8b41() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.spvasm
new file mode 100644
index 0000000..34b71df
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_5a8b41() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5a8b41.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.wgsl
new file mode 100644
index 0000000..e1d7754
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_5a8b41() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5a8b41();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5a8b41();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5a8b41();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl
new file mode 100644
index 0000000..7d2b39a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32float, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_5b17eb() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0b93c5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_5b17eb() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5b17eb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0b93c5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_5b17eb() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5b17eb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.glsl
new file mode 100644
index 0000000..fb7d73d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_5b17eb() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_5b17eb();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_5b17eb() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_5b17eb();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_5b17eb() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_5b17eb();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.msl
new file mode 100644
index 0000000..25cb252
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_5b17eb() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.spvasm
new file mode 100644
index 0000000..34086bd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_5b17eb() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5b17eb.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.wgsl
new file mode 100644
index 0000000..1b45ca9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_5b17eb() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b17eb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b17eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b17eb();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl
new file mode 100644
index 0000000..67a6b19
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_5b4522() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6698bbb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_5b4522() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5b4522.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6698bbb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_5b4522() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5b4522.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.glsl
new file mode 100644
index 0000000..5d3e6a0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5b4522() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_5b4522();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5b4522() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_5b4522();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_5b4522() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_5b4522();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.msl
new file mode 100644
index 0000000..7d0ea07
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_5b4522() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.spvasm
new file mode 100644
index 0000000..af196e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_5b4522() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5b4522.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.wgsl
new file mode 100644
index 0000000..bde572c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_5b4522() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5b4522();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5b4522();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5b4522();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl
new file mode 100644
index 0000000..8336b5d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32float, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_5ec6b2() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f966e62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_5ec6b2() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5ec6b2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f966e62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_5ec6b2() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5ec6b2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.glsl
new file mode 100644
index 0000000..1964e49
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_5ec6b2() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_5ec6b2();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_5ec6b2() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_5ec6b2();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_5ec6b2() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_5ec6b2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.msl
new file mode 100644
index 0000000..903b83c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_5ec6b2() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.spvasm
new file mode 100644
index 0000000..0283b87
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_5ec6b2() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5ec6b2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.wgsl
new file mode 100644
index 0000000..ea72772
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_5ec6b2() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ec6b2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ec6b2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ec6b2();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl
new file mode 100644
index 0000000..931654f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32float, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_5ee194() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..876311e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_5ee194() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5ee194.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..876311e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_5ee194() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5ee194.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.glsl
new file mode 100644
index 0000000..aac51267
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5ee194() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_5ee194();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5ee194() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_5ee194();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_5ee194() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_5ee194();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.msl
new file mode 100644
index 0000000..18e597f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_5ee194() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.spvasm
new file mode 100644
index 0000000..5ec7f4e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_5ee194() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
+
+Failed to generate: builtins/gen/var/textureStore/5ee194.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.wgsl
new file mode 100644
index 0000000..eb9240f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_5ee194() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_5ee194();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_5ee194();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_5ee194();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl b/test/tint/builtins/gen/var/textureStore/614b58.wgsl
new file mode 100644
index 0000000..4f1000d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_614b58() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6653b88
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_614b58() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
+
+Failed to generate: builtins/gen/var/textureStore/614b58.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6653b88
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_614b58() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
+
+Failed to generate: builtins/gen/var/textureStore/614b58.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.glsl
new file mode 100644
index 0000000..76331bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_614b58() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_614b58();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_614b58() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_614b58();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_614b58() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_614b58();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.msl
new file mode 100644
index 0000000..48dc4a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_614b58() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.spvasm
new file mode 100644
index 0000000..1e6b6fc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_614b58() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
+
+Failed to generate: builtins/gen/var/textureStore/614b58.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.wgsl
new file mode 100644
index 0000000..12b6c67
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_614b58() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_614b58();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_614b58();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_614b58();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl b/test/tint/builtins/gen/var/textureStore/635584.wgsl
new file mode 100644
index 0000000..85efbdf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32float, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_635584() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..857590a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_635584() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
+
+Failed to generate: builtins/gen/var/textureStore/635584.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..857590a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_635584() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
+
+Failed to generate: builtins/gen/var/textureStore/635584.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.glsl
new file mode 100644
index 0000000..8c093b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_635584() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_635584();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_635584() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_635584();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_635584() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_635584();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.msl
new file mode 100644
index 0000000..07c6a74
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_635584() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.spvasm
new file mode 100644
index 0000000..0f2ec40
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_635584() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
+
+Failed to generate: builtins/gen/var/textureStore/635584.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.wgsl
new file mode 100644
index 0000000..aab8605
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, read_write>;
+
+fn textureStore_635584() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_635584();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_635584();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_635584();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl
new file mode 100644
index 0000000..a018bb6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_63f34a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..58cca4b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_63f34a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/63f34a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..58cca4b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_63f34a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/63f34a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.glsl
new file mode 100644
index 0000000..36dfd28
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_63f34a() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_63f34a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_63f34a() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_63f34a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_63f34a() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_63f34a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.msl
new file mode 100644
index 0000000..cbcc0b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_63f34a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.spvasm
new file mode 100644
index 0000000..37d6fb6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_63f34a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/63f34a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.wgsl
new file mode 100644
index 0000000..5ee7fd9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_63f34a() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_63f34a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_63f34a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_63f34a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl
new file mode 100644
index 0000000..f4024fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_646dbc() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..94f59db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_646dbc() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/646dbc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..94f59db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_646dbc() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/646dbc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.glsl
new file mode 100644
index 0000000..3427eea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_646dbc() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_646dbc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_646dbc() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_646dbc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_646dbc() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_646dbc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.msl
new file mode 100644
index 0000000..465cfc4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_646dbc() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.spvasm
new file mode 100644
index 0000000..71cba6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_646dbc() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/646dbc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.wgsl
new file mode 100644
index 0000000..121e422
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, read_write>;
+
+fn textureStore_646dbc() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_646dbc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_646dbc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_646dbc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl
new file mode 100644
index 0000000..4352e65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_65b6aa() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..03217c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_65b6aa() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
+
+Failed to generate: builtins/gen/var/textureStore/65b6aa.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..03217c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_65b6aa() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
+
+Failed to generate: builtins/gen/var/textureStore/65b6aa.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.glsl
new file mode 100644
index 0000000..6dc3cee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_65b6aa() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_65b6aa();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_65b6aa() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_65b6aa();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_65b6aa() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_65b6aa();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.msl
new file mode 100644
index 0000000..b37aba9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_65b6aa() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.spvasm
new file mode 100644
index 0000000..30361ae
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_65b6aa() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
+
+Failed to generate: builtins/gen/var/textureStore/65b6aa.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.wgsl
new file mode 100644
index 0000000..bb19936
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_65b6aa() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_65b6aa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_65b6aa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_65b6aa();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl
new file mode 100644
index 0000000..1e6c857
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32float, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_6be9e0() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c5d1bd3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_6be9e0() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6be9e0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c5d1bd3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_6be9e0() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6be9e0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.glsl
new file mode 100644
index 0000000..93bc3f1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_6be9e0() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_6be9e0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_6be9e0() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_6be9e0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image3D arg_0;
+void textureStore_6be9e0() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_6be9e0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.msl
new file mode 100644
index 0000000..dbae193
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_6be9e0() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.spvasm
new file mode 100644
index 0000000..fa7d417
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_6be9e0() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6be9e0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.wgsl
new file mode 100644
index 0000000..0b2ce68
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, read_write>;
+
+fn textureStore_6be9e0() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6be9e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6be9e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6be9e0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl
new file mode 100644
index 0000000..2af835c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_6c4a70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..84c4500
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_6c4a70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6c4a70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..84c4500
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_6c4a70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6c4a70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.glsl
new file mode 100644
index 0000000..0a2fe92
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_6c4a70() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_6c4a70();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_6c4a70() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_6c4a70();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_6c4a70() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_6c4a70();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.msl
new file mode 100644
index 0000000..d2f308e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_6c4a70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.spvasm
new file mode 100644
index 0000000..76c69ef
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_6c4a70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6c4a70.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.wgsl
new file mode 100644
index 0000000..3a823d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_6c4a70() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6c4a70();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6c4a70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6c4a70();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl
new file mode 100644
index 0000000..cbc77ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8unorm, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_6d1809() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e493fc1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_6d1809() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6d1809.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e493fc1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_6d1809() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6d1809.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.glsl
new file mode 100644
index 0000000..ec01492
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_6d1809() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_6d1809();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_6d1809() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_6d1809();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_6d1809() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_6d1809();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.msl
new file mode 100644
index 0000000..49747d4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_6d1809() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.spvasm
new file mode 100644
index 0000000..50fe74f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_6d1809() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6d1809.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.wgsl
new file mode 100644
index 0000000..18e7af6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_6d1809() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d1809();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d1809();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d1809();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl
new file mode 100644
index 0000000..27fa636
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_6d259f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4bfd068
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_6d259f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6d259f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4bfd068
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_6d259f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6d259f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.glsl
new file mode 100644
index 0000000..f345b16
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_6d259f() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_6d259f();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_6d259f() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_6d259f();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_6d259f() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_6d259f();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.msl
new file mode 100644
index 0000000..465410a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_6d259f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.spvasm
new file mode 100644
index 0000000..9439056
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_6d259f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6d259f.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.wgsl
new file mode 100644
index 0000000..ae61936
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_6d259f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6d259f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6d259f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6d259f();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl
new file mode 100644
index 0000000..d2af982
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32float, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_6e6cc0() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..77e3bd3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_6e6cc0() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6e6cc0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..77e3bd3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_6e6cc0() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6e6cc0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.glsl
new file mode 100644
index 0000000..f8b8857
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_6e6cc0() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_6e6cc0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_6e6cc0() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_6e6cc0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_6e6cc0() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_6e6cc0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.msl
new file mode 100644
index 0000000..5daf6d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_6e6cc0() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.spvasm
new file mode 100644
index 0000000..b1a82eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_6e6cc0() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6e6cc0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.wgsl
new file mode 100644
index 0000000..222b0c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_6e6cc0() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6e6cc0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6e6cc0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6e6cc0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl
new file mode 100644
index 0000000..a3c6c79
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_6f3542() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f096e5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_6f3542() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6f3542.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f096e5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_6f3542() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6f3542.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.glsl
new file mode 100644
index 0000000..5fedca3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_6f3542() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_6f3542();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_6f3542() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_6f3542();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_6f3542() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_6f3542();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.msl
new file mode 100644
index 0000000..1439fc2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_6f3542() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.spvasm
new file mode 100644
index 0000000..5514ec0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_6f3542() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6f3542.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.wgsl
new file mode 100644
index 0000000..b3ada1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, read_write>;
+
+fn textureStore_6f3542() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6f3542();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6f3542();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6f3542();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl
new file mode 100644
index 0000000..8d1feb0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16float, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_6fb99b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..93d54d0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_6fb99b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6fb99b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..93d54d0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_6fb99b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6fb99b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.glsl
new file mode 100644
index 0000000..517dfad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_6fb99b() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_6fb99b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_6fb99b() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_6fb99b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_6fb99b() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_6fb99b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.msl
new file mode 100644
index 0000000..d712313
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_6fb99b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.spvasm
new file mode 100644
index 0000000..4675af0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_6fb99b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/6fb99b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.wgsl
new file mode 100644
index 0000000..dbed6eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_6fb99b() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_6fb99b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_6fb99b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_6fb99b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl
new file mode 100644
index 0000000..78b6fa5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8unorm, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_704e1f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7af63aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_704e1f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/704e1f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7af63aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_704e1f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/704e1f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.glsl
new file mode 100644
index 0000000..fd17654
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_704e1f() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_704e1f();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_704e1f() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_704e1f();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_704e1f() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_704e1f();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.msl
new file mode 100644
index 0000000..779b2d0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_704e1f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.spvasm
new file mode 100644
index 0000000..1a09d6b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_704e1f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/704e1f.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.wgsl
new file mode 100644
index 0000000..042fa2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_704e1f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_704e1f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_704e1f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_704e1f();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl b/test/tint/builtins/gen/var/textureStore/706236.wgsl
new file mode 100644
index 0000000..10fad05
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8unorm, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_706236() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eb3d996
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_706236() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
+
+Failed to generate: builtins/gen/var/textureStore/706236.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eb3d996
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_706236() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
+
+Failed to generate: builtins/gen/var/textureStore/706236.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.glsl
new file mode 100644
index 0000000..a972f8d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_706236() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_706236();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_706236() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_706236();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_706236() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_706236();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.msl
new file mode 100644
index 0000000..9a995ed
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_706236() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.spvasm
new file mode 100644
index 0000000..502da5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_706236() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
+
+Failed to generate: builtins/gen/var/textureStore/706236.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.wgsl
new file mode 100644
index 0000000..5682c99
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, read_write>;
+
+fn textureStore_706236() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706236();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706236();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706236();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl b/test/tint/builtins/gen/var/textureStore/706560.wgsl
new file mode 100644
index 0000000..5aec8d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_706560() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6948d49c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_706560() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
+
+Failed to generate: builtins/gen/var/textureStore/706560.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6948d49c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_706560() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
+
+Failed to generate: builtins/gen/var/textureStore/706560.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.glsl
new file mode 100644
index 0000000..3f887aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_706560() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_706560();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_706560() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_706560();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_706560() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_706560();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.msl
new file mode 100644
index 0000000..e00f646
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_706560() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.spvasm
new file mode 100644
index 0000000..aabe4d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_706560() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
+
+Failed to generate: builtins/gen/var/textureStore/706560.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.wgsl
new file mode 100644
index 0000000..766840a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_706560() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_706560();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_706560();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_706560();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl
new file mode 100644
index 0000000..9812758
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16float, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_726d6d() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1d4025b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_726d6d() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/726d6d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1d4025b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_726d6d() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/726d6d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.glsl
new file mode 100644
index 0000000..7c91bb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_726d6d() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_726d6d();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_726d6d() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_726d6d();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_726d6d() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_726d6d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.msl
new file mode 100644
index 0000000..603c002
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_726d6d() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.spvasm
new file mode 100644
index 0000000..d8c04fe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_726d6d() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/726d6d.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.wgsl
new file mode 100644
index 0000000..9b34ad4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_726d6d() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_726d6d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_726d6d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_726d6d();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl b/test/tint/builtins/gen/var/textureStore/73a735.wgsl
new file mode 100644
index 0000000..89276d7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_73a735() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2ce6a3d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_73a735() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
+
+Failed to generate: builtins/gen/var/textureStore/73a735.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2ce6a3d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_73a735() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
+
+Failed to generate: builtins/gen/var/textureStore/73a735.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.glsl
new file mode 100644
index 0000000..9c8afed
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_73a735() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_73a735();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_73a735() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_73a735();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_73a735() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_73a735();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.msl
new file mode 100644
index 0000000..ba8f294
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_73a735() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.spvasm
new file mode 100644
index 0000000..5a08673
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_73a735() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
+
+Failed to generate: builtins/gen/var/textureStore/73a735.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.wgsl
new file mode 100644
index 0000000..aeb2f6e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_73a735() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_73a735();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_73a735();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_73a735();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl b/test/tint/builtins/gen/var/textureStore/751256.wgsl
new file mode 100644
index 0000000..72f9979
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_751256() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..db1a1a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_751256() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
+
+Failed to generate: builtins/gen/var/textureStore/751256.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..db1a1a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_751256() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
+
+Failed to generate: builtins/gen/var/textureStore/751256.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.glsl
new file mode 100644
index 0000000..9e56ef1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_751256() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_751256();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_751256() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_751256();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_751256() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_751256();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.msl
new file mode 100644
index 0000000..bac017b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_751256() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.spvasm
new file mode 100644
index 0000000..68abb5d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_751256() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
+
+Failed to generate: builtins/gen/var/textureStore/751256.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.wgsl
new file mode 100644
index 0000000..0eed939
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, read_write>;
+
+fn textureStore_751256() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_751256();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_751256();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_751256();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl
new file mode 100644
index 0000000..3e204e9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_75bbd5() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..346f596
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_75bbd5() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/75bbd5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..346f596
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_75bbd5() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/75bbd5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.glsl
new file mode 100644
index 0000000..947dae3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_75bbd5() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_75bbd5();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_75bbd5() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_75bbd5();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_75bbd5() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_75bbd5();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.msl
new file mode 100644
index 0000000..3a6b950
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_75bbd5() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.spvasm
new file mode 100644
index 0000000..75cae03
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_75bbd5() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/75bbd5.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.wgsl
new file mode 100644
index 0000000..0596515
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_75bbd5() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_75bbd5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_75bbd5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_75bbd5();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl
new file mode 100644
index 0000000..dca31bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_7792fa() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bcbd40b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_7792fa() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7792fa.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bcbd40b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_7792fa() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7792fa.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.glsl
new file mode 100644
index 0000000..acbacac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_7792fa() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_7792fa();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_7792fa() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_7792fa();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_7792fa() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_7792fa();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.msl
new file mode 100644
index 0000000..684be4c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_7792fa() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.spvasm
new file mode 100644
index 0000000..2571ae9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_7792fa() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7792fa.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.wgsl
new file mode 100644
index 0000000..ad6c09c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_7792fa() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7792fa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7792fa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7792fa();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl
new file mode 100644
index 0000000..2d5b944
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32float, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_7b8f86() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c7c1495
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_7b8f86() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7b8f86.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c7c1495
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_7b8f86() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7b8f86.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.glsl
new file mode 100644
index 0000000..74b7007
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_7b8f86() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_7b8f86();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_7b8f86() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_7b8f86();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_7b8f86() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_7b8f86();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.msl
new file mode 100644
index 0000000..e854b8b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_7b8f86() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.spvasm
new file mode 100644
index 0000000..0223c6e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_7b8f86() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7b8f86.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.wgsl
new file mode 100644
index 0000000..9f84a5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_7b8f86() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7b8f86();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7b8f86();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7b8f86();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl
new file mode 100644
index 0000000..e79605c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32float, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_7d10e0() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..929df5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_7d10e0() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7d10e0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..929df5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_7d10e0() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7d10e0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.glsl
new file mode 100644
index 0000000..e2f1f2e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_7d10e0() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_7d10e0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_7d10e0() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_7d10e0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_7d10e0() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_7d10e0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.msl
new file mode 100644
index 0000000..6093906
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_7d10e0() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.spvasm
new file mode 100644
index 0000000..b7b99b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_7d10e0() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7d10e0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.wgsl
new file mode 100644
index 0000000..ed52f03
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, read_write>;
+
+fn textureStore_7d10e0() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7d10e0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7d10e0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7d10e0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl
new file mode 100644
index 0000000..989d0be
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_7dd042() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e1ac017
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_7dd042() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7dd042.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e1ac017
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_7dd042() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7dd042.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.glsl
new file mode 100644
index 0000000..ec7624f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_7dd042() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_7dd042();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_7dd042() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_7dd042();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_7dd042() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_7dd042();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.msl
new file mode 100644
index 0000000..6410837
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_7dd042() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.spvasm
new file mode 100644
index 0000000..a8847c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_7dd042() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7dd042.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.wgsl
new file mode 100644
index 0000000..1eb3265
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_7dd042() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7dd042();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7dd042();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7dd042();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl
new file mode 100644
index 0000000..bab5762
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32float, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_7e787a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0d244a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_7e787a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7e787a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0d244a6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_7e787a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7e787a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.glsl
new file mode 100644
index 0000000..e1577d2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_7e787a() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_7e787a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_7e787a() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_7e787a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image3D arg_0;
+void textureStore_7e787a() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_7e787a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.msl
new file mode 100644
index 0000000..f429d4c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_7e787a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.spvasm
new file mode 100644
index 0000000..789244d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_7e787a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/7e787a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.wgsl
new file mode 100644
index 0000000..61ce586
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, read_write>;
+
+fn textureStore_7e787a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_7e787a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_7e787a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_7e787a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl
new file mode 100644
index 0000000..91423ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_80bf1d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..89e502d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_80bf1d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/80bf1d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..89e502d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_80bf1d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/80bf1d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.glsl
new file mode 100644
index 0000000..84db212
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_80bf1d() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_80bf1d();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_80bf1d() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_80bf1d();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_80bf1d() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_80bf1d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.msl
new file mode 100644
index 0000000..792446a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_80bf1d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.spvasm
new file mode 100644
index 0000000..e53b055
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_80bf1d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/80bf1d.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.wgsl
new file mode 100644
index 0000000..0760675
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, read_write>;
+
+fn textureStore_80bf1d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_80bf1d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_80bf1d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_80bf1d();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl b/test/tint/builtins/gen/var/textureStore/818df6.wgsl
new file mode 100644
index 0000000..0c27cb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16float, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_818df6() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1fe7aea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_818df6() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/818df6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1fe7aea
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_818df6() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/818df6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.glsl
new file mode 100644
index 0000000..748b059
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_818df6() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_818df6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_818df6() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_818df6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image3D arg_0;
+void textureStore_818df6() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_818df6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.msl
new file mode 100644
index 0000000..0b8fb7c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_818df6() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.spvasm
new file mode 100644
index 0000000..6349349
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_818df6() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/818df6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.wgsl
new file mode 100644
index 0000000..826f31d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, read_write>;
+
+fn textureStore_818df6() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_818df6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_818df6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_818df6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl
new file mode 100644
index 0000000..ab4c475
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32float, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_81ae31() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..93315e6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_81ae31() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
+
+Failed to generate: builtins/gen/var/textureStore/81ae31.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..93315e6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_81ae31() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
+
+Failed to generate: builtins/gen/var/textureStore/81ae31.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.glsl
new file mode 100644
index 0000000..d012886
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_81ae31() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_81ae31();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_81ae31() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_81ae31();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_81ae31() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_81ae31();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.msl
new file mode 100644
index 0000000..a895841
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_81ae31() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.spvasm
new file mode 100644
index 0000000..f334d48
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_81ae31() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
+
+Failed to generate: builtins/gen/var/textureStore/81ae31.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.wgsl
new file mode 100644
index 0000000..c2b1c7d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_81ae31() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_81ae31();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_81ae31();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_81ae31();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl b/test/tint/builtins/gen/var/textureStore/820272.wgsl
new file mode 100644
index 0000000..bbc4ed3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_820272() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e2b0a38
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_820272() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
+
+Failed to generate: builtins/gen/var/textureStore/820272.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e2b0a38
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_820272() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
+
+Failed to generate: builtins/gen/var/textureStore/820272.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.glsl
new file mode 100644
index 0000000..186bbc7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_820272() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_820272();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_820272() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_820272();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_820272() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_820272();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.msl
new file mode 100644
index 0000000..0898436
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_820272() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.spvasm
new file mode 100644
index 0000000..6df6ab6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_820272() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
+
+Failed to generate: builtins/gen/var/textureStore/820272.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.wgsl
new file mode 100644
index 0000000..b139887
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_820272() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_820272();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_820272();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_820272();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl b/test/tint/builtins/gen/var/textureStore/84d435.wgsl
new file mode 100644
index 0000000..517580a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_84d435() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7209dd6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_84d435() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
+
+Failed to generate: builtins/gen/var/textureStore/84d435.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7209dd6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_84d435() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
+
+Failed to generate: builtins/gen/var/textureStore/84d435.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.glsl
new file mode 100644
index 0000000..efae5e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84d435() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_84d435();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84d435() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_84d435();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84d435() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_84d435();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.msl
new file mode 100644
index 0000000..f6d42df
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_84d435() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.spvasm
new file mode 100644
index 0000000..adb6309
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_84d435() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
+
+Failed to generate: builtins/gen/var/textureStore/84d435.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.wgsl
new file mode 100644
index 0000000..2f4aea0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_84d435() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84d435();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84d435();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84d435();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl
new file mode 100644
index 0000000..afa7c6f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_84f4f4() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8730f63
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_84f4f4() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/84f4f4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8730f63
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_84f4f4() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/84f4f4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.glsl
new file mode 100644
index 0000000..d2cfb7f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84f4f4() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_84f4f4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84f4f4() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_84f4f4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_84f4f4() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_84f4f4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.msl
new file mode 100644
index 0000000..b96a9f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_84f4f4() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.spvasm
new file mode 100644
index 0000000..4432dd4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_84f4f4() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/84f4f4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.wgsl
new file mode 100644
index 0000000..b851511
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_84f4f4() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_84f4f4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_84f4f4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_84f4f4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl
new file mode 100644
index 0000000..58d6ee5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_8676c9() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..364f3db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_8676c9() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8676c9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..364f3db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_8676c9() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8676c9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.glsl
new file mode 100644
index 0000000..4f3f227
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8676c9() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_8676c9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8676c9() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_8676c9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8676c9() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_8676c9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.msl
new file mode 100644
index 0000000..7f65fb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_8676c9() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.spvasm
new file mode 100644
index 0000000..e2e2177
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_8676c9() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8676c9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.wgsl
new file mode 100644
index 0000000..d350392
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, read_write>;
+
+fn textureStore_8676c9() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8676c9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8676c9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8676c9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl b/test/tint/builtins/gen/var/textureStore/86f713.wgsl
new file mode 100644
index 0000000..37babde
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_86f713() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6d0befd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_86f713() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
+
+Failed to generate: builtins/gen/var/textureStore/86f713.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6d0befd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_86f713() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
+
+Failed to generate: builtins/gen/var/textureStore/86f713.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.glsl
new file mode 100644
index 0000000..bdccf54
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_86f713() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_86f713();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_86f713() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_86f713();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_86f713() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_86f713();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.msl
new file mode 100644
index 0000000..58e492b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_86f713() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.spvasm
new file mode 100644
index 0000000..911105b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_86f713() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
+
+Failed to generate: builtins/gen/var/textureStore/86f713.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.wgsl
new file mode 100644
index 0000000..1979f0c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_86f713() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_86f713();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_86f713();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_86f713();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl b/test/tint/builtins/gen/var/textureStore/877c92.wgsl
new file mode 100644
index 0000000..0e2084c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8snorm, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_877c92() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9b2bff8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_877c92() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
+
+Failed to generate: builtins/gen/var/textureStore/877c92.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9b2bff8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_877c92() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
+
+Failed to generate: builtins/gen/var/textureStore/877c92.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.glsl
new file mode 100644
index 0000000..6bcbc86
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_877c92() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_877c92();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_877c92() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_877c92();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_877c92() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_877c92();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.msl
new file mode 100644
index 0000000..4a7261c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_877c92() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.spvasm
new file mode 100644
index 0000000..c721438
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_877c92() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
+
+Failed to generate: builtins/gen/var/textureStore/877c92.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.wgsl
new file mode 100644
index 0000000..2a2df75
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, read_write>;
+
+fn textureStore_877c92() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_877c92();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_877c92();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_877c92();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl
new file mode 100644
index 0000000..224ca6b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_8815b1() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ccf1b76
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_8815b1() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8815b1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ccf1b76
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_8815b1() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8815b1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.glsl
new file mode 100644
index 0000000..40582ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8815b1() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_8815b1();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8815b1() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_8815b1();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8815b1() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_8815b1();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.msl
new file mode 100644
index 0000000..db40450
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_8815b1() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.spvasm
new file mode 100644
index 0000000..54cfcba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_8815b1() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8815b1.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.wgsl
new file mode 100644
index 0000000..4978815
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureStore_8815b1() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8815b1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8815b1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8815b1();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl b/test/tint/builtins/gen/var/textureStore/885921.wgsl
new file mode 100644
index 0000000..e3ca381
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8unorm, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_885921() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c937248
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_885921() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
+
+Failed to generate: builtins/gen/var/textureStore/885921.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c937248
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_885921() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
+
+Failed to generate: builtins/gen/var/textureStore/885921.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.glsl
new file mode 100644
index 0000000..57d2999
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_885921() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_885921();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_885921() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_885921();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_885921() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_885921();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.msl
new file mode 100644
index 0000000..0742f58
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_885921() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.spvasm
new file mode 100644
index 0000000..dbcb01f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_885921() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
+
+Failed to generate: builtins/gen/var/textureStore/885921.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.wgsl
new file mode 100644
index 0000000..a1b4c52
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, read_write>;
+
+fn textureStore_885921() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_885921();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_885921();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_885921();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl
new file mode 100644
index 0000000..3ff5ce1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_88ce7e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..565f009
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_88ce7e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/88ce7e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..565f009
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_88ce7e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/88ce7e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.glsl
new file mode 100644
index 0000000..1270cb3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_88ce7e() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_88ce7e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_88ce7e() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_88ce7e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_88ce7e() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_88ce7e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.msl
new file mode 100644
index 0000000..024a556
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_88ce7e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.spvasm
new file mode 100644
index 0000000..048bc8f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_88ce7e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/88ce7e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.wgsl
new file mode 100644
index 0000000..5931ec1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_88ce7e() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_88ce7e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_88ce7e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_88ce7e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl
new file mode 100644
index 0000000..19066f9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_8a16b0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4c90536
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8a16b0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a16b0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4c90536
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8a16b0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a16b0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.glsl
new file mode 100644
index 0000000..824daa1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8a16b0() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_8a16b0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8a16b0() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_8a16b0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8a16b0() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_8a16b0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.msl
new file mode 100644
index 0000000..0611fa0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8a16b0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.spvasm
new file mode 100644
index 0000000..7abdf8a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8a16b0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a16b0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.wgsl
new file mode 100644
index 0000000..100e50e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8a16b0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a16b0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a16b0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a16b0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl
new file mode 100644
index 0000000..165863c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba16float, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_8a46ff() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bb9d91f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_8a46ff() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a46ff.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bb9d91f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_8a46ff() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a46ff.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.glsl
new file mode 100644
index 0000000..d0dd4db
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_8a46ff() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_8a46ff();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_8a46ff() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_8a46ff();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_8a46ff() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_8a46ff();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.msl
new file mode 100644
index 0000000..5335941
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_8a46ff() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.spvasm
new file mode 100644
index 0000000..e655184
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_8a46ff() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a46ff.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.wgsl
new file mode 100644
index 0000000..9498dd9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, read_write>;
+
+fn textureStore_8a46ff() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a46ff();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a46ff();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a46ff();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl
new file mode 100644
index 0000000..c35c36b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_8a85b9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6911e13
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_8a85b9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a85b9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6911e13
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_8a85b9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a85b9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.glsl
new file mode 100644
index 0000000..f4d1512
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8a85b9() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_8a85b9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8a85b9() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_8a85b9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_8a85b9() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_8a85b9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.msl
new file mode 100644
index 0000000..0cdf0f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_8a85b9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.spvasm
new file mode 100644
index 0000000..17d2da7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_8a85b9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a85b9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.wgsl
new file mode 100644
index 0000000..154cb9d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_8a85b9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a85b9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a85b9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a85b9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl
new file mode 100644
index 0000000..094079b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_8a8681() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c9d01f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_8a8681() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a8681.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c9d01f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_8a8681() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a8681.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.glsl
new file mode 100644
index 0000000..3ad5731
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8a8681() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_8a8681();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8a8681() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_8a8681();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_8a8681() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_8a8681();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.msl
new file mode 100644
index 0000000..7f51f03
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_8a8681() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.spvasm
new file mode 100644
index 0000000..8ae4b69
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_8a8681() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8a8681.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.wgsl
new file mode 100644
index 0000000..e54de82
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, read_write>;
+
+fn textureStore_8a8681() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8a8681();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8a8681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8a8681();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl
new file mode 100644
index 0000000..8af02c1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8snorm, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_8ae0bc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..acfd46a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_8ae0bc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8ae0bc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..acfd46a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_8ae0bc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8ae0bc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.glsl
new file mode 100644
index 0000000..ed8fca1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ae0bc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_8ae0bc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ae0bc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_8ae0bc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ae0bc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_8ae0bc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.msl
new file mode 100644
index 0000000..90f6f52
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_8ae0bc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.spvasm
new file mode 100644
index 0000000..b3a46ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_8ae0bc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8ae0bc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.wgsl
new file mode 100644
index 0000000..557ee80
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_8ae0bc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ae0bc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ae0bc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ae0bc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl
new file mode 100644
index 0000000..0f7cab3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_8cd841() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..cbadfd6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8cd841() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8cd841.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..cbadfd6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8cd841() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8cd841.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.glsl
new file mode 100644
index 0000000..2b8da40
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8cd841() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_8cd841();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8cd841() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_8cd841();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_8cd841() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_8cd841();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.msl
new file mode 100644
index 0000000..b30d50d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8cd841() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.spvasm
new file mode 100644
index 0000000..b1f0201
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8cd841() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8cd841.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.wgsl
new file mode 100644
index 0000000..3991e6c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_8cd841() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8cd841();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8cd841();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8cd841();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl
new file mode 100644
index 0000000..9660ba5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16float, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
+fn textureStore_8ebdc9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c85e46f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_8ebdc9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8ebdc9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c85e46f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_8ebdc9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8ebdc9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.glsl
new file mode 100644
index 0000000..50743b6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ebdc9() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_8ebdc9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ebdc9() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_8ebdc9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_8ebdc9() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_8ebdc9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.msl
new file mode 100644
index 0000000..8f96cd5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_8ebdc9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.spvasm
new file mode 100644
index 0000000..7cf1eb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_8ebdc9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/8ebdc9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.wgsl
new file mode 100644
index 0000000..5431197
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_8ebdc9() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_8ebdc9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_8ebdc9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_8ebdc9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl b/test/tint/builtins/gen/var/textureStore/90960e.wgsl
new file mode 100644
index 0000000..af3d363
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16float, read_write>, coords: i32, value: vec4<f32>)
+fn textureStore_90960e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a90c34e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_90960e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/90960e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a90c34e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_90960e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/90960e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.glsl
new file mode 100644
index 0000000..4965d65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_90960e() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_90960e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_90960e() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_90960e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2D arg_0;
+void textureStore_90960e() {
+  int arg_1 = 1;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_90960e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.msl
new file mode 100644
index 0000000..3adcb1a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_90960e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.spvasm
new file mode 100644
index 0000000..93d95d5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_90960e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/90960e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.wgsl
new file mode 100644
index 0000000..70c5129
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, read_write>;
+
+fn textureStore_90960e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90960e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90960e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90960e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl b/test/tint/builtins/gen/var/textureStore/90a553.wgsl
new file mode 100644
index 0000000..90838b3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_90a553() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d2926b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_90a553() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
+
+Failed to generate: builtins/gen/var/textureStore/90a553.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d2926b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_90a553() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
+
+Failed to generate: builtins/gen/var/textureStore/90a553.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.glsl
new file mode 100644
index 0000000..1e7ab30
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_90a553() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_90a553();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_90a553() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_90a553();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_90a553() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_90a553();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.msl
new file mode 100644
index 0000000..0916fff
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_90a553() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.spvasm
new file mode 100644
index 0000000..feaacb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_90a553() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
+
+Failed to generate: builtins/gen/var/textureStore/90a553.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.wgsl
new file mode 100644
index 0000000..76d9e59
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureStore_90a553() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_90a553();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_90a553();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_90a553();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl b/test/tint/builtins/gen/var/textureStore/976636.wgsl
new file mode 100644
index 0000000..6654b0b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_976636() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..741d3be
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_976636() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
+
+Failed to generate: builtins/gen/var/textureStore/976636.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..741d3be
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_976636() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
+
+Failed to generate: builtins/gen/var/textureStore/976636.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.glsl
new file mode 100644
index 0000000..76294fc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_976636() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_976636();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_976636() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_976636();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_976636() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_976636();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.msl
new file mode 100644
index 0000000..0b284bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_976636() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.spvasm
new file mode 100644
index 0000000..d0d2804
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_976636() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
+
+Failed to generate: builtins/gen/var/textureStore/976636.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.wgsl
new file mode 100644
index 0000000..797cb59
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, read_write>;
+
+fn textureStore_976636() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_976636();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_976636();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_976636();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl
new file mode 100644
index 0000000..1f3a6c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_9ba5c1() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..187a4f7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_9ba5c1() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9ba5c1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..187a4f7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_9ba5c1() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9ba5c1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.glsl
new file mode 100644
index 0000000..3b0e12c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9ba5c1() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_9ba5c1();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9ba5c1() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_9ba5c1();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9ba5c1() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_9ba5c1();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.msl
new file mode 100644
index 0000000..63fb626
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_9ba5c1() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.spvasm
new file mode 100644
index 0000000..910f9df
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_9ba5c1() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9ba5c1.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.wgsl
new file mode 100644
index 0000000..119da56
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_9ba5c1() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9ba5c1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9ba5c1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9ba5c1();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl
new file mode 100644
index 0000000..6dcf058
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_9cea9e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b4c0c63
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_9cea9e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9cea9e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b4c0c63
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_9cea9e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9cea9e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.glsl
new file mode 100644
index 0000000..14ba73a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_9cea9e() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_9cea9e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_9cea9e() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_9cea9e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_9cea9e() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_9cea9e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.msl
new file mode 100644
index 0000000..dae590b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_9cea9e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.spvasm
new file mode 100644
index 0000000..29655a9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_9cea9e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9cea9e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.wgsl
new file mode 100644
index 0000000..dcdcb21
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_9cea9e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9cea9e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9cea9e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9cea9e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl
new file mode 100644
index 0000000..d75d10a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba8uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_9d7c62() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a91a7b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_9d7c62() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9d7c62.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a91a7b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_9d7c62() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9d7c62.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.glsl
new file mode 100644
index 0000000..61c9837
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9d7c62() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_9d7c62();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9d7c62() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_9d7c62();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_9d7c62() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_9d7c62();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.msl
new file mode 100644
index 0000000..e709412
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_9d7c62() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.spvasm
new file mode 100644
index 0000000..472f2bd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_9d7c62() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
+
+Failed to generate: builtins/gen/var/textureStore/9d7c62.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.wgsl
new file mode 100644
index 0000000..d07396b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, read_write>;
+
+fn textureStore_9d7c62() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_9d7c62();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_9d7c62();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_9d7c62();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl
new file mode 100644
index 0000000..595954f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_a0022f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eaf1e82
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_a0022f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a0022f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eaf1e82
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_a0022f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a0022f.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.glsl
new file mode 100644
index 0000000..3bdc540
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_a0022f() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_a0022f();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_a0022f() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_a0022f();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_a0022f() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_a0022f();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.msl
new file mode 100644
index 0000000..c5620bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_a0022f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.spvasm
new file mode 100644
index 0000000..48e7df5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_a0022f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a0022f.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.wgsl
new file mode 100644
index 0000000..a29e7d0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_a0022f() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a0022f();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a0022f();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a0022f();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl b/test/tint/builtins/gen/var/textureStore/a14041.wgsl
new file mode 100644
index 0000000..9e947f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba32sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_a14041() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..edef12b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_a14041() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a14041.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..edef12b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_a14041() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a14041.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.glsl
new file mode 100644
index 0000000..7eeed5e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_a14041() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_a14041();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_a14041() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_a14041();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_a14041() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_a14041();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.msl
new file mode 100644
index 0000000..19f8bab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_a14041() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.spvasm
new file mode 100644
index 0000000..c0a6592
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_a14041() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a14041.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.wgsl
new file mode 100644
index 0000000..828c107
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, read_write>;
+
+fn textureStore_a14041() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a14041();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a14041();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a14041();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl
new file mode 100644
index 0000000..d29b0c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_a19a12() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4bb4a3b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_a19a12() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a19a12.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4bb4a3b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_a19a12() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a19a12.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.glsl
new file mode 100644
index 0000000..50d154b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_a19a12() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_a19a12();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_a19a12() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_a19a12();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_a19a12() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_a19a12();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.msl
new file mode 100644
index 0000000..f039480
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_a19a12() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.spvasm
new file mode 100644
index 0000000..9f8d8e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_a19a12() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a19a12.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.wgsl
new file mode 100644
index 0000000..ba609ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_a19a12() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a19a12();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a19a12();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a19a12();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl b/test/tint/builtins/gen/var/textureStore/a24491.wgsl
new file mode 100644
index 0000000..2425ec2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32uint, read_write>, coords: vec2<u32>, value: vec4<u32>)
+fn textureStore_a24491() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..527ae2d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_a24491() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a24491.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..527ae2d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_a24491() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a24491.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.glsl
new file mode 100644
index 0000000..bec773b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a24491() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_a24491();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a24491() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_a24491();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a24491() {
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_a24491();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.msl
new file mode 100644
index 0000000..3966db6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_a24491() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.spvasm
new file mode 100644
index 0000000..d2cfbbd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_a24491() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a24491.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.wgsl
new file mode 100644
index 0000000..4880047
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, read_write>;
+
+fn textureStore_a24491() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a24491();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a24491();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a24491();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl
new file mode 100644
index 0000000..3f715dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba16sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_a5b88e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8391763
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_a5b88e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a5b88e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8391763
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_a5b88e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a5b88e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.glsl
new file mode 100644
index 0000000..953f9c2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5b88e() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_a5b88e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5b88e() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_a5b88e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5b88e() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_a5b88e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.msl
new file mode 100644
index 0000000..b2709ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_a5b88e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.spvasm
new file mode 100644
index 0000000..24e5dfa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_a5b88e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a5b88e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.wgsl
new file mode 100644
index 0000000..63c6319
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, read_write>;
+
+fn textureStore_a5b88e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5b88e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5b88e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5b88e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl
new file mode 100644
index 0000000..a183784
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_a5c925() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..fa0d690
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_a5c925() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a5c925.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..fa0d690
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_a5c925() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a5c925.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.glsl
new file mode 100644
index 0000000..21a7809
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5c925() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_a5c925();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5c925() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_a5c925();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage3D arg_0;
+void textureStore_a5c925() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_a5c925();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.msl
new file mode 100644
index 0000000..318023d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_a5c925() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.spvasm
new file mode 100644
index 0000000..f875c08
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_a5c925() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a5c925.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.wgsl
new file mode 100644
index 0000000..fc968b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, read_write>;
+
+fn textureStore_a5c925() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a5c925();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a5c925();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a5c925();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl
new file mode 100644
index 0000000..766f0e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<bgra8unorm, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_a66ca4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f2c8416
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_a66ca4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a66ca4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f2c8416
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_a66ca4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a66ca4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.glsl
new file mode 100644
index 0000000..c4ee932
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_a66ca4() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_a66ca4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_a66ca4() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2.bgra);
+}
+
+void fragment_main() {
+  textureStore_a66ca4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_a66ca4() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2.bgra);
+}
+
+void compute_main() {
+  textureStore_a66ca4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.msl
new file mode 100644
index 0000000..9cbb346
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_a66ca4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.spvasm
new file mode 100644
index 0000000..fa9cb9e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_a66ca4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a66ca4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.wgsl
new file mode 100644
index 0000000..082966c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_a66ca4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a66ca4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a66ca4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a66ca4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl
new file mode 100644
index 0000000..79556de
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_a702b6() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0350699
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_a702b6() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a702b6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0350699
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_a702b6() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a702b6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.glsl
new file mode 100644
index 0000000..44157f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_a702b6() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_a702b6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_a702b6() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_a702b6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_a702b6() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_a702b6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.msl
new file mode 100644
index 0000000..d99edf2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_a702b6() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.spvasm
new file mode 100644
index 0000000..c8ba72d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_a702b6() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a702b6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.wgsl
new file mode 100644
index 0000000..9d974f1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_a702b6() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a702b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a702b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a702b6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl
new file mode 100644
index 0000000..b8b0091
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32uint, read_write>, coords: u32, value: vec4<u32>)
+fn textureStore_a9298c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ce13643
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_a9298c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a9298c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ce13643
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_a9298c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a9298c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.glsl
new file mode 100644
index 0000000..f3fbcf4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a9298c() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_a9298c();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a9298c() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_a9298c();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_a9298c() {
+  uint arg_1 = 1u;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_a9298c();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.msl
new file mode 100644
index 0000000..0dd2f88
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_a9298c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.spvasm
new file mode 100644
index 0000000..e4c9934
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_a9298c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/a9298c.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.wgsl
new file mode 100644
index 0000000..eecae40
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, read_write>;
+
+fn textureStore_a9298c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_a9298c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_a9298c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_a9298c();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl
new file mode 100644
index 0000000..38e1e42
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_ab03b6() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a146eee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_ab03b6() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ab03b6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a146eee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_ab03b6() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ab03b6.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.glsl
new file mode 100644
index 0000000..2f26b75
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_ab03b6() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_ab03b6();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_ab03b6() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_ab03b6();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_ab03b6() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_ab03b6();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.msl
new file mode 100644
index 0000000..1afdad0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_ab03b6() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.spvasm
new file mode 100644
index 0000000..461ce8c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_ab03b6() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ab03b6.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.wgsl
new file mode 100644
index 0000000..5b38b79
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_ab03b6() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab03b6();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab03b6();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab03b6();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl
new file mode 100644
index 0000000..73af4e6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rg32float, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_ab788e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..40dad39
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_ab788e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ab788e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..40dad39
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_ab788e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ab788e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.glsl
new file mode 100644
index 0000000..b1e99da
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_ab788e() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_ab788e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_ab788e() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_ab788e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2D arg_0;
+void textureStore_ab788e() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_ab788e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.msl
new file mode 100644
index 0000000..34ff58f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_ab788e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.spvasm
new file mode 100644
index 0000000..f152955
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_ab788e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ab788e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.wgsl
new file mode 100644
index 0000000..6eb9c18
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, read_write>;
+
+fn textureStore_ab788e() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ab788e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ab788e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ab788e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl
new file mode 100644
index 0000000..3912276
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_abdd21() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7b86551
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_abdd21() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
+
+Failed to generate: builtins/gen/var/textureStore/abdd21.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7b86551
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_abdd21() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
+
+Failed to generate: builtins/gen/var/textureStore/abdd21.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.glsl
new file mode 100644
index 0000000..1a71f7b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_abdd21() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_abdd21();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_abdd21() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_abdd21();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_abdd21() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_abdd21();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.msl
new file mode 100644
index 0000000..7e9fd26
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_abdd21() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.spvasm
new file mode 100644
index 0000000..0f72415
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_abdd21() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
+
+Failed to generate: builtins/gen/var/textureStore/abdd21.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.wgsl
new file mode 100644
index 0000000..4373cc8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_abdd21() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_abdd21();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_abdd21();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_abdd21();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl
new file mode 100644
index 0000000..0e928c3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_ac0a55() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a177f0f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_ac0a55() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ac0a55.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a177f0f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_ac0a55() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ac0a55.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.glsl
new file mode 100644
index 0000000..d907358
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_ac0a55() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_ac0a55();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_ac0a55() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_ac0a55();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_ac0a55() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_ac0a55();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.msl
new file mode 100644
index 0000000..2c84ed3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_ac0a55() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.spvasm
new file mode 100644
index 0000000..f5aaf57
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_ac0a55() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ac0a55.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.wgsl
new file mode 100644
index 0000000..4b36d55
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_ac0a55() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ac0a55();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ac0a55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ac0a55();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl
new file mode 100644
index 0000000..daa9045
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_aedea3() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..569ebf3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_aedea3() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/aedea3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..569ebf3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_aedea3() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/aedea3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.glsl
new file mode 100644
index 0000000..54f3a5d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_aedea3() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_aedea3();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_aedea3() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_aedea3();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_aedea3() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_aedea3();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.msl
new file mode 100644
index 0000000..5ba5ccd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_aedea3() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.spvasm
new file mode 100644
index 0000000..82807a3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_aedea3() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/aedea3.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.wgsl
new file mode 100644
index 0000000..2332403
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_aedea3() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_aedea3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_aedea3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_aedea3();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl b/test/tint/builtins/gen/var/textureStore/b16110.wgsl
new file mode 100644
index 0000000..50390c4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_b16110() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c70dd62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_b16110() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b16110.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c70dd62
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_b16110() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b16110.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.glsl
new file mode 100644
index 0000000..858aa1b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_b16110() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_b16110();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_b16110() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_b16110();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_b16110() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_b16110();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.msl
new file mode 100644
index 0000000..3a6e1c8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_b16110() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.spvasm
new file mode 100644
index 0000000..de9c2f9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_b16110() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b16110.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.wgsl
new file mode 100644
index 0000000..7b62376
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_b16110() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b16110();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b16110();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b16110();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl
new file mode 100644
index 0000000..5e53725
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_b286b4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b1d4142
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_b286b4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b286b4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b1d4142
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_b286b4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b286b4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.glsl
new file mode 100644
index 0000000..80ca94e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b286b4() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_b286b4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b286b4() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_b286b4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b286b4() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_b286b4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.msl
new file mode 100644
index 0000000..cae1181
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_b286b4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.spvasm
new file mode 100644
index 0000000..4ad196d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_b286b4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b286b4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.wgsl
new file mode 100644
index 0000000..dc975da
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_b286b4() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b286b4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b286b4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b286b4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl
new file mode 100644
index 0000000..e9f330a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_b36bc1() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..850d9cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_b36bc1() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b36bc1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..850d9cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_b36bc1() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b36bc1.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.glsl
new file mode 100644
index 0000000..81ebf87
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b36bc1() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_b36bc1();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b36bc1() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_b36bc1();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b36bc1() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_b36bc1();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.msl
new file mode 100644
index 0000000..9d0b5e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_b36bc1() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.spvasm
new file mode 100644
index 0000000..a006c37
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_b36bc1() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b36bc1.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.wgsl
new file mode 100644
index 0000000..3e04e13
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, read_write>;
+
+fn textureStore_b36bc1() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b36bc1();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b36bc1();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b36bc1();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl
new file mode 100644
index 0000000..80e74e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<bgra8unorm, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_b4389e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..373ca70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_b4389e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b4389e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..373ca70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_b4389e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b4389e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.glsl
new file mode 100644
index 0000000..61508d0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_b4389e() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_b4389e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_b4389e() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2.bgra);
+}
+
+void fragment_main() {
+  textureStore_b4389e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image3D arg_0;
+void textureStore_b4389e() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2.bgra);
+}
+
+void compute_main() {
+  textureStore_b4389e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.msl
new file mode 100644
index 0000000..adc2bb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_b4389e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.spvasm
new file mode 100644
index 0000000..3b725de
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_b4389e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b4389e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.wgsl
new file mode 100644
index 0000000..67f92e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<bgra8unorm, read_write>;
+
+fn textureStore_b4389e() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b4389e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b4389e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b4389e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl
new file mode 100644
index 0000000..0d318e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32float, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_b71c13() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..24607ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_b71c13() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b71c13.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..24607ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_b71c13() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b71c13.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.glsl
new file mode 100644
index 0000000..0a7fd39
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_b71c13() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_b71c13();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_b71c13() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_b71c13();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_b71c13() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_b71c13();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.msl
new file mode 100644
index 0000000..e6e6770
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_b71c13() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.spvasm
new file mode 100644
index 0000000..c2985e7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_b71c13() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b71c13.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.wgsl
new file mode 100644
index 0000000..639922f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureStore_b71c13() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b71c13();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b71c13();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b71c13();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl
new file mode 100644
index 0000000..87eac14
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32float, read_write>, coords: u32, value: vec4<f32>)
+fn textureStore_b7232c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5634394
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_b7232c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b7232c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5634394
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_b7232c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b7232c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.glsl
new file mode 100644
index 0000000..e8c6b04
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_b7232c() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_b7232c();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_b7232c() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_b7232c();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2D arg_0;
+void textureStore_b7232c() {
+  uint arg_1 = 1u;
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_b7232c();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.msl
new file mode 100644
index 0000000..6faace0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_b7232c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.spvasm
new file mode 100644
index 0000000..b425347
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_b7232c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b7232c.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.wgsl
new file mode 100644
index 0000000..c91e734
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, read_write>;
+
+fn textureStore_b7232c() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b7232c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b7232c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b7232c();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl
new file mode 100644
index 0000000..7a85f4f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<bgra8unorm, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_b89ffb() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8caf30e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_b89ffb() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b89ffb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8caf30e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_b89ffb() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b89ffb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.glsl
new file mode 100644
index 0000000..fc741ef
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_b89ffb() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_b89ffb();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_b89ffb() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3.bgra);
+}
+
+void fragment_main() {
+  textureStore_b89ffb();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_b89ffb() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3.bgra);
+}
+
+void compute_main() {
+  textureStore_b89ffb();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.msl
new file mode 100644
index 0000000..db066bf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_b89ffb() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.spvasm
new file mode 100644
index 0000000..90643d6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_b89ffb() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b89ffb.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.wgsl
new file mode 100644
index 0000000..408f35d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_b89ffb() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b89ffb();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b89ffb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b89ffb();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl
new file mode 100644
index 0000000..154c22e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32uint, read_write>, coords: vec3<i32>, value: vec4<u32>)
+fn textureStore_b9c81a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4311354
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_b9c81a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b9c81a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4311354
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_b9c81a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b9c81a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.glsl
new file mode 100644
index 0000000..afa9a24
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b9c81a() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_b9c81a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b9c81a() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_b9c81a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_b9c81a() {
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_b9c81a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.msl
new file mode 100644
index 0000000..f08aeb1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_b9c81a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.spvasm
new file mode 100644
index 0000000..b01961f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_b9c81a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b9c81a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.wgsl
new file mode 100644
index 0000000..b0a8c90
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, read_write>;
+
+fn textureStore_b9c81a() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9c81a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9c81a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9c81a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl
new file mode 100644
index 0000000..56f4367
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_b9d863() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..202fe65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_b9d863() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b9d863.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..202fe65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_b9d863() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b9d863.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.glsl
new file mode 100644
index 0000000..507aa4b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b9d863() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_b9d863();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b9d863() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_b9d863();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_b9d863() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_b9d863();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.msl
new file mode 100644
index 0000000..6a2b152
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_b9d863() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.spvasm
new file mode 100644
index 0000000..32d9a68
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_b9d863() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
+
+Failed to generate: builtins/gen/var/textureStore/b9d863.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.wgsl
new file mode 100644
index 0000000..31f6e9c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_b9d863() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_b9d863();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_b9d863();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_b9d863();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl
new file mode 100644
index 0000000..e396248
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_bc1423() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1d812ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_bc1423() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bc1423.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1d812ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_bc1423() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bc1423.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.glsl
new file mode 100644
index 0000000..0ace69e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bc1423() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_bc1423();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bc1423() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_bc1423();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bc1423() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_bc1423();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.msl
new file mode 100644
index 0000000..e28d7eb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_bc1423() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.spvasm
new file mode 100644
index 0000000..9e4cefe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_bc1423() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bc1423.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.wgsl
new file mode 100644
index 0000000..429ec7e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_bc1423() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bc1423();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bc1423();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bc1423();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl
new file mode 100644
index 0000000..0e46d77
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<r32sint, read_write>, coords: vec2<i32>, value: vec4<i32>)
+fn textureStore_bcc97a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..87e91a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_bcc97a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bcc97a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..87e91a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_bcc97a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bcc97a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.glsl
new file mode 100644
index 0000000..b9b9708
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_bcc97a() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_bcc97a();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_bcc97a() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_bcc97a();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_bcc97a() {
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_bcc97a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.msl
new file mode 100644
index 0000000..57f6a70
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_bcc97a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.spvasm
new file mode 100644
index 0000000..8ec2c25
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_bcc97a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bcc97a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.wgsl
new file mode 100644
index 0000000..ba20980
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, read_write>;
+
+fn textureStore_bcc97a() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bcc97a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bcc97a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bcc97a();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl
new file mode 100644
index 0000000..c6836f1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_bd6602() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e9b0a76
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_bd6602() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bd6602.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e9b0a76
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_bd6602() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bd6602.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.glsl
new file mode 100644
index 0000000..755a05c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bd6602() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_bd6602();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bd6602() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_bd6602();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_bd6602() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_bd6602();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.msl
new file mode 100644
index 0000000..accb840
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_bd6602() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.spvasm
new file mode 100644
index 0000000..2b59eba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_bd6602() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
+
+Failed to generate: builtins/gen/var/textureStore/bd6602.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.wgsl
new file mode 100644
index 0000000..a6b4552
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureStore_bd6602() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_bd6602();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_bd6602();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_bd6602();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl b/test/tint/builtins/gen/var/textureStore/c06463.wgsl
new file mode 100644
index 0000000..1c448e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<bgra8unorm, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
+fn textureStore_c06463() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4fa276b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_c06463() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c06463.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4fa276b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_c06463() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c06463.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.glsl
new file mode 100644
index 0000000..138f7ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_c06463() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_c06463();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_c06463() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3.bgra);
+}
+
+void fragment_main() {
+  textureStore_c06463();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_c06463() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3.bgra);
+}
+
+void compute_main() {
+  textureStore_c06463();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.msl
new file mode 100644
index 0000000..981a094
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_c06463() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.spvasm
new file mode 100644
index 0000000..4166167
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_c06463() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c06463.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.wgsl
new file mode 100644
index 0000000..9235196
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureStore_c06463() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c06463();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c06463();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c06463();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl
new file mode 100644
index 0000000..88d24a1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32float, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_c1c664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d5dd3e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_c1c664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c1c664.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d5dd3e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_c1c664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c1c664.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.glsl
new file mode 100644
index 0000000..155db8f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_c1c664() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_c1c664();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_c1c664() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_c1c664();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_c1c664() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_c1c664();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.msl
new file mode 100644
index 0000000..4b00911
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_c1c664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.spvasm
new file mode 100644
index 0000000..c7c00e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_c1c664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c1c664.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.wgsl
new file mode 100644
index 0000000..92aec44
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_c1c664() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1c664();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1c664();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1c664();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl
new file mode 100644
index 0000000..f6d6aae
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16uint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
+fn textureStore_c1f760() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c726541
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_c1f760() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c1f760.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c726541
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_c1f760() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c1f760.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.glsl
new file mode 100644
index 0000000..489c9cb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c1f760() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_c1f760();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c1f760() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_c1f760();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c1f760() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_c1f760();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.msl
new file mode 100644
index 0000000..e2f6248
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_c1f760() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.spvasm
new file mode 100644
index 0000000..2f105cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_c1f760() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c1f760.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.wgsl
new file mode 100644
index 0000000..0d70be9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_c1f760() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c1f760();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c1f760();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c1f760();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl b/test/tint/builtins/gen/var/textureStore/c33478.wgsl
new file mode 100644
index 0000000..4a80302
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32float, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32float, read_write>, coords: vec3<i32>, value: vec4<f32>)
+fn textureStore_c33478() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ff917cb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_c33478() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c33478.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ff917cb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_c33478() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c33478.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.glsl
new file mode 100644
index 0000000..4a0203b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_c33478() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_c33478();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_c33478() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_c33478();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image3D arg_0;
+void textureStore_c33478() {
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_c33478();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.msl
new file mode 100644
index 0000000..7bb8965
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_c33478() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.spvasm
new file mode 100644
index 0000000..bfe788c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_c33478() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c33478.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.wgsl
new file mode 100644
index 0000000..decfca2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, read_write>;
+
+fn textureStore_c33478() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c33478();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c33478();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c33478();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl
new file mode 100644
index 0000000..dd32731
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_c35268() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b604415
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_c35268() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c35268.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b604415
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_c35268() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c35268.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.glsl
new file mode 100644
index 0000000..92dbca2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c35268() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_c35268();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c35268() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_c35268();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_c35268() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_c35268();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.msl
new file mode 100644
index 0000000..94c0e8c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_c35268() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.spvasm
new file mode 100644
index 0000000..c34ac79
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_c35268() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c35268.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.wgsl
new file mode 100644
index 0000000..04e65b0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureStore_c35268() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c35268();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c35268();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c35268();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl
new file mode 100644
index 0000000..5cead0a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_c63f05() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8fc0dd7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_c63f05() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c63f05.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8fc0dd7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_c63f05() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c63f05.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.glsl
new file mode 100644
index 0000000..aaa2212
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_c63f05() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_c63f05();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_c63f05() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_c63f05();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_c63f05() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_c63f05();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.msl
new file mode 100644
index 0000000..c158392
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_c63f05() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.spvasm
new file mode 100644
index 0000000..9e5980d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_c63f05() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c63f05.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.wgsl
new file mode 100644
index 0000000..b29d7b7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_c63f05() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c63f05();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c63f05();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c63f05();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl b/test/tint/builtins/gen/var/textureStore/c79451.wgsl
new file mode 100644
index 0000000..7e48f90
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16sint, read_write>, coords: u32, value: vec4<i32>)
+fn textureStore_c79451() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..aee984e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_c79451() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c79451.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..aee984e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_c79451() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c79451.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.glsl
new file mode 100644
index 0000000..1648d9e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_c79451() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_c79451();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_c79451() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void fragment_main() {
+  textureStore_c79451();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_c79451() {
+  uint arg_1 = 1u;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), arg_2);
+}
+
+void compute_main() {
+  textureStore_c79451();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.msl
new file mode 100644
index 0000000..c02f202
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_c79451() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.spvasm
new file mode 100644
index 0000000..27cd0d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_c79451() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
+
+Failed to generate: builtins/gen/var/textureStore/c79451.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.wgsl
new file mode 100644
index 0000000..8ccc48b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_c79451() {
+  var arg_1 = 1u;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_c79451();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_c79451();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_c79451();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl
new file mode 100644
index 0000000..e29d1f5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba32float, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_ccac20() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f0bbe92
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_ccac20() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ccac20.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f0bbe92
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_ccac20() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ccac20.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.glsl
new file mode 100644
index 0000000..0933dac
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_ccac20() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_ccac20();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_ccac20() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_ccac20();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2D arg_0;
+void textureStore_ccac20() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_ccac20();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.msl
new file mode 100644
index 0000000..d88d9da
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_ccac20() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.spvasm
new file mode 100644
index 0000000..e25e001
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_ccac20() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ccac20.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.wgsl
new file mode 100644
index 0000000..c3e66f3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, read_write>;
+
+fn textureStore_ccac20() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ccac20();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ccac20();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ccac20();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl
new file mode 100644
index 0000000..a90bd5a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32sint, read_write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
+fn textureStore_ceb832() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..86e6059
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_ceb832() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ceb832.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..86e6059
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_ceb832() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ceb832.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.glsl
new file mode 100644
index 0000000..135e226
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ceb832() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_ceb832();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ceb832() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_ceb832();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ceb832() {
+  uvec2 arg_1 = uvec2(1u);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_ceb832();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.msl
new file mode 100644
index 0000000..9427866
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_ceb832() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.spvasm
new file mode 100644
index 0000000..91d16a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_ceb832() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ceb832.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.wgsl
new file mode 100644
index 0000000..b833c11
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureStore_ceb832() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ceb832();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ceb832();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ceb832();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl
new file mode 100644
index 0000000..a86413e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8uint, read_write>, coords: vec2<i32>, value: vec4<u32>)
+fn textureStore_d0d62c() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c53b668
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_d0d62c() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d0d62c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c53b668
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_d0d62c() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d0d62c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.glsl
new file mode 100644
index 0000000..4362eaf
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_d0d62c() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_d0d62c();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_d0d62c() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_d0d62c();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_d0d62c() {
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_d0d62c();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.msl
new file mode 100644
index 0000000..57c9e35
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_d0d62c() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.spvasm
new file mode 100644
index 0000000..1b7789e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_d0d62c() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d0d62c.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.wgsl
new file mode 100644
index 0000000..2775444
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, read_write>;
+
+fn textureStore_d0d62c() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0d62c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0d62c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0d62c();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl
new file mode 100644
index 0000000..b3df30d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8unorm, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_d0fadc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..03a9172
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_d0fadc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d0fadc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..03a9172
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_d0fadc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d0fadc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.glsl
new file mode 100644
index 0000000..217da35
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_d0fadc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_d0fadc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_d0fadc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_d0fadc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_d0fadc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_d0fadc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.msl
new file mode 100644
index 0000000..6ae8a01
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_d0fadc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.spvasm
new file mode 100644
index 0000000..733c11a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_d0fadc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d0fadc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.wgsl
new file mode 100644
index 0000000..99f722c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_d0fadc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d0fadc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d0fadc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d0fadc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl
new file mode 100644
index 0000000..a4ee82d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rg32sint, read_write>, coords: vec3<i32>, value: vec4<i32>)
+fn textureStore_d19db4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4dc7b0e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_d19db4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d19db4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4dc7b0e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_d19db4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d19db4.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.glsl
new file mode 100644
index 0000000..5ab622f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_d19db4() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_d19db4();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_d19db4() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_d19db4();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_d19db4() {
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_d19db4();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.msl
new file mode 100644
index 0000000..65e87a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_d19db4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.spvasm
new file mode 100644
index 0000000..4c49211
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_d19db4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d19db4.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.wgsl
new file mode 100644
index 0000000..4f79ee0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, read_write>;
+
+fn textureStore_d19db4() {
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d19db4();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d19db4();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d19db4();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl
new file mode 100644
index 0000000..4bf375c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8unorm, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_d1ab82() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b04207e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_d1ab82() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d1ab82.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b04207e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_d1ab82() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d1ab82.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.glsl
new file mode 100644
index 0000000..4c6d1c5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_d1ab82() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_d1ab82();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_d1ab82() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_d1ab82();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_d1ab82() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_d1ab82();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.msl
new file mode 100644
index 0000000..994b291
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_d1ab82() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.spvasm
new file mode 100644
index 0000000..81d5e52
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_d1ab82() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d1ab82.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.wgsl
new file mode 100644
index 0000000..8f8f8b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, read_write>;
+
+fn textureStore_d1ab82() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d1ab82();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d1ab82();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d1ab82();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl
new file mode 100644
index 0000000..19e482f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba32uint, read_write>, coords: vec3<u32>, value: vec4<u32>)
+fn textureStore_d3a22b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..13e051f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_d3a22b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d3a22b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..13e051f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_d3a22b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d3a22b.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.glsl
new file mode 100644
index 0000000..45c1d92
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_d3a22b() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_d3a22b();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_d3a22b() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_d3a22b();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
+void textureStore_d3a22b() {
+  uvec3 arg_1 = uvec3(1u);
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_d3a22b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.msl
new file mode 100644
index 0000000..6edecc7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_d3a22b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.spvasm
new file mode 100644
index 0000000..9cb6ced
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_d3a22b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d3a22b.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.wgsl
new file mode 100644
index 0000000..41f3c35
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, read_write>;
+
+fn textureStore_d3a22b() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d3a22b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d3a22b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d3a22b();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl
new file mode 100644
index 0000000..a556115
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8snorm, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_d86d33() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b7cfb31
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_d86d33() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d86d33.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b7cfb31
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_d86d33() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d86d33.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.glsl
new file mode 100644
index 0000000..be1edce
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_d86d33() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_d86d33();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_d86d33() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_d86d33();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+void textureStore_d86d33() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_d86d33();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.msl
new file mode 100644
index 0000000..6e5e836
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_d86d33() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.spvasm
new file mode 100644
index 0000000..2695bba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_d86d33() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
+
+Failed to generate: builtins/gen/var/textureStore/d86d33.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.wgsl
new file mode 100644
index 0000000..6c6d379
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureStore_d86d33() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_d86d33();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_d86d33();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_d86d33();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl b/test/tint/builtins/gen/var/textureStore/da530c.wgsl
new file mode 100644
index 0000000..6da849d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8sint, read_write>, coords: vec2<u32>, value: vec4<i32>)
+fn textureStore_da530c() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..94a40a1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_da530c() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/da530c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..94a40a1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_da530c() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/da530c.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.glsl
new file mode 100644
index 0000000..b653290
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_da530c() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_da530c();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_da530c() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_da530c();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2D arg_0;
+void textureStore_da530c() {
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_da530c();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.msl
new file mode 100644
index 0000000..2518d41
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_da530c() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.spvasm
new file mode 100644
index 0000000..4eb6507
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_da530c() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
+
+Failed to generate: builtins/gen/var/textureStore/da530c.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.wgsl
new file mode 100644
index 0000000..c0f0f25
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, read_write>;
+
+fn textureStore_da530c() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_da530c();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_da530c();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_da530c();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl b/test/tint/builtins/gen/var/textureStore/db5128.wgsl
new file mode 100644
index 0000000..b882706
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16uint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
+fn textureStore_db5128() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b8b2934
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_db5128() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
+
+Failed to generate: builtins/gen/var/textureStore/db5128.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b8b2934
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_db5128() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
+
+Failed to generate: builtins/gen/var/textureStore/db5128.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.glsl
new file mode 100644
index 0000000..364e10d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_db5128() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_db5128();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_db5128() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_db5128();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_db5128() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_db5128();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.msl
new file mode 100644
index 0000000..267a5e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_db5128() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.spvasm
new file mode 100644
index 0000000..8bd4e04
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_db5128() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
+
+Failed to generate: builtins/gen/var/textureStore/db5128.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.wgsl
new file mode 100644
index 0000000..5e2ecbe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureStore_db5128() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_db5128();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_db5128();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_db5128();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl
new file mode 100644
index 0000000..9a0a555
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<r32float, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_dce0e2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..516755d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_dce0e2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/dce0e2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..516755d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_dce0e2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/dce0e2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.glsl
new file mode 100644
index 0000000..01e9896
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_dce0e2() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_dce0e2();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_dce0e2() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_dce0e2();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_dce0e2() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_dce0e2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.msl
new file mode 100644
index 0000000..4b1aa55
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_dce0e2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.spvasm
new file mode 100644
index 0000000..7ec1c72
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_dce0e2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/dce0e2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.wgsl
new file mode 100644
index 0000000..0281bc7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureStore_dce0e2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dce0e2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dce0e2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dce0e2();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl
new file mode 100644
index 0000000..fc32b76
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8uint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
+fn textureStore_dd8b29() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..01d99f9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_dd8b29() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
+
+Failed to generate: builtins/gen/var/textureStore/dd8b29.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..01d99f9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_dd8b29() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
+
+Failed to generate: builtins/gen/var/textureStore/dd8b29.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.glsl
new file mode 100644
index 0000000..b248c54
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_dd8b29() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_dd8b29();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_dd8b29() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_dd8b29();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_dd8b29() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_dd8b29();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.msl
new file mode 100644
index 0000000..a905fb9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_dd8b29() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.spvasm
new file mode 100644
index 0000000..866dceb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_dd8b29() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
+
+Failed to generate: builtins/gen/var/textureStore/dd8b29.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.wgsl
new file mode 100644
index 0000000..b121e39
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureStore_dd8b29() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_dd8b29();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_dd8b29();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_dd8b29();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl
new file mode 100644
index 0000000..b95cc03
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<rgba8snorm, read_write>, coords: vec3<u32>, value: vec4<f32>)
+fn textureStore_de38e5() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1cf4ae5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_de38e5() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/de38e5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1cf4ae5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_de38e5() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/de38e5.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.glsl
new file mode 100644
index 0000000..9afe50d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_de38e5() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_de38e5();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_de38e5() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_de38e5();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
+void textureStore_de38e5() {
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_de38e5();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.msl
new file mode 100644
index 0000000..15eab6e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_de38e5() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.spvasm
new file mode 100644
index 0000000..b00e3d4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_de38e5() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
+
+Failed to generate: builtins/gen/var/textureStore/de38e5.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.wgsl
new file mode 100644
index 0000000..7ce5c9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, read_write>;
+
+fn textureStore_de38e5() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_de38e5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_de38e5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_de38e5();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl
new file mode 100644
index 0000000..11c3167
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_3d<r32sint, read_write>, coords: vec3<u32>, value: vec4<i32>)
+fn textureStore_df0c51() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..034eb32
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_df0c51() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
+
+Failed to generate: builtins/gen/var/textureStore/df0c51.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..034eb32
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_df0c51() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
+
+Failed to generate: builtins/gen/var/textureStore/df0c51.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.glsl
new file mode 100644
index 0000000..82489f7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_df0c51() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_df0c51();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_df0c51() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void fragment_main() {
+  textureStore_df0c51();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage3D arg_0;
+void textureStore_df0c51() {
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1), arg_2);
+}
+
+void compute_main() {
+  textureStore_df0c51();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.msl
new file mode 100644
index 0000000..013e873
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_df0c51() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.spvasm
new file mode 100644
index 0000000..c48bba1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_df0c51() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
+
+Failed to generate: builtins/gen/var/textureStore/df0c51.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.wgsl
new file mode 100644
index 0000000..271c4e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, read_write>;
+
+fn textureStore_df0c51() {
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_df0c51();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_df0c51();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_df0c51();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl
new file mode 100644
index 0000000..0d6ed65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rg32sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_e077e7() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2cc6422
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_e077e7() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e077e7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2cc6422
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_e077e7() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e077e7.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.glsl
new file mode 100644
index 0000000..fcda87a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.glsl
@@ -0,0 +1,81 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e077e7() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_e077e7();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e077e7() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_e077e7();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e077e7() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_e077e7();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.msl
new file mode 100644
index 0000000..5d0ef26
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_e077e7() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.spvasm
new file mode 100644
index 0000000..2360c4e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_e077e7() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e077e7.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.wgsl
new file mode 100644
index 0000000..9efc2d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, read_write>;
+
+fn textureStore_e077e7() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e077e7();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e077e7();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e077e7();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl
new file mode 100644
index 0000000..a2140ef
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32float, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_e1784d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..76ac474
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_e1784d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e1784d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..76ac474
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_e1784d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e1784d.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.glsl
new file mode 100644
index 0000000..e9d1e35
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e1784d() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_e1784d();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e1784d() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_e1784d();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e1784d() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_e1784d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.msl
new file mode 100644
index 0000000..20dce59
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_e1784d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.spvasm
new file mode 100644
index 0000000..d34ab5b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_e1784d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e1784d.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.wgsl
new file mode 100644
index 0000000..2724144
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureStore_e1784d() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e1784d();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e1784d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e1784d();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl
new file mode 100644
index 0000000..72a63ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<bgra8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<bgra8unorm, read_write>, coords: vec2<u32>, value: vec4<f32>)
+fn textureStore_e46fd8() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3f18f3b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_e46fd8() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e46fd8.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3f18f3b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_e46fd8() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e46fd8.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.glsl
new file mode 100644
index 0000000..068fbf1
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_e46fd8() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2.bgra);
+}
+
+vec4 vertex_main() {
+  textureStore_e46fd8();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_e46fd8() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2.bgra);
+}
+
+void fragment_main() {
+  textureStore_e46fd8();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2D arg_0;
+void textureStore_e46fd8() {
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, ivec2(arg_1), arg_2.bgra);
+}
+
+void compute_main() {
+  textureStore_e46fd8();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.msl
new file mode 100644
index 0000000..801156b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_e46fd8() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.spvasm
new file mode 100644
index 0000000..80616e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_e46fd8() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e46fd8.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.wgsl
new file mode 100644
index 0000000..8a17ce6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<bgra8unorm, read_write>;
+
+fn textureStore_e46fd8() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e46fd8();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e46fd8();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e46fd8();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl
new file mode 100644
index 0000000..48b01ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba16float, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
+fn textureStore_e72bdc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6a94507
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_e72bdc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e72bdc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6a94507
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_e72bdc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e72bdc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.glsl
new file mode 100644
index 0000000..d9a87a7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e72bdc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_e72bdc();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e72bdc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_e72bdc();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+void textureStore_e72bdc() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_e72bdc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.msl
new file mode 100644
index 0000000..89ef08b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_e72bdc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c53d46
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_e72bdc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e72bdc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.wgsl
new file mode 100644
index 0000000..659200e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureStore_e72bdc() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e72bdc();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e72bdc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e72bdc();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl
new file mode 100644
index 0000000..d66bbf49
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_e87f6e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2c68032
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_e87f6e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e87f6e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2c68032
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_e87f6e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e87f6e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.glsl
new file mode 100644
index 0000000..bdbddd0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e87f6e() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_e87f6e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e87f6e() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_e87f6e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2D arg_0;
+void textureStore_e87f6e() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_e87f6e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.msl
new file mode 100644
index 0000000..d579192
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_e87f6e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.spvasm
new file mode 100644
index 0000000..50d651a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_e87f6e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/e87f6e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.wgsl
new file mode 100644
index 0000000..636f860
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, read_write>;
+
+fn textureStore_e87f6e() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_e87f6e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_e87f6e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_e87f6e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl
new file mode 100644
index 0000000..35f6a59
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rg32sint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
+fn textureStore_ea30d2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..792ac30
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_ea30d2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ea30d2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..792ac30
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_ea30d2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ea30d2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.glsl
new file mode 100644
index 0000000..1aaa273
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.glsl
@@ -0,0 +1,84 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ea30d2() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_ea30d2();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ea30d2() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_ea30d2();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_ea30d2() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_ea30d2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.msl
new file mode 100644
index 0000000..edd0095
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_ea30d2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.spvasm
new file mode 100644
index 0000000..d7f4115
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_ea30d2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ea30d2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.wgsl
new file mode 100644
index 0000000..bc38213
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureStore_ea30d2() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ea30d2();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ea30d2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ea30d2();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl b/test/tint/builtins/gen/var/textureStore/f05928.wgsl
new file mode 100644
index 0000000..b9c1d10
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32sint, read_write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
+fn textureStore_f05928() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b2ca42e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f05928() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f05928.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b2ca42e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f05928() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f05928.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.glsl
new file mode 100644
index 0000000..352c43e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f05928() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_f05928();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f05928() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void fragment_main() {
+  textureStore_f05928();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f05928() {
+  ivec2 arg_1 = ivec2(1);
+  uint arg_2 = 1u;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
+}
+
+void compute_main() {
+  textureStore_f05928();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.msl
new file mode 100644
index 0000000..6d72eda
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f05928() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.spvasm
new file mode 100644
index 0000000..6a29292
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f05928() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f05928.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.wgsl
new file mode 100644
index 0000000..06fd301
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f05928() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1u;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f05928();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f05928();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f05928();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl
new file mode 100644
index 0000000..fbea34f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<r32sint, read_write>, coords: i32, value: vec4<i32>)
+fn textureStore_f64d69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8318fab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_f64d69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f64d69.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8318fab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_f64d69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f64d69.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.glsl
new file mode 100644
index 0000000..fde763a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_f64d69() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_f64d69();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_f64d69() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_f64d69();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2D arg_0;
+void textureStore_f64d69() {
+  int arg_1 = 1;
+  ivec4 arg_2 = ivec4(1);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_f64d69();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.msl
new file mode 100644
index 0000000..dfca645
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_f64d69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.spvasm
new file mode 100644
index 0000000..1127738
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_f64d69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f64d69.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.wgsl
new file mode 100644
index 0000000..963f1bc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, read_write>;
+
+fn textureStore_f64d69() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f64d69();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f64d69();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f64d69();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl
new file mode 100644
index 0000000..43bcbd6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba8unorm, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
+fn textureStore_f6f392() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..45ae57b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_f6f392() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f6f392.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..45ae57b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_f6f392() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f6f392.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.glsl
new file mode 100644
index 0000000..5cac36c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_f6f392() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_f6f392();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_f6f392() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_f6f392();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+void textureStore_f6f392() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  vec4 arg_3 = vec4(1.0f);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_f6f392();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.msl
new file mode 100644
index 0000000..49fe471
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_f6f392() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.spvasm
new file mode 100644
index 0000000..d12421b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_f6f392() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f6f392.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.wgsl
new file mode 100644
index 0000000..11ee518
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureStore_f6f392() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f6f392();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f6f392();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f6f392();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl
new file mode 100644
index 0000000..bf7c4bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32sint, read_write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
+fn textureStore_f8aaf9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0fba151
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f8aaf9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f8aaf9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0fba151
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f8aaf9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f8aaf9.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.glsl
new file mode 100644
index 0000000..b58b5f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f8aaf9() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_f8aaf9();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f8aaf9() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void fragment_main() {
+  textureStore_f8aaf9();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+void textureStore_f8aaf9() {
+  ivec2 arg_1 = ivec2(1);
+  int arg_2 = 1;
+  ivec4 arg_3 = ivec4(1);
+  imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
+}
+
+void compute_main() {
+  textureStore_f8aaf9();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.msl
new file mode 100644
index 0000000..7a0d247
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f8aaf9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.spvasm
new file mode 100644
index 0000000..e7d1fcd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f8aaf9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f8aaf9.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.wgsl
new file mode 100644
index 0000000..ebe9088
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureStore_f8aaf9() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = 1i;
+  var arg_3 = vec4<i32>(1i);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f8aaf9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f8aaf9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f8aaf9();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl
new file mode 100644
index 0000000..cad3e25
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8snorm, read_write>;
+
+// fn textureStore(texture: texture_storage_2d<rgba8snorm, read_write>, coords: vec2<i32>, value: vec4<f32>)
+fn textureStore_f975a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..03b50d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_f975a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f975a0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..03b50d3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_f975a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f975a0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.glsl
new file mode 100644
index 0000000..812b225
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_f975a0() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_f975a0();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_f975a0() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void fragment_main() {
+  textureStore_f975a0();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
+void textureStore_f975a0() {
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
+  imageStore(arg_0, arg_1, arg_2);
+}
+
+void compute_main() {
+  textureStore_f975a0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.msl
new file mode 100644
index 0000000..775c89c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_f975a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.spvasm
new file mode 100644
index 0000000..267616a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_f975a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
+
+Failed to generate: builtins/gen/var/textureStore/f975a0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.wgsl
new file mode 100644
index 0000000..a472396
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, read_write>;
+
+fn textureStore_f975a0() {
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_f975a0();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_f975a0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_f975a0();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl
new file mode 100644
index 0000000..e206369
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureStore(texture: texture_storage_2d_array<rgba32uint, read_write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
+fn textureStore_fc916e() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bfc05ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_fc916e() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/fc916e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bfc05ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_fc916e() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/fc916e.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.glsl
new file mode 100644
index 0000000..75df667
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.glsl
@@ -0,0 +1,61 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_fc916e() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+vec4 vertex_main() {
+  textureStore_fc916e();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_fc916e() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void fragment_main() {
+  textureStore_fc916e();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+void textureStore_fc916e() {
+  uvec2 arg_1 = uvec2(1u);
+  int arg_2 = 1;
+  uvec4 arg_3 = uvec4(1u);
+  imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
+}
+
+void compute_main() {
+  textureStore_fc916e();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.msl
new file mode 100644
index 0000000..adeb6e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_fc916e() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.spvasm
new file mode 100644
index 0000000..fc6665c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_fc916e() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
+
+Failed to generate: builtins/gen/var/textureStore/fc916e.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.wgsl
new file mode 100644
index 0000000..74c17aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureStore_fc916e() {
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = 1i;
+  var arg_3 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2, arg_3);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_fc916e();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_fc916e();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_fc916e();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl
new file mode 100644
index 0000000..01b3f34
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl
@@ -0,0 +1,47 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16uint, read_write>;
+
+// fn textureStore(texture: texture_storage_1d<rgba16uint, read_write>, coords: i32, value: vec4<u32>)
+fn textureStore_ff23b3() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..28a5b67
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_ff23b3() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ff23b3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..28a5b67
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_ff23b3() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ff23b3.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.glsl
new file mode 100644
index 0000000..cfc3475
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.glsl
@@ -0,0 +1,58 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_ff23b3() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+vec4 vertex_main() {
+  textureStore_ff23b3();
+  return vec4(0.0f);
+}
+
+void main() {
+  gl_PointSize = 1.0;
+  vec4 inner_result = vertex_main();
+  gl_Position = inner_result;
+  gl_Position.y = -(gl_Position.y);
+  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+  return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_ff23b3() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void fragment_main() {
+  textureStore_ff23b3();
+}
+
+void main() {
+  fragment_main();
+  return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
+void textureStore_ff23b3() {
+  int arg_1 = 1;
+  uvec4 arg_2 = uvec4(1u);
+  imageStore(arg_0, ivec2(arg_1, 0), arg_2);
+}
+
+void compute_main() {
+  textureStore_ff23b3();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  compute_main();
+  return;
+}
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.msl
new file mode 100644
index 0000000..7b3df23
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.msl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_ff23b3() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
+
+Failed to generate: builtins/gen/var/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;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.spvasm
new file mode 100644
index 0000000..ac81333
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.spvasm
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_ff23b3() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}
+
+Failed to generate: builtins/gen/var/textureStore/ff23b3.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.wgsl
new file mode 100644
index 0000000..51ede1c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, read_write>;
+
+fn textureStore_ff23b3() {
+  var arg_1 = 1i;
+  var arg_2 = vec4<u32>(1u);
+  textureStore(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureStore_ff23b3();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureStore_ff23b3();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureStore_ff23b3();
+}