[tint] Add RW storage textureNumLayers overloads
Adds them to the intrinsics table but no codegen support yet.
Bug: tint:2007
Change-Id: Id7521ecb253f3ba42b9e12f1036cb13d6208db8d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/146242
Kokoro: Kokoro <noreply+kokoro@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index b152a18..eabb9dc 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -784,7 +784,7 @@
@must_use fn textureNumLayers<T: fiu32>(texture: texture_cube_array<T>) -> u32
@must_use fn textureNumLayers(texture: texture_depth_2d_array) -> u32
@must_use fn textureNumLayers(texture: texture_depth_cube_array) -> u32
-@must_use fn textureNumLayers<F: texel_format, A: write>(texture: texture_storage_2d_array<F, A>) -> u32
+@must_use fn textureNumLayers<F: texel_format, A: writable>(texture: texture_storage_2d_array<F, A>) -> u32
@must_use fn textureNumLevels<T: fiu32>(texture: texture_1d<T>) -> u32
@must_use fn textureNumLevels<T: fiu32>(texture: texture_2d<T>) -> u32
@must_use fn textureNumLevels<T: fiu32>(texture: texture_2d_array<T>) -> u32
diff --git a/src/tint/lang/core/intrinsic/data/data.cc b/src/tint/lang/core/intrinsic/data/data.cc
index 5a1a46a..547c83d 100644
--- a/src/tint/lang/core/intrinsic/data/data.cc
+++ b/src/tint/lang/core/intrinsic/data/data.cc
@@ -4726,21 +4726,11 @@
},
{
/* [8] */
- /* name */ "F",
+ /* name */ "A",
/* matcher_index */ NumberMatcherIndex(/* invalid */),
},
{
/* [9] */
- /* name */ "A",
- /* matcher_index */ NumberMatcherIndex(6),
- },
- {
- /* [10] */
- /* name */ "A",
- /* matcher_index */ NumberMatcherIndex(/* invalid */),
- },
- {
- /* [11] */
/* name */ "S",
/* matcher_index */ NumberMatcherIndex(10),
},
@@ -8118,7 +8108,7 @@
/* num_template_types */ 0,
/* num_template_numbers */ 2,
/* template_types */ TemplateTypeIndex(/* invalid */),
- /* template_numbers */ TemplateNumberIndex(8),
+ /* template_numbers */ TemplateNumberIndex(6),
/* parameters */ ParameterIndex(375),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
@@ -10484,7 +10474,7 @@
/* num_template_types */ 1,
/* num_template_numbers */ 1,
/* template_types */ TemplateTypeIndex(25),
- /* template_numbers */ TemplateNumberIndex(10),
+ /* template_numbers */ TemplateNumberIndex(8),
/* parameters */ ParameterIndex(366),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
@@ -10783,7 +10773,7 @@
/* num_template_types */ 1,
/* num_template_numbers */ 1,
/* template_types */ TemplateTypeIndex(26),
- /* template_numbers */ TemplateNumberIndex(11),
+ /* template_numbers */ TemplateNumberIndex(9),
/* parameters */ ParameterIndex(0),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
@@ -10796,7 +10786,7 @@
/* num_template_types */ 1,
/* num_template_numbers */ 1,
/* template_types */ TemplateTypeIndex(26),
- /* template_numbers */ TemplateNumberIndex(11),
+ /* template_numbers */ TemplateNumberIndex(9),
/* parameters */ ParameterIndex(0),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(/* invalid */),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
@@ -10809,7 +10799,7 @@
/* num_template_types */ 1,
/* num_template_numbers */ 1,
/* template_types */ TemplateTypeIndex(26),
- /* template_numbers */ TemplateNumberIndex(11),
+ /* template_numbers */ TemplateNumberIndex(9),
/* parameters */ ParameterIndex(0),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
@@ -10822,7 +10812,7 @@
/* num_template_types */ 1,
/* num_template_numbers */ 1,
/* template_types */ TemplateTypeIndex(26),
- /* template_numbers */ TemplateNumberIndex(11),
+ /* template_numbers */ TemplateNumberIndex(9),
/* parameters */ ParameterIndex(0),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(80),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
@@ -11552,7 +11542,7 @@
/* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> u32 */
/* fn textureNumLayers(texture: texture_depth_2d_array) -> u32 */
/* fn textureNumLayers(texture: texture_depth_cube_array) -> u32 */
- /* fn textureNumLayers<F : texel_format, A : write>(texture: texture_storage_2d_array<F, A>) -> u32 */
+ /* fn textureNumLayers<F : texel_format, A : writable>(texture: texture_storage_2d_array<F, A>) -> u32 */
/* num overloads */ 5,
/* overloads */ OverloadIndex(246),
},
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl
new file mode 100644
index 0000000..ea3b421
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16float, read_write>) -> u32
+fn textureNumLayers_0856ae() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4a478fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/0856ae.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4a478fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/0856ae.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.glsl
new file mode 100644
index 0000000..aba936b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_0856ae() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_0856ae();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_0856ae() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_0856ae() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_0856ae();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.msl
new file mode 100644
index 0000000..20b7c5c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/0856ae.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.spvasm
new file mode 100644
index 0000000..1f194b9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/0856ae.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.wgsl
new file mode 100644
index 0000000..f2dcf33
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl
new file mode 100644
index 0000000..6731be8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32float, read_write>) -> u32
+fn textureNumLayers_17ccad() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f4e1957
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/17ccad.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f4e1957
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/17ccad.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.glsl
new file mode 100644
index 0000000..f363301
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.glsl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_17ccad() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_17ccad();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_17ccad() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_17ccad() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_17ccad();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.msl
new file mode 100644
index 0000000..01cf458
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/17ccad.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.spvasm
new file mode 100644
index 0000000..a73cc86
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/17ccad.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.wgsl
new file mode 100644
index 0000000..bf7263e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl
new file mode 100644
index 0000000..a61d0f6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32uint, read_write>) -> u32
+fn textureNumLayers_24d572() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..98c748c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/24d572.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..98c748c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/24d572.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.glsl
new file mode 100644
index 0000000..6bbd878
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.glsl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_24d572() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_24d572();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_24d572() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_24d572();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_24d572() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_24d572();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.msl
new file mode 100644
index 0000000..9020b76
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/24d572.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.spvasm
new file mode 100644
index 0000000..ea38287
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/24d572.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.wgsl
new file mode 100644
index 0000000..778175a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl
new file mode 100644
index 0000000..f1d9f54
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32uint, read_write>) -> u32
+fn textureNumLayers_2a48dc() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9fcaa8e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/2a48dc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9fcaa8e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/2a48dc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.glsl
new file mode 100644
index 0000000..aef4b24
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_2a48dc() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_2a48dc();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_2a48dc() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_2a48dc() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.msl
new file mode 100644
index 0000000..ff3f1a8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/2a48dc.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.spvasm
new file mode 100644
index 0000000..b320fac
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/2a48dc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.wgsl
new file mode 100644
index 0000000..cfba517
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl
new file mode 100644
index 0000000..0d2bcab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16uint, read_write>) -> u32
+fn textureNumLayers_327d70() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a4c874e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/327d70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a4c874e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/327d70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.glsl
new file mode 100644
index 0000000..e8ce993
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_327d70() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_327d70();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_327d70() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_327d70();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_327d70() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_327d70();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.msl
new file mode 100644
index 0000000..888f649
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/327d70.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.spvasm
new file mode 100644
index 0000000..5905e2b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/327d70.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.wgsl
new file mode 100644
index 0000000..e4954b6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl
new file mode 100644
index 0000000..d6aaf94
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8uint, read_write>) -> u32
+fn textureNumLayers_32ca10() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c5a0dc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/32ca10.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c5a0dc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/32ca10.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.glsl
new file mode 100644
index 0000000..ef4945b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_32ca10() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_32ca10();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_32ca10() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_32ca10() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_32ca10();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.msl
new file mode 100644
index 0000000..28a9a74
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/32ca10.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.spvasm
new file mode 100644
index 0000000..3a56bd9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/32ca10.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.wgsl
new file mode 100644
index 0000000..54a110f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl
new file mode 100644
index 0000000..ccb5bdc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<r32float, read_write>) -> u32
+fn textureNumLayers_37bc8a() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2749b286
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/37bc8a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2749b286
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/37bc8a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.glsl
new file mode 100644
index 0000000..be8350b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_37bc8a() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_37bc8a();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_37bc8a() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_37bc8a() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.msl
new file mode 100644
index 0000000..7f12563
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/37bc8a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.spvasm
new file mode 100644
index 0000000..3e6b3ae
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/37bc8a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.wgsl
new file mode 100644
index 0000000..69431f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl
new file mode 100644
index 0000000..7240f78
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8sint, read_write>) -> u32
+fn textureNumLayers_380a60() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3690da9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/380a60.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3690da9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/380a60.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.glsl
new file mode 100644
index 0000000..78183ee
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_380a60() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_380a60();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_380a60() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_380a60();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_380a60() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_380a60();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.msl
new file mode 100644
index 0000000..f3129f0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/380a60.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.spvasm
new file mode 100644
index 0000000..bee0ecd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/380a60.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.wgsl
new file mode 100644
index 0000000..625a955
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl
new file mode 100644
index 0000000..55cfeb4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<r32uint, read_write>) -> u32
+fn textureNumLayers_520086() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..164848e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/520086.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..164848e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/520086.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.glsl
new file mode 100644
index 0000000..3d2e86d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_520086() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_520086();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_520086() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_520086();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_520086() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_520086();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.msl
new file mode 100644
index 0000000..40d578f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/520086.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.spvasm
new file mode 100644
index 0000000..2194b0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/520086.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.wgsl
new file mode 100644
index 0000000..bdd7b83
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl
new file mode 100644
index 0000000..cfdd005
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16sint, read_write>) -> u32
+fn textureNumLayers_54a654() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..711da62
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/54a654.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..711da62
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/54a654.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.glsl
new file mode 100644
index 0000000..0762db03
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_54a654() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_54a654();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_54a654() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_54a654();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_54a654() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_54a654();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.msl
new file mode 100644
index 0000000..fefbe42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/54a654.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.spvasm
new file mode 100644
index 0000000..be4bffa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/54a654.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.wgsl
new file mode 100644
index 0000000..bb1c790
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl
new file mode 100644
index 0000000..33b45a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32float, read_write>) -> u32
+fn textureNumLayers_5ee8f2() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8f7d79c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/5ee8f2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8f7d79c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/5ee8f2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.glsl
new file mode 100644
index 0000000..bb4f951
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_5ee8f2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_5ee8f2();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_5ee8f2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_5ee8f2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.msl
new file mode 100644
index 0000000..1cc085a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/5ee8f2.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.spvasm
new file mode 100644
index 0000000..d95f133
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/5ee8f2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.wgsl
new file mode 100644
index 0000000..0776e77
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl
new file mode 100644
index 0000000..26af36e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32sint, read_write>) -> u32
+fn textureNumLayers_622aa2() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..936cf11
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/622aa2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..936cf11
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/622aa2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.glsl
new file mode 100644
index 0000000..9bbcb9b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.glsl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_622aa2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_622aa2();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_622aa2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_622aa2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_622aa2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.msl
new file mode 100644
index 0000000..8066539
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/622aa2.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.spvasm
new file mode 100644
index 0000000..4fe8977
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/622aa2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.wgsl
new file mode 100644
index 0000000..97f2279
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl
new file mode 100644
index 0000000..81e5b3b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8unorm, read_write>) -> u32
+fn textureNumLayers_6da0eb() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..05b78fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/6da0eb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..05b78fd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/6da0eb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.glsl
new file mode 100644
index 0000000..0654dd0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_6da0eb() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_6da0eb();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_6da0eb() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_6da0eb() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.msl
new file mode 100644
index 0000000..0fe444b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/6da0eb.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.spvasm
new file mode 100644
index 0000000..120c530
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/6da0eb.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.wgsl
new file mode 100644
index 0000000..aa84c65
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl
new file mode 100644
index 0000000..ce82962
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<r32sint, read_write>) -> u32
+fn textureNumLayers_8e1bd0() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..82d7edf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/8e1bd0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..82d7edf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/8e1bd0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.glsl
new file mode 100644
index 0000000..341bbc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_8e1bd0() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_8e1bd0();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_8e1bd0() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_8e1bd0() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.msl
new file mode 100644
index 0000000..6ed2796
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/8e1bd0.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.spvasm
new file mode 100644
index 0000000..adf0775
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/8e1bd0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.wgsl
new file mode 100644
index 0000000..9abba37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl
new file mode 100644
index 0000000..604d96d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<bgra8unorm, read_write>) -> u32
+fn textureNumLayers_a54655() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d994ffa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/a54655.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d994ffa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/a54655.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.glsl
new file mode 100644
index 0000000..9033f60
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_a54655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_a54655();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_a54655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_a54655();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_a54655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_a54655();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.msl
new file mode 100644
index 0000000..1aa2b9d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/a54655.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.spvasm
new file mode 100644
index 0000000..2002331
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/a54655.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.wgsl
new file mode 100644
index 0000000..ca34460
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl
new file mode 100644
index 0000000..263792b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32sint, read_write>) -> u32
+fn textureNumLayers_d3f655() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0434c10
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/d3f655.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0434c10
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/d3f655.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.glsl
new file mode 100644
index 0000000..8975646
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_d3f655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_d3f655();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_d3f655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_d3f655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_d3f655();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.msl
new file mode 100644
index 0000000..2512c74
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/d3f655.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.spvasm
new file mode 100644
index 0000000..d7d801b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/d3f655.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.wgsl
new file mode 100644
index 0000000..1ccf973
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl
new file mode 100644
index 0000000..ab15977
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8snorm, read_write>) -> u32
+fn textureNumLayers_e47aac() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0b0320c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/e47aac.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0b0320c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/e47aac.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.glsl
new file mode 100644
index 0000000..520576f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_e47aac() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_e47aac();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_e47aac() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_e47aac() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_e47aac();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.msl
new file mode 100644
index 0000000..966d25a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/e47aac.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.spvasm
new file mode 100644
index 0000000..f7440c1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
+
+Failed to generate: builtins/gen/literal/textureNumLayers/e47aac.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.wgsl
new file mode 100644
index 0000000..c2d86b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl
new file mode 100644
index 0000000..ea3b421
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16float, read_write>) -> u32
+fn textureNumLayers_0856ae() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6a0e5e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/0856ae.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6a0e5e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/0856ae.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.glsl
new file mode 100644
index 0000000..aba936b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_0856ae() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_0856ae();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_0856ae() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba16f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_0856ae() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_0856ae();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.msl
new file mode 100644
index 0000000..895102a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/0856ae.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.spvasm
new file mode 100644
index 0000000..175b41d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/0856ae.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.wgsl
new file mode 100644
index 0000000..f2dcf33
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, read_write>;
+
+fn textureNumLayers_0856ae() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_0856ae();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_0856ae();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_0856ae();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl
new file mode 100644
index 0000000..6731be8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32float, read_write>) -> u32
+fn textureNumLayers_17ccad() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d30790f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/17ccad.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d30790f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/17ccad.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.glsl
new file mode 100644
index 0000000..f363301
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.glsl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_17ccad() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_17ccad();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_17ccad() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+
+layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_17ccad() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_17ccad();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.msl
new file mode 100644
index 0000000..76b1925
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/17ccad.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.spvasm
new file mode 100644
index 0000000..c14f8cd
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/17ccad.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.wgsl
new file mode 100644
index 0000000..bf7263e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, read_write>;
+
+fn textureNumLayers_17ccad() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_17ccad();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_17ccad();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_17ccad();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl
new file mode 100644
index 0000000..a61d0f6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32uint, read_write>) -> u32
+fn textureNumLayers_24d572() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..58c4276
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/24d572.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..58c4276
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/24d572.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.glsl
new file mode 100644
index 0000000..6bbd878
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.glsl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_24d572() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_24d572();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_24d572() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_24d572();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+
+layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_24d572() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_24d572();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.msl
new file mode 100644
index 0000000..8a806e6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/24d572.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.spvasm
new file mode 100644
index 0000000..bddc903
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/24d572.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.wgsl
new file mode 100644
index 0000000..778175a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
+
+fn textureNumLayers_24d572() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_24d572();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_24d572();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_24d572();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl
new file mode 100644
index 0000000..f1d9f54
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32uint, read_write>) -> u32
+fn textureNumLayers_2a48dc() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..efa9984
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/2a48dc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..efa9984
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/2a48dc.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.glsl
new file mode 100644
index 0000000..aef4b24
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_2a48dc() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_2a48dc();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_2a48dc() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_2a48dc() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.msl
new file mode 100644
index 0000000..2e9dcfe
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/2a48dc.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.spvasm
new file mode 100644
index 0000000..eebb26c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/2a48dc.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.wgsl
new file mode 100644
index 0000000..cfba517
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, read_write>;
+
+fn textureNumLayers_2a48dc() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_2a48dc();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_2a48dc();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_2a48dc();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl
new file mode 100644
index 0000000..0d2bcab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16uint, read_write>) -> u32
+fn textureNumLayers_327d70() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1e40ef0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/327d70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1e40ef0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/327d70.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.glsl
new file mode 100644
index 0000000..e8ce993
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_327d70() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_327d70();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_327d70() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_327d70();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_327d70() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_327d70();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.msl
new file mode 100644
index 0000000..7ff654c
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/327d70.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.spvasm
new file mode 100644
index 0000000..9cb5539
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/327d70.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.wgsl
new file mode 100644
index 0000000..e4954b6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, read_write>;
+
+fn textureNumLayers_327d70() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_327d70();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_327d70();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_327d70();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl
new file mode 100644
index 0000000..d6aaf94
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8uint, read_write>) -> u32
+fn textureNumLayers_32ca10() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..cc301b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/32ca10.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..cc301b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/32ca10.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.glsl
new file mode 100644
index 0000000..ef4945b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_32ca10() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_32ca10();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_32ca10() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_32ca10() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_32ca10();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.msl
new file mode 100644
index 0000000..1424b37
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/32ca10.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.spvasm
new file mode 100644
index 0000000..6e7019d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/32ca10.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.wgsl
new file mode 100644
index 0000000..54a110f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, read_write>;
+
+fn textureNumLayers_32ca10() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_32ca10();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_32ca10();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_32ca10();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl
new file mode 100644
index 0000000..ccb5bdc
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<r32float, read_write>) -> u32
+fn textureNumLayers_37bc8a() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bd50e00
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/37bc8a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bd50e00
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/37bc8a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.glsl
new file mode 100644
index 0000000..be8350b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_37bc8a() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_37bc8a();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_37bc8a() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(r32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_37bc8a() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.msl
new file mode 100644
index 0000000..51cf905
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/37bc8a.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.spvasm
new file mode 100644
index 0000000..a720322
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/37bc8a.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.wgsl
new file mode 100644
index 0000000..69431f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, read_write>;
+
+fn textureNumLayers_37bc8a() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_37bc8a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_37bc8a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_37bc8a();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl
new file mode 100644
index 0000000..7240f78
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8sint, read_write>) -> u32
+fn textureNumLayers_380a60() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..750e53f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/380a60.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..750e53f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/380a60.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.glsl
new file mode 100644
index 0000000..78183ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_380a60() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_380a60();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_380a60() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_380a60();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_380a60() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_380a60();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.msl
new file mode 100644
index 0000000..89704a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/380a60.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.spvasm
new file mode 100644
index 0000000..7d054c4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/380a60.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.wgsl
new file mode 100644
index 0000000..625a955
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, read_write>;
+
+fn textureNumLayers_380a60() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_380a60();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_380a60();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_380a60();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl
new file mode 100644
index 0000000..55cfeb4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<r32uint, read_write>) -> u32
+fn textureNumLayers_520086() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a70651f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/520086.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a70651f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/520086.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.glsl
new file mode 100644
index 0000000..3d2e86d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_520086() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_520086();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_520086() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_520086();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_520086() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_520086();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.msl
new file mode 100644
index 0000000..1519c22
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/520086.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.spvasm
new file mode 100644
index 0000000..32a9f89
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/520086.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.wgsl
new file mode 100644
index 0000000..bdd7b83
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, read_write>;
+
+fn textureNumLayers_520086() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_520086();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_520086();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_520086();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl
new file mode 100644
index 0000000..cfdd005
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16sint, read_write>) -> u32
+fn textureNumLayers_54a654() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..599b0bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/54a654.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..599b0bb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/54a654.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.glsl
new file mode 100644
index 0000000..0762db03
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_54a654() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_54a654();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_54a654() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_54a654();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_54a654() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_54a654();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.msl
new file mode 100644
index 0000000..b5d85ce
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/54a654.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.spvasm
new file mode 100644
index 0000000..7183e40
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/54a654.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.wgsl
new file mode 100644
index 0000000..bb1c790
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, read_write>;
+
+fn textureNumLayers_54a654() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_54a654();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_54a654();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_54a654();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl
new file mode 100644
index 0000000..33b45a9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32float, read_write>) -> u32
+fn textureNumLayers_5ee8f2() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..dbb1195
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/5ee8f2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..dbb1195
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/5ee8f2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.glsl
new file mode 100644
index 0000000..bb4f951
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_5ee8f2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_5ee8f2();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_5ee8f2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_5ee8f2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.msl
new file mode 100644
index 0000000..d25050f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/5ee8f2.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.spvasm
new file mode 100644
index 0000000..b55677a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/5ee8f2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.wgsl
new file mode 100644
index 0000000..0776e77
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, read_write>;
+
+fn textureNumLayers_5ee8f2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_5ee8f2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_5ee8f2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_5ee8f2();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl
new file mode 100644
index 0000000..26af36e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32sint, read_write>) -> u32
+fn textureNumLayers_622aa2() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..25fd28b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/622aa2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..25fd28b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/622aa2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.glsl
new file mode 100644
index 0000000..9bbcb9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.glsl
@@ -0,0 +1,90 @@
+SKIP: FAILED
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_622aa2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_622aa2();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+precision highp float;
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_622aa2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:4: 'image load-store format' : not supported with this profile: es
+ERROR: 0:4: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
+#version 310 es
+
+layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_622aa2() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_622aa2();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
+Error parsing GLSL shader:
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated
+ERROR: 2 compilation errors. No code generated.
+
+
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.msl
new file mode 100644
index 0000000..92f9d61
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/622aa2.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.spvasm
new file mode 100644
index 0000000..e846c6b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/622aa2.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.wgsl
new file mode 100644
index 0000000..97f2279
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, read_write>;
+
+fn textureNumLayers_622aa2() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_622aa2();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_622aa2();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_622aa2();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl
new file mode 100644
index 0000000..81e5b3b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8unorm, read_write>) -> u32
+fn textureNumLayers_6da0eb() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e6f8c68
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/6da0eb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e6f8c68
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/6da0eb.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.glsl
new file mode 100644
index 0000000..0654dd0
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_6da0eb() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_6da0eb();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_6da0eb() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_6da0eb() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.msl
new file mode 100644
index 0000000..e2dabc4
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/6da0eb.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.spvasm
new file mode 100644
index 0000000..ee46f90
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/6da0eb.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.wgsl
new file mode 100644
index 0000000..aa84c65
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, read_write>;
+
+fn textureNumLayers_6da0eb() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_6da0eb();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_6da0eb();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_6da0eb();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl
new file mode 100644
index 0000000..ce82962
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<r32sint, read_write>) -> u32
+fn textureNumLayers_8e1bd0() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a9d9438
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/8e1bd0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a9d9438
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/8e1bd0.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.glsl
new file mode 100644
index 0000000..341bbc7
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_8e1bd0() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_8e1bd0();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_8e1bd0() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(r32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_8e1bd0() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.msl
new file mode 100644
index 0000000..8d53b25
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/8e1bd0.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.spvasm
new file mode 100644
index 0000000..a4f3ecb
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/8e1bd0.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.wgsl
new file mode 100644
index 0000000..9abba37
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, read_write>;
+
+fn textureNumLayers_8e1bd0() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_8e1bd0();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_8e1bd0();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_8e1bd0();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl
new file mode 100644
index 0000000..604d96d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<bgra8unorm, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<bgra8unorm, read_write>) -> u32
+fn textureNumLayers_a54655() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5ebd37a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/a54655.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5ebd37a
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/a54655.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.glsl
new file mode 100644
index 0000000..9033f60
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_a54655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_a54655();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_a54655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_a54655();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_a54655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_a54655();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.msl
new file mode 100644
index 0000000..3c36ed6
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/a54655.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.spvasm
new file mode 100644
index 0000000..d5a1fd5
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/a54655.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.wgsl
new file mode 100644
index 0000000..ca34460
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<bgra8unorm, read_write>;
+
+fn textureNumLayers_a54655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_a54655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_a54655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_a54655();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl
new file mode 100644
index 0000000..263792b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32sint, read_write>) -> u32
+fn textureNumLayers_d3f655() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3ca7b34
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/d3f655.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3ca7b34
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/d3f655.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.glsl
new file mode 100644
index 0000000..8975646
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_d3f655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_d3f655();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_d3f655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_d3f655() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_d3f655();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.msl
new file mode 100644
index 0000000..09be3c8
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/d3f655.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.spvasm
new file mode 100644
index 0000000..6ff0646
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/d3f655.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.wgsl
new file mode 100644
index 0000000..1ccf973
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, read_write>;
+
+fn textureNumLayers_d3f655() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_d3f655();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_d3f655();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_d3f655();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl
new file mode 100644
index 0000000..ab15977
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl
@@ -0,0 +1,48 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_read_write_storage_texture;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, read_write>;
+
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8snorm, read_write>) -> u32
+fn textureNumLayers_e47aac() {
+ var res: u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7e479ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/e47aac.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7e479ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/e47aac.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.glsl
new file mode 100644
index 0000000..520576f
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.glsl
@@ -0,0 +1,67 @@
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_e47aac() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ textureNumLayers_e47aac();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_e47aac() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void textureNumLayers_e47aac() {
+ uint res = uint(imageSize(arg_0).z);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ textureNumLayers_e47aac();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.msl
new file mode 100644
index 0000000..ad6316b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.msl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/e47aac.wgsl:24:8 error: MSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.spvasm
new file mode 100644
index 0000000..a27e5ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.spvasm
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}
+
+Failed to generate: builtins/gen/var/textureNumLayers/e47aac.wgsl:24:8 error: SPIR-V backend does not support extension 'chromium_experimental_read_write_storage_texture'
+enable chromium_experimental_read_write_storage_texture;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.wgsl
new file mode 100644
index 0000000..c2d86b3
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+enable chromium_experimental_read_write_storage_texture;
+
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, read_write>;
+
+fn textureNumLayers_e47aac() {
+ var res : u32 = textureNumLayers(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ textureNumLayers_e47aac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ textureNumLayers_e47aac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ textureNumLayers_e47aac();
+}