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

Bug: tint:2007
Change-Id: Id62985478ce287fe3c516871f41ebd344a42bdb1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/146244
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
diff --git a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.spvasm
index 8b9abbc..4b32af0 100644
--- a/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/031506.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_031506 "textureStore_031506"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_031506 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_031506
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_031506
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_031506
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.spvasm
index dfedbea..08cb318 100644
--- a/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/036d0e.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_036d0e "textureStore_036d0e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_036d0e = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_036d0e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_036d0e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_036d0e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.spvasm
index deb25c1..0809f51 100644
--- a/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/03e7a0.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_03e7a0 "textureStore_03e7a0"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_03e7a0 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_03e7a0
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_03e7a0
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_03e7a0
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.spvasm
index 1ad3148..a40be19 100644
--- a/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/042b06.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_042b06 "textureStore_042b06"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %39 = OpTypeFunction %v4float
+%textureStore_042b06 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_042b06
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_042b06
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_042b06
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.spvasm
index e15f630..90a843f 100644
--- a/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/052a4e.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_052a4e "textureStore_052a4e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_052a4e = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_052a4e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_052a4e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_052a4e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.spvasm
index 1e2489b..ffae8d0 100644
--- a/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/053664.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_053664 "textureStore_053664"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %39 = OpTypeFunction %v4float
+%textureStore_053664 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_053664
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_053664
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_053664
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.spvasm
index 1b32b58..c7b561b 100644
--- a/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/09e4d5.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 43
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_09e4d5 "textureStore_09e4d5"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %30 = OpTypeFunction %v4float
+%textureStore_09e4d5 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+         %29 = OpVectorShuffle %v4float %28 %28 2 1 0 3
+               OpImageWrite %26 %27 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_09e4d5
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %textureStore_09e4d5
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_09e4d5
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.spvasm
index 4496659..bba7fef 100644
--- a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_0ade9a "textureStore_0ade9a"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_0ade9a = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_0ade9a
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_0ade9a
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_0ade9a
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.spvasm
index 8bfd4be..d22736f 100644
--- a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_0ff97a "textureStore_0ff97a"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %39 = OpTypeFunction %v4float
+%textureStore_0ff97a = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_0ff97a
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_0ff97a
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_0ff97a
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.spvasm
index 8457a29..6797647 100644
--- a/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/101325.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_101325 "textureStore_101325"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_101325 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_101325
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_101325
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_101325
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.spvasm
index 7f0d259..57f6425 100644
--- a/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/145061.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_145061 "textureStore_145061"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_145061 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_145061
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_145061
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_145061
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.spvasm
index 5fa60ca..19109ce 100644
--- a/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/178e69.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 43
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_178e69 "textureStore_178e69"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %30 = OpTypeFunction %v4float
+%textureStore_178e69 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+         %29 = OpVectorShuffle %v4float %28 %28 2 1 0 3
+               OpImageWrite %26 %27 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_178e69
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %textureStore_178e69
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_178e69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.spvasm
index d04bce6..745f75f 100644
--- a/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/195d1b.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_195d1b "textureStore_195d1b"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_195d1b = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_195d1b
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_195d1b
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_195d1b
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.spvasm
index 0ccda80..0f209da 100644
--- a/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/197637.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_197637 "textureStore_197637"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_197637 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_197637
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_197637
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_197637
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.spvasm
index 1fadd2a..c1e3c39 100644
--- a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_1a6c0b "textureStore_1a6c0b"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_1a6c0b = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_1a6c0b
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_1a6c0b
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_1a6c0b
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.spvasm
index c01a31d..4db27e1 100644
--- a/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1af236.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_1af236 "textureStore_1af236"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %39 = OpTypeFunction %v4float
+%textureStore_1af236 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_1af236
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_1af236
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_1af236
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.spvasm
index 4905990..94d1f93 100644
--- a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_1e9fbd "textureStore_1e9fbd"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_1e9fbd = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_1e9fbd
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_1e9fbd
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_1e9fbd
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.spvasm
index de499ec..9ae7b00 100644
--- a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_1fef04 "textureStore_1fef04"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %21 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_1fef04 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_1fef04
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_1fef04
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_1fef04
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.spvasm
index 66d42e5..13aa3f0 100644
--- a/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2046db.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_2046db "textureStore_2046db"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+%textureStore_2046db = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_2046db
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_2046db
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_2046db
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.spvasm
index d9b5794..ff5554c 100644
--- a/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2173fd.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_2173fd "textureStore_2173fd"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_2173fd = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_2173fd
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_2173fd
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_2173fd
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.spvasm
index edc6e07..4bce298 100644
--- a/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/24e6b7.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_24e6b7 "textureStore_24e6b7"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_24e6b7 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_24e6b7
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_24e6b7
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_24e6b7
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.spvasm
index 2fcfb6d..f98ca4d 100644
--- a/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/26a26d.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_26a26d "textureStore_26a26d"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_26a26d = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_26a26d
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_26a26d
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_26a26d
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.spvasm
index beea9a3..9d45fe5 100644
--- a/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/28e109.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_28e109 "textureStore_28e109"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_28e109 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_28e109
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_28e109
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_28e109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.spvasm
index f518718..7cd5c73 100644
--- a/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2a60c9.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_2a60c9 "textureStore_2a60c9"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_2a60c9 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_2a60c9
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_2a60c9
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_2a60c9
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.spvasm
index 090c92d..b2fb061 100644
--- a/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2addd6.wgsl.expected.spvasm
@@ -1,34 +1,95 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_2addd6 "textureStore_2addd6"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_2addd6 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_2addd6
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_2addd6
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_2addd6
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.spvasm
index c6cc758..347df9f 100644
--- a/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2c76db.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_2c76db "textureStore_2c76db"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_2c76db = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_2c76db
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_2c76db
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_2c76db
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.spvasm
index 9087e48..1ab7227 100644
--- a/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2f29ea.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_2f29ea "textureStore_2f29ea"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_2f29ea = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_2f29ea
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_2f29ea
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_2f29ea
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.spvasm
index a4f7c59..a605648 100644
--- a/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/312f27.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_312f27 "textureStore_312f27"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+%textureStore_312f27 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_312f27
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_312f27
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_312f27
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.spvasm
index 06abe1f..d558235 100644
--- a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_32d3d6 "textureStore_32d3d6"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_32d3d6 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_32d3d6
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_32d3d6
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_32d3d6
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.spvasm
index e5b24bd..4ed9e78 100644
--- a/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3310d3.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_3310d3 "textureStore_3310d3"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %39 = OpTypeFunction %v4float
+%textureStore_3310d3 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_3310d3
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_3310d3
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_3310d3
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.spvasm
index 5fa8a9b..1c844f7 100644
--- a/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/345332.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_345332 "textureStore_345332"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_345332 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_345332
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_345332
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_345332
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.spvasm
index 82a94ac..14edceb 100644
--- a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_3d1ebe "textureStore_3d1ebe"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_3d1ebe = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_3d1ebe
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_3d1ebe
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_3d1ebe
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.spvasm
index 062bac3..7cd6419 100644
--- a/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3d96a4.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_3d96a4 "textureStore_3d96a4"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_3d96a4 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_3d96a4
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_3d96a4
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_3d96a4
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.spvasm
index 92c9690..1fe0f56 100644
--- a/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3e0dc4.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_3e0dc4 "textureStore_3e0dc4"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+%textureStore_3e0dc4 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_3e0dc4
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_3e0dc4
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_3e0dc4
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.spvasm
index 9fe0305..fa51ad0 100644
--- a/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3f61ca.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_3f61ca "textureStore_3f61ca"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_3f61ca = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_3f61ca
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_3f61ca
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_3f61ca
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.spvasm
index 3abba41..728f930 100644
--- a/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/441222.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_441222 "textureStore_441222"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_441222 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_441222
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_441222
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_441222
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.spvasm
index 50c3b6b..af672d7 100644
--- a/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4483e7.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_4483e7 "textureStore_4483e7"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %21 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_4483e7 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_4483e7
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_4483e7
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_4483e7
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.spvasm
index 2d7e7b1..7a97cae 100644
--- a/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/44b372.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_44b372 "textureStore_44b372"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_44b372 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_44b372
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_44b372
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_44b372
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.spvasm
index 210efab..9bf6ed8 100644
--- a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_473ead "textureStore_473ead"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_473ead = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_473ead
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_473ead
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_473ead
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.spvasm
index 5b5c733..84ea216 100644
--- a/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/47bd70.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_47bd70 "textureStore_47bd70"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_47bd70 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_47bd70
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_47bd70
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_47bd70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.spvasm
index c6d1a15..0697c19 100644
--- a/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/48cb56.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_48cb56 "textureStore_48cb56"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_48cb56 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_48cb56
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_48cb56
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_48cb56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.spvasm
index be054c5..a7f5e9e 100644
--- a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_4bf1fd "textureStore_4bf1fd"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_4bf1fd = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_4bf1fd
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_4bf1fd
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_4bf1fd
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.spvasm
index 09360fb..de18d92 100644
--- a/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4c76b7.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_4c76b7 "textureStore_4c76b7"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+%textureStore_4c76b7 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+         %42 = OpVectorShuffle %v4float %41 %41 2 1 0 3
+               OpImageWrite %33 %40 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_4c76b7
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_4c76b7
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_4c76b7
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.spvasm
index d22d913..a273921 100644
--- a/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4cce74.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_4cce74 "textureStore_4cce74"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_4cce74 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_4cce74
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_4cce74
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_4cce74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.spvasm
index 45bccde..b7e3ac1 100644
--- a/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4ddf52.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_4ddf52 "textureStore_4ddf52"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_4ddf52 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_4ddf52
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_4ddf52
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_4ddf52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.spvasm
index 9a458fd..b01b1a8 100644
--- a/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4e2b3a.wgsl.expected.spvasm
@@ -1,34 +1,94 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_4e2b3a "textureStore_4e2b3a"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %39 = OpTypeFunction %v4float
+%textureStore_4e2b3a = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_4e2b3a
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_4e2b3a
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_4e2b3a
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.spvasm
index 6344b0f..bed4764 100644
--- a/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5030f5.wgsl.expected.spvasm
@@ -1,34 +1,94 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_5030f5 "textureStore_5030f5"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %40 = OpTypeFunction %v4float
+%textureStore_5030f5 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+         %39 = OpVectorShuffle %v4float %38 %38 2 1 0 3
+               OpImageWrite %31 %37 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_5030f5
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %textureStore_5030f5
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_5030f5
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.spvasm
index 8aeb5ff..9056d75 100644
--- a/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/51ec82.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_51ec82 "textureStore_51ec82"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_51ec82 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_51ec82
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_51ec82
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_51ec82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.spvasm
index 4b6785c..661cd97 100644
--- a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_5246b4 "textureStore_5246b4"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_5246b4 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_5246b4
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_5246b4
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_5246b4
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.spvasm
index 10a17ed..08413ec 100644
--- a/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/53a68b.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_53a68b "textureStore_53a68b"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_53a68b = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_53a68b
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_53a68b
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_53a68b
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.spvasm
index 0eaafbb..37393f9 100644
--- a/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5425ab.wgsl.expected.spvasm
@@ -1,33 +1,88 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_5425ab "textureStore_5425ab"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_5425ab = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_5425ab
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_5425ab
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_5425ab
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.spvasm
index 0aef0ee..24678e6 100644
--- a/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/544f06.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 45
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_544f06 "textureStore_544f06"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %32 = OpTypeFunction %v4float
+%textureStore_544f06 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+         %31 = OpVectorShuffle %v4float %30 %30 2 1 0 3
+               OpImageWrite %28 %29 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_544f06
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_544f06
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_544f06
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.spvasm
index 394af5a..723b3ed 100644
--- a/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/55f9dc.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_55f9dc "textureStore_55f9dc"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %39 = OpTypeFunction %v4float
+%textureStore_55f9dc = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_55f9dc
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_55f9dc
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_55f9dc
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.spvasm
index 591b347..5a43a8d 100644
--- a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_574a31 "textureStore_574a31"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %21 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_574a31 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_574a31
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_574a31
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_574a31
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.spvasm
index d44d048..9e5a84e 100644
--- a/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/579b93.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_579b93 "textureStore_579b93"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_579b93 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_579b93
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_579b93
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_579b93
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.spvasm
index 761b238..195ff6c 100644
--- a/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/58fc35.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_58fc35 "textureStore_58fc35"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_58fc35 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_58fc35
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_58fc35
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_58fc35
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.spvasm
index 34b71df..d27da4b 100644
--- a/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5a8b41.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_5a8b41 "textureStore_5a8b41"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+%textureStore_5a8b41 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_5a8b41
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_5a8b41
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_5a8b41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.spvasm
index 34086bd..6ca9ea0 100644
--- a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_5b17eb "textureStore_5b17eb"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_5b17eb = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_5b17eb
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_5b17eb
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_5b17eb
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.spvasm
index af196e0..9495b90 100644
--- a/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5b4522.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_5b4522 "textureStore_5b4522"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_5b4522 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_5b4522
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_5b4522
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_5b4522
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.spvasm
index 0283b87..ef99bf9 100644
--- a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_5ec6b2 "textureStore_5ec6b2"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_5ec6b2 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_5ec6b2
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_5ec6b2
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_5ec6b2
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.spvasm
index 5ec7f4e..ac603a1 100644
--- a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.spvasm
@@ -1,34 +1,94 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_5ee194 "textureStore_5ee194"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %39 = OpTypeFunction %v4float
+%textureStore_5ee194 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_5ee194
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_5ee194
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_5ee194
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.spvasm
index 1e6b6fc..963058d 100644
--- a/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/614b58.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_614b58 "textureStore_614b58"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_614b58 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_614b58
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_614b58
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_614b58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.spvasm
index 0f2ec40..0afc7e1 100644
--- a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_635584 "textureStore_635584"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_635584 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_635584
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_635584
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_635584
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.spvasm
index 37d6fb6..b7104c2 100644
--- a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.spvasm
@@ -1,33 +1,88 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_63f34a "textureStore_63f34a"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_63f34a = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_63f34a
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_63f34a
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_63f34a
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.spvasm
index 71cba6d..5c1f657 100644
--- a/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/646dbc.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_646dbc "textureStore_646dbc"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_646dbc = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_646dbc
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_646dbc
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_646dbc
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.spvasm
index 30361ae..467c086 100644
--- a/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/65b6aa.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_65b6aa "textureStore_65b6aa"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_65b6aa = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_65b6aa
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_65b6aa
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_65b6aa
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.spvasm
index fa7d417..3100cb2 100644
--- a/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6be9e0.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_6be9e0 "textureStore_6be9e0"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_6be9e0 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_6be9e0
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_6be9e0
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_6be9e0
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.spvasm
index 76c69ef..723d3de 100644
--- a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_6c4a70 "textureStore_6c4a70"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_6c4a70 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_6c4a70
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_6c4a70
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_6c4a70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.spvasm
index 50fe74f..646a6a4 100644
--- a/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6d1809.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_6d1809 "textureStore_6d1809"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %39 = OpTypeFunction %v4float
+%textureStore_6d1809 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_6d1809
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_6d1809
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_6d1809
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.spvasm
index 9439056..8c61767 100644
--- a/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6d259f.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_6d259f "textureStore_6d259f"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_6d259f = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_6d259f
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_6d259f
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_6d259f
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.spvasm
index b1a82eb..cb124ff 100644
--- a/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6e6cc0.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_6e6cc0 "textureStore_6e6cc0"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_6e6cc0 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_6e6cc0
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_6e6cc0
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_6e6cc0
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.spvasm
index 5514ec0..d21ef9b 100644
--- a/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6f3542.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_6f3542 "textureStore_6f3542"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_6f3542 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_6f3542
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_6f3542
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_6f3542
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.spvasm
index 4675af0..8f8cbf1 100644
--- a/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6fb99b.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_6fb99b "textureStore_6fb99b"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_6fb99b = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_6fb99b
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_6fb99b
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_6fb99b
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.spvasm
index 1a09d6b..b570fd9 100644
--- a/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/704e1f.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_704e1f "textureStore_704e1f"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %39 = OpTypeFunction %v4float
+%textureStore_704e1f = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_704e1f
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_704e1f
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_704e1f
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.spvasm
index 502da5b..a1b95ba 100644
--- a/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/706236.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_706236 "textureStore_706236"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_706236 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_706236
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_706236
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_706236
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.spvasm
index aabe4d7..0a9d808 100644
--- a/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/706560.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_706560 "textureStore_706560"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_706560 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_706560
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_706560
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_706560
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.spvasm
index d8c04fe..08ed1fa 100644
--- a/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/726d6d.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_726d6d "textureStore_726d6d"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_726d6d = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_726d6d
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_726d6d
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_726d6d
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.spvasm
index 5a08673..7619bde 100644
--- a/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/73a735.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_73a735 "textureStore_73a735"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_73a735 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_73a735
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_73a735
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_73a735
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.spvasm
index 68abb5d..72cce47 100644
--- a/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/751256.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_751256 "textureStore_751256"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_751256 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_751256
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_751256
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_751256
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.spvasm
index 75cae03..7cab00e 100644
--- a/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/75bbd5.wgsl.expected.spvasm
@@ -1,34 +1,99 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_75bbd5 "textureStore_75bbd5"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_75bbd5 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_75bbd5
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_75bbd5
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_75bbd5
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.spvasm
index 2571ae9..5abedbd 100644
--- a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.spvasm
@@ -1,33 +1,88 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_7792fa "textureStore_7792fa"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_7792fa = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_7792fa
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_7792fa
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_7792fa
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.spvasm
index 0223c6e..710cce0 100644
--- a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_7b8f86 "textureStore_7b8f86"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_7b8f86 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_7b8f86
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_7b8f86
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_7b8f86
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.spvasm
index b7b99b5..a77daf6 100644
--- a/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7d10e0.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_7d10e0 "textureStore_7d10e0"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_7d10e0 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_7d10e0
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_7d10e0
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_7d10e0
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.spvasm
index a8847c2..a97b3dd 100644
--- a/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7dd042.wgsl.expected.spvasm
@@ -1,34 +1,95 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_7dd042 "textureStore_7dd042"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_7dd042 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_7dd042
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_7dd042
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_7dd042
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.spvasm
index 789244d..ee7bcc6 100644
--- a/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7e787a.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_7e787a "textureStore_7e787a"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_7e787a = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_7e787a
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_7e787a
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_7e787a
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.spvasm
index e53b055..9294ad9 100644
--- a/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/80bf1d.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_80bf1d "textureStore_80bf1d"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_80bf1d = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_80bf1d
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_80bf1d
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_80bf1d
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.spvasm
index 6349349..04b0bfa 100644
--- a/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/818df6.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_818df6 "textureStore_818df6"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_818df6 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_818df6
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_818df6
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_818df6
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.spvasm
index f334d48..bc711d4 100644
--- a/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/81ae31.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_81ae31 "textureStore_81ae31"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %39 = OpTypeFunction %v4float
+%textureStore_81ae31 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_81ae31
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_81ae31
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_81ae31
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.spvasm
index 6df6ab6..a7acb14 100644
--- a/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/820272.wgsl.expected.spvasm
@@ -1,34 +1,99 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_820272 "textureStore_820272"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_820272 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_820272
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_820272
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_820272
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.spvasm
index adb6309..0f21799 100644
--- a/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/84d435.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_84d435 "textureStore_84d435"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_84d435 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_84d435
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_84d435
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_84d435
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.spvasm
index 4432dd4..d59277d 100644
--- a/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/84f4f4.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_84f4f4 "textureStore_84f4f4"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_84f4f4 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_84f4f4
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_84f4f4
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_84f4f4
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.spvasm
index e2e2177..cd4a550 100644
--- a/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8676c9.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8676c9 "textureStore_8676c9"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_8676c9 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_8676c9
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_8676c9
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8676c9
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.spvasm
index 911105b..275e1cd 100644
--- a/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/86f713.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_86f713 "textureStore_86f713"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_86f713 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_86f713
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_86f713
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_86f713
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.spvasm
index c721438..71895e6 100644
--- a/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/877c92.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_877c92 "textureStore_877c92"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_877c92 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_877c92
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_877c92
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_877c92
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.spvasm
index 54cfcba..d90ee4d 100644
--- a/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8815b1.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8815b1 "textureStore_8815b1"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_8815b1 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_8815b1
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_8815b1
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_8815b1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.spvasm
index dbcb01f..ec767a1 100644
--- a/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/885921.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_885921 "textureStore_885921"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_885921 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_885921
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_885921
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_885921
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.spvasm
index 048bc8f..86f7c7b 100644
--- a/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/88ce7e.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_88ce7e "textureStore_88ce7e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_88ce7e = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_88ce7e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_88ce7e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_88ce7e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.spvasm
index 7abdf8a..c916935 100644
--- a/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8a16b0.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8a16b0 "textureStore_8a16b0"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_8a16b0 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8a16b0
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_8a16b0
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_8a16b0
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.spvasm
index e655184..54f7b680b 100644
--- a/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8a46ff.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8a46ff "textureStore_8a46ff"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_8a46ff = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_8a46ff
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_8a46ff
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_8a46ff
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.spvasm
index 17d2da7..d55a66e 100644
--- a/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8a85b9.wgsl.expected.spvasm
@@ -1,34 +1,95 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8a85b9 "textureStore_8a85b9"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_8a85b9 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_8a85b9
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_8a85b9
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_8a85b9
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.spvasm
index 8ae4b69..87dcdce 100644
--- a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8a8681 "textureStore_8a8681"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_8a8681 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_8a8681
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_8a8681
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8a8681
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.spvasm
index b3a46ba..36012d1 100644
--- a/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8ae0bc.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8ae0bc "textureStore_8ae0bc"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+%textureStore_8ae0bc = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8ae0bc
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_8ae0bc
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_8ae0bc
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.spvasm
index b1f0201..3e0c6b6 100644
--- a/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8cd841.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8cd841 "textureStore_8cd841"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_8cd841 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_8cd841
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_8cd841
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_8cd841
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.spvasm
index 7cf1eb8..d28bd08 100644
--- a/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8ebdc9.wgsl.expected.spvasm
@@ -1,34 +1,93 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_8ebdc9 "textureStore_8ebdc9"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %39 = OpTypeFunction %v4float
+%textureStore_8ebdc9 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_8ebdc9
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_8ebdc9
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_8ebdc9
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.spvasm
index 93d95d5..c35032b 100644
--- a/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/90960e.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_90960e "textureStore_90960e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_90960e = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_90960e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_90960e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_90960e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.spvasm
index feaacb5..f9e16ad 100644
--- a/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/90a553.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_90a553 "textureStore_90a553"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_90a553 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_90a553
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_90a553
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_90a553
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.spvasm
index d0d2804..9e6eef3 100644
--- a/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/976636.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_976636 "textureStore_976636"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %21 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_976636 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_976636
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_976636
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_976636
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.spvasm
index 910f9df..2532480 100644
--- a/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9ba5c1.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_9ba5c1 "textureStore_9ba5c1"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_9ba5c1 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_9ba5c1
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_9ba5c1
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_9ba5c1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.spvasm
index 29655a9..d5dfa98 100644
--- a/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9cea9e.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_9cea9e "textureStore_9cea9e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_9cea9e = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_9cea9e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_9cea9e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_9cea9e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.spvasm
index 472f2bd..fe486da 100644
--- a/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9d7c62.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_9d7c62 "textureStore_9d7c62"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_9d7c62 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_9d7c62
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_9d7c62
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_9d7c62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.spvasm
index 48e7df5..047c1fa 100644
--- a/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a0022f.wgsl.expected.spvasm
@@ -1,34 +1,95 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a0022f "textureStore_a0022f"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_a0022f = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_a0022f
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_a0022f
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_a0022f
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.spvasm
index c0a6592..520edbe 100644
--- a/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a14041.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a14041 "textureStore_a14041"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_a14041 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_a14041
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_a14041
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_a14041
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.spvasm
index 9f8d8e2..a8658a1 100644
--- a/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a19a12.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a19a12 "textureStore_a19a12"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_a19a12 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_a19a12
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_a19a12
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_a19a12
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.spvasm
index d2cfbbd..ec084e1 100644
--- a/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a24491.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a24491 "textureStore_a24491"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_a24491 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_a24491
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_a24491
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_a24491
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.spvasm
index 24e5dfa..4a64952 100644
--- a/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a5b88e.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a5b88e "textureStore_a5b88e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_a5b88e = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_a5b88e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_a5b88e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_a5b88e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.spvasm
index f875c08..b87df48 100644
--- a/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a5c925.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a5c925 "textureStore_a5c925"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_a5c925 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_a5c925
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_a5c925
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_a5c925
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.spvasm
index fa9cb9e..532130c 100644
--- a/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a66ca4.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 45
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a66ca4 "textureStore_a66ca4"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %32 = OpTypeFunction %v4float
+%textureStore_a66ca4 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+         %31 = OpVectorShuffle %v4float %30 %30 2 1 0 3
+               OpImageWrite %28 %29 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_a66ca4
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_a66ca4
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_a66ca4
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.spvasm
index c8ba72d..9ddfba6 100644
--- a/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a702b6.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a702b6 "textureStore_a702b6"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_a702b6 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_a702b6
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_a702b6
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_a702b6
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.spvasm
index e4c9934..73a0ae8 100644
--- a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_a9298c "textureStore_a9298c"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_a9298c = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_a9298c
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_a9298c
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_a9298c
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.spvasm
index 461ce8c..093b795 100644
--- a/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ab03b6.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_ab03b6 "textureStore_ab03b6"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_ab03b6 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_ab03b6
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_ab03b6
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_ab03b6
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.spvasm
index f152955..9d2d7b9 100644
--- a/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ab788e.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_ab788e "textureStore_ab788e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_ab788e = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_ab788e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_ab788e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_ab788e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.spvasm
index 0f72415..bf859a0 100644
--- a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.spvasm
@@ -1,34 +1,95 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_abdd21 "textureStore_abdd21"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_abdd21 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_abdd21
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_abdd21
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_abdd21
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.spvasm
index f5aaf57..48334a0 100644
--- a/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ac0a55.wgsl.expected.spvasm
@@ -1,34 +1,95 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_ac0a55 "textureStore_ac0a55"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_ac0a55 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_ac0a55
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_ac0a55
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_ac0a55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.spvasm
index 82807a3..e053f9f 100644
--- a/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/aedea3.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_aedea3 "textureStore_aedea3"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_aedea3 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_aedea3
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_aedea3
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_aedea3
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.spvasm
index de9c2f9..7a2e226 100644
--- a/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b16110.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b16110 "textureStore_b16110"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_b16110 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_b16110
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_b16110
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_b16110
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.spvasm
index 4ad196d..49c29ef 100644
--- a/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b286b4.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b286b4 "textureStore_b286b4"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_b286b4 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_b286b4
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_b286b4
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_b286b4
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.spvasm
index a006c37..cc592fd 100644
--- a/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b36bc1.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b36bc1 "textureStore_b36bc1"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_b36bc1 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_b36bc1
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_b36bc1
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_b36bc1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.spvasm
index 3b725de..178dbb5 100644
--- a/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b4389e.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 45
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b4389e "textureStore_b4389e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %32 = OpTypeFunction %v4float
+%textureStore_b4389e = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+         %31 = OpVectorShuffle %v4float %30 %30 2 1 0 3
+               OpImageWrite %28 %29 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_b4389e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_b4389e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_b4389e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.spvasm
index c2985e7..e35d946 100644
--- a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b71c13 "textureStore_b71c13"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+%textureStore_b71c13 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_b71c13
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_b71c13
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_b71c13
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.spvasm
index b425347..d4265c0 100644
--- a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.spvasm
@@ -1,33 +1,82 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b7232c "textureStore_b7232c"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 1D 0 0 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %20 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
+%textureStore_b7232c = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_b7232c
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_b7232c
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_b7232c
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.spvasm
index 90643d6..1a8374c 100644
--- a/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b89ffb.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b89ffb "textureStore_b89ffb"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+%textureStore_b89ffb = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+         %42 = OpVectorShuffle %v4float %41 %41 2 1 0 3
+               OpImageWrite %33 %40 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_b89ffb
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_b89ffb
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_b89ffb
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.spvasm
index b01961f..00770da 100644
--- a/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b9c81a.wgsl.expected.spvasm
@@ -1,33 +1,88 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b9c81a "textureStore_b9c81a"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_b9c81a = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_b9c81a
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_b9c81a
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_b9c81a
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.spvasm
index 32d9a68..753f6ee 100644
--- a/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b9d863.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_b9d863 "textureStore_b9d863"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_b9d863 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_b9d863
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_b9d863
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_b9d863
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.spvasm
index 9e4cefe..5c7e07b 100644
--- a/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/bc1423.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_bc1423 "textureStore_bc1423"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_bc1423 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_bc1423
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_bc1423
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_bc1423
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.spvasm
index 8ec2c25..dd737b4 100644
--- a/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/bcc97a.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_bcc97a "textureStore_bcc97a"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_bcc97a = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_bcc97a
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_bcc97a
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_bcc97a
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.spvasm
index 2b59eba..6a2e18c 100644
--- a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.spvasm
@@ -1,34 +1,99 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_bd6602 "textureStore_bd6602"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rg32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_bd6602 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_bd6602
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_bd6602
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_bd6602
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.spvasm
index 4166167..8809876 100644
--- a/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c06463.wgsl.expected.spvasm
@@ -1,34 +1,94 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_c06463 "textureStore_c06463"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %40 = OpTypeFunction %v4float
+%textureStore_c06463 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+         %39 = OpVectorShuffle %v4float %38 %38 2 1 0 3
+               OpImageWrite %31 %37 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_c06463
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %textureStore_c06463
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_c06463
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.spvasm
index c7c00e3..fe285de 100644
--- a/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c1c664.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_c1c664 "textureStore_c1c664"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_c1c664 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_c1c664
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_c1c664
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_c1c664
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.spvasm
index 2f105cf..a17b6a5 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c1f760.wgsl.expected.spvasm
@@ -1,34 +1,95 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_c1f760 "textureStore_c1f760"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_c1f760 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_c1f760
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_c1f760
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_c1f760
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.spvasm
index bfe788c..8814631 100644
--- a/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c33478.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_c33478 "textureStore_c33478"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rg32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_c33478 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_c33478
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_c33478
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_c33478
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.spvasm
index c34ac79..a3cb616 100644
--- a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_c35268 "textureStore_c35268"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 R32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_c35268 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_c35268
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_c35268
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_c35268
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.spvasm
index 9e5980d..ed15473 100644
--- a/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c63f05.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_c63f05 "textureStore_c63f05"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_c63f05 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_c63f05
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_c63f05
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_c63f05
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.spvasm
index 27cd0d3..9c249d6 100644
--- a/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c79451.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_c79451 "textureStore_c79451"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %21 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_c79451 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_uint Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %uint_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_c79451
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_c79451
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_c79451
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.spvasm
index e25e001..742abef 100644
--- a/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ccac20.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_ccac20 "textureStore_ccac20"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_ccac20 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_ccac20
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_ccac20
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_ccac20
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.spvasm
index 91d16a5..8595694 100644
--- a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_ceb832 "textureStore_ceb832"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_ceb832 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_ceb832
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_ceb832
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_ceb832
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.spvasm
index 1b7789e..6972b81 100644
--- a/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d0d62c.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_d0d62c "textureStore_d0d62c"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 0 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_d0d62c = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_d0d62c
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_d0d62c
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_d0d62c
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.spvasm
index 733c11a..d38fb22 100644
--- a/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d0fadc.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_d0fadc "textureStore_d0fadc"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+%textureStore_d0fadc = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_d0fadc
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_d0fadc
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_d0fadc
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.spvasm
index 4c49211..fb45c5e 100644
--- a/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d19db4.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_d19db4 "textureStore_d19db4"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
+      %v4int = OpTypeVector %int 4
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_d19db4 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_d19db4
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_d19db4
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_d19db4
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.spvasm
index 81d5e52..d097f90 100644
--- a/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d1ab82.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_d1ab82 "textureStore_d1ab82"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_d1ab82 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_d1ab82
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_d1ab82
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_d1ab82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.spvasm
index 9cb6ced..4076f36 100644
--- a/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d3a22b.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_d3a22b "textureStore_d3a22b"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 3D 0 0 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+     %v4uint = OpTypeVector %uint 4
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_d3a22b = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_d3a22b
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_d3a22b
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_d3a22b
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.spvasm
index 2695bba..54d9134 100644
--- a/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d86d33.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_d86d33 "textureStore_d86d33"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+%textureStore_d86d33 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_d86d33
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_d86d33
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_d86d33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.spvasm
index 4eb6507..fb2406a 100644
--- a/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/da530c.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_da530c "textureStore_da530c"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 0 0 2 Rgba8i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_da530c = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_da530c
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_da530c
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_da530c
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.spvasm
index 8bd4e04..667094e 100644
--- a/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/db5128.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_db5128 "textureStore_db5128"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_db5128 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_db5128
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_db5128
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_db5128
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.spvasm
index 7ec1c72..2ae73a7 100644
--- a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_dce0e2 "textureStore_dce0e2"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 R32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+%textureStore_dce0e2 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_dce0e2
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_dce0e2
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_dce0e2
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.spvasm
index 866dceb..9f349c6 100644
--- a/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/dd8b29.wgsl.expected.spvasm
@@ -1,34 +1,97 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_dd8b29 "textureStore_dd8b29"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_dd8b29 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_dd8b29
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_dd8b29
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_dd8b29
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.spvasm
index b00e3d4..aabd3fc 100644
--- a/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/de38e5.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_de38e5 "textureStore_de38e5"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 3D 0 0 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %22 = OpConstantNull %v3uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_de38e5 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_de38e5
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_de38e5
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_de38e5
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.spvasm
index c48bba1..6625d92 100644
--- a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.spvasm
@@ -1,33 +1,87 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_df0c51 "textureStore_df0c51"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 3D 0 0 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+%_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_df0c51 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_df0c51
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_df0c51
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_df0c51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.spvasm
index 2360c4e..85243d5 100644
--- a/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/e077e7.wgsl.expected.spvasm
@@ -1,33 +1,85 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_e077e7 "textureStore_e077e7"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_e077e7 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_e077e7
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_e077e7
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_e077e7
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.spvasm
index d34ab5b..4377457 100644
--- a/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/e1784d.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_e1784d "textureStore_e1784d"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba32f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+%textureStore_e1784d = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_e1784d
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_e1784d
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_e1784d
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.spvasm
index 80616e2..440b67b 100644
--- a/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/e46fd8.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 45
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_e46fd8 "textureStore_e46fd8"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %32 = OpTypeFunction %v4float
+%textureStore_e46fd8 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+         %31 = OpVectorShuffle %v4float %30 %30 2 1 0 3
+               OpImageWrite %28 %29 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_e46fd8
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_e46fd8
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_e46fd8
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.spvasm
index 5c53d46..023ca77 100644
--- a/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/e72bdc.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_e72bdc "textureStore_e72bdc"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba16f
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %v3int = OpTypeVector %int 3
+         %42 = OpTypeFunction %v4float
+%textureStore_e72bdc = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_e72bdc
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_e72bdc
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_e72bdc
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.spvasm
index 50d651a..dd9e201 100644
--- a/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/e87f6e.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_e87f6e "textureStore_e87f6e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 Rgba16i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_e87f6e = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_e87f6e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_e87f6e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_e87f6e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.spvasm
index d7f4115..dbb62c1 100644
--- a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.spvasm
@@ -1,34 +1,99 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpCapability StorageImageExtendedFormats
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_ea30d2 "textureStore_ea30d2"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rg32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_ea30d2 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_ea30d2
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_ea30d2
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_ea30d2
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.spvasm
index 6a29292..133f07d 100644
--- a/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/f05928.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_f05928 "textureStore_f05928"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %27 = OpConstantNull %uint
+      %v4int = OpTypeVector %int 4
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_f05928 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %uint_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_f05928
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_f05928
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_f05928
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.spvasm
index 1127738..67cfecf 100644
--- a/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/f64d69.wgsl.expected.spvasm
@@ -1,33 +1,84 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_f64d69 "textureStore_f64d69"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 1D 0 0 0 2 R32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_f64d69 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %20
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %22
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_f64d69
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_f64d69
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_f64d69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.spvasm
index d12421b..aa52e09 100644
--- a/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/f6f392.wgsl.expected.spvasm
@@ -1,34 +1,96 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_f6f392 "textureStore_f6f392"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 1 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %v3uint = OpTypeVector %uint 3
+         %42 = OpTypeFunction %v4float
+%textureStore_f6f392 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_f6f392
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_f6f392
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_f6f392
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.spvasm
index e7d1fcd..4fda3bb 100644
--- a/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/f8aaf9.wgsl.expected.spvasm
@@ -1,34 +1,95 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_f8aaf9 "textureStore_f8aaf9"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba32i
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+      %v4int = OpTypeVector %int 4
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
+      %v3int = OpTypeVector %int 3
+         %40 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_f8aaf9 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_f8aaf9
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_f8aaf9
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_f8aaf9
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.spvasm
index 267616a..097afeb 100644
--- a/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/f975a0.wgsl.expected.spvasm
@@ -1,33 +1,83 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_f975a0 "textureStore_f975a0"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba8Snorm
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
+%textureStore_f975a0 = OpFunction %void None %12
+         %15 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_f975a0
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %12
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_f975a0
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_f975a0
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.spvasm
index fc6665c..9c897fe 100644
--- a/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/fc916e.wgsl.expected.spvasm
@@ -1,34 +1,98 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_fc916e "textureStore_fc916e"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %arg_3 "arg_3"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba32ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %v2uint = OpTypeVector %uint 2
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
+     %v3uint = OpTypeVector %uint 3
+         %43 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_fc916e = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
+               OpStore %arg_2 %int_1
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_fc916e
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_fc916e
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_fc916e
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.spvasm
index ac81333..633030b 100644
--- a/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ff23b3.wgsl.expected.spvasm
@@ -1,33 +1,86 @@
-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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpCapability Image1D
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+               OpEntryPoint Fragment %fragment_main "fragment_main"
+               OpEntryPoint GLCompute %compute_main "compute_main"
+               OpExecutionMode %fragment_main OriginUpperLeft
+               OpExecutionMode %compute_main LocalSize 1 1 1
+               OpName %value "value"
+               OpName %vertex_point_size "vertex_point_size"
+               OpName %arg_0 "arg_0"
+               OpName %textureStore_ff23b3 "textureStore_ff23b3"
+               OpName %arg_1 "arg_1"
+               OpName %arg_2 "arg_2"
+               OpName %vertex_main_inner "vertex_main_inner"
+               OpName %vertex_main "vertex_main"
+               OpName %fragment_main "fragment_main"
+               OpName %compute_main "compute_main"
+               OpDecorate %value BuiltIn Position
+               OpDecorate %vertex_point_size BuiltIn PointSize
+               OpDecorate %arg_0 DescriptorSet 1
+               OpDecorate %arg_0 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %5 = OpConstantNull %v4float
+      %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 1D 0 0 0 2 Rgba16ui
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %v4uint = OpTypeVector %uint 4
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+%textureStore_ff23b3 = OpFunction %void None %13
+         %16 = OpLabel
+      %arg_1 = OpVariable %_ptr_Function_int Function %21
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %int_1
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
+               OpReturn
+               OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_ff23b3
+               OpReturnValue %5
+               OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
+               OpStore %vertex_point_size %float_1
+               OpReturn
+               OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_ff23b3
+               OpReturn
+               OpFunctionEnd
+%compute_main = OpFunction %void None %13
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_ff23b3
+               OpReturn
+               OpFunctionEnd