HLSL-IR: fix textureDimensions polyfill using invalid type for swizzle
Bug: 368379365
Change-Id: I198ab4c041cfba8cabc8acc2b2fb59cf2818237a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/207337
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/lang/hlsl/writer/raise/builtin_polyfill.cc b/src/tint/lang/hlsl/writer/raise/builtin_polyfill.cc
index b57b16e..e32a896 100644
--- a/src/tint/lang/hlsl/writer/raise/builtin_polyfill.cc
+++ b/src/tint/lang/hlsl/writer/raise/builtin_polyfill.cc
@@ -923,7 +923,8 @@
tex, args);
query = b.Load(query);
if (!swizzle.IsEmpty()) {
- query = b.Swizzle(ty.vec2<u32>(), query, swizzle);
+ query = b.Swizzle(ty.vec(ty.u32(), static_cast<uint32_t>(swizzle.Length())), query,
+ swizzle);
}
call->Result(0)->ReplaceAllUsesWith(query->Result(0));
});
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
index de792de..2c40cb4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<f32>;
-
-fn textureDimensions_0890c6() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1u);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<float4> arg_0 : register(t0, space1);
+uint3 textureDimensions_0890c6() {
+ Texture3D<float4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(1u), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_0890c6();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_0890c6());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_0890c6();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_0890c6());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_0890c6();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_0890c6 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<f32> = load %arg_0
- %5:u32 = convert 1u
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_0890c6
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_0890c6
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_0890c6
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
index de792de..2c40cb4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<f32>;
-
-fn textureDimensions_0890c6() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1u);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<float4> arg_0 : register(t0, space1);
+uint3 textureDimensions_0890c6() {
+ Texture3D<float4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(1u), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_0890c6();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_0890c6());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_0890c6();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_0890c6());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_0890c6();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_0890c6 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<f32> = load %arg_0
- %5:u32 = convert 1u
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_0890c6
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_0890c6
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_0890c6
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
index 1d26675..83ebab7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<f32>;
-
-fn textureDimensions_1bc428() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1i);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<float4> arg_0 : register(t0, space1);
+uint3 textureDimensions_1bc428() {
+ Texture3D<float4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_1bc428();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_1bc428());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_1bc428();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_1bc428());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_1bc428();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_1bc428 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<f32> = load %arg_0
- %5:u32 = convert 1i
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_1bc428
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_1bc428
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_1bc428
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
index 1d26675..83ebab7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<f32>;
-
-fn textureDimensions_1bc428() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1i);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<float4> arg_0 : register(t0, space1);
+uint3 textureDimensions_1bc428() {
+ Texture3D<float4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_1bc428();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_1bc428());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_1bc428();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_1bc428());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_1bc428();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_1bc428 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<f32> = load %arg_0
- %5:u32 = convert 1i
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_1bc428
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_1bc428
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_1bc428
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
index ae88f10..e8fb3b6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<u32>;
-
-fn textureDimensions_6e6c7a() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1u);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<uint4> arg_0 : register(t0, space1);
+uint3 textureDimensions_6e6c7a() {
+ Texture3D<uint4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(1u), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_6e6c7a();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_6e6c7a());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_6e6c7a();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_6e6c7a());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_6e6c7a();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_6e6c7a = func():vec3<u32> {
- $B2: {
- %4:texture_3d<u32> = load %arg_0
- %5:u32 = convert 1u
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_6e6c7a
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_6e6c7a
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_6e6c7a
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
index ae88f10..e8fb3b6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<u32>;
-
-fn textureDimensions_6e6c7a() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1u);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<uint4> arg_0 : register(t0, space1);
+uint3 textureDimensions_6e6c7a() {
+ Texture3D<uint4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(1u), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_6e6c7a();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_6e6c7a());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_6e6c7a();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_6e6c7a());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_6e6c7a();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_6e6c7a = func():vec3<u32> {
- $B2: {
- %4:texture_3d<u32> = load %arg_0
- %5:u32 = convert 1u
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_6e6c7a
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_6e6c7a
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_6e6c7a
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
index 96a7676..93b9cea 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<i32>;
-
-fn textureDimensions_756031() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1i);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<int4> arg_0 : register(t0, space1);
+uint3 textureDimensions_756031() {
+ Texture3D<int4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_756031();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_756031());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_756031();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_756031());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_756031();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_756031 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<i32> = load %arg_0
- %5:u32 = convert 1i
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_756031
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_756031
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_756031
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
index 96a7676..93b9cea 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<i32>;
-
-fn textureDimensions_756031() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1i);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<int4> arg_0 : register(t0, space1);
+uint3 textureDimensions_756031() {
+ Texture3D<int4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_756031();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_756031());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_756031();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_756031());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_756031();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_756031 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<i32> = load %arg_0
- %5:u32 = convert 1i
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_756031
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_756031
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_756031
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
index 063ab13..34cda12 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<i32>;
-
-fn textureDimensions_c871f3() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1u);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<int4> arg_0 : register(t0, space1);
+uint3 textureDimensions_c871f3() {
+ Texture3D<int4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(1u), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_c871f3();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_c871f3());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_c871f3();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_c871f3());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_c871f3();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_c871f3 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<i32> = load %arg_0
- %5:u32 = convert 1u
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_c871f3
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_c871f3
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_c871f3
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
index 063ab13..34cda12 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<i32>;
-
-fn textureDimensions_c871f3() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1u);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<int4> arg_0 : register(t0, space1);
+uint3 textureDimensions_c871f3() {
+ Texture3D<int4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(1u), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_c871f3();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_c871f3());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_c871f3();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_c871f3());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_c871f3();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_c871f3 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<i32> = load %arg_0
- %5:u32 = convert 1u
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_c871f3
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_c871f3
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_c871f3
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
index 408ffd5..7099bd1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<u32>;
-
-fn textureDimensions_e5a203() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1i);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<uint4> arg_0 : register(t0, space1);
+uint3 textureDimensions_e5a203() {
+ Texture3D<uint4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_e5a203();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_e5a203());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_e5a203();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_e5a203());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_e5a203();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_e5a203 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<u32> = load %arg_0
- %5:u32 = convert 1i
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_e5a203
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_e5a203
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_e5a203
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
index 408ffd5..7099bd1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
@@ -1,116 +1,46 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<u32>;
-
-fn textureDimensions_e5a203() -> vec3<u32> {
- var res : vec3<u32> = textureDimensions(arg_0, 1i);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<uint4> arg_0 : register(t0, space1);
+uint3 textureDimensions_e5a203() {
+ Texture3D<uint4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_e5a203();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_e5a203());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_e5a203();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_e5a203());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_e5a203();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :28:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_e5a203 = func():vec3<u32> {
- $B2: {
- %4:texture_3d<u32> = load %arg_0
- %5:u32 = convert 1i
- %6:ptr<function, vec4<u32>, read_write> = var
- %7:ptr<function, u32, read_write> = access %6, 0u
- %8:ptr<function, u32, read_write> = access %6, 1u
- %9:ptr<function, u32, read_write> = access %6, 2u
- %10:ptr<function, u32, read_write> = access %6, 3u
- %11:void = %4.GetDimensions %5, %7, %8, %9, %10
- %12:vec4<u32> = load %6
- %13:vec2<u32> = swizzle %12, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %13
- %15:vec3<u32> = load %res
- ret %15
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %17:vec3<u32> = call %textureDimensions_e5a203
- %18:void = %prevent_dce.Store3 0u, %17
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %20:vec3<u32> = call %textureDimensions_e5a203
- %21:void = %prevent_dce.Store3 0u, %20
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %24:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %24, vec4<f32>(0.0f)
- %25:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %26:vec3<u32> = call %textureDimensions_e5a203
- store %25, %26
- %27:VertexOutput = load %tint_symbol
- ret %27
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %29:VertexOutput = call %vertex_main_inner
- %30:vec4<f32> = access %29, 0u
- %31:vec3<u32> = access %29, 1u
- %32:vertex_main_outputs = construct %31, %30
- ret %32
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
index 33670ce..f011d38 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<f32>;
-
-fn textureDimensions_0890c6() -> vec3<u32> {
- var arg_1 = 1u;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<float4> arg_0 : register(t0, space1);
+uint3 textureDimensions_0890c6() {
+ uint arg_1 = 1u;
+ Texture3D<float4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_0890c6();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_0890c6());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_0890c6();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_0890c6());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_0890c6();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_0890c6 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var, 1u
- %5:texture_3d<f32> = load %arg_0
- %6:u32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_0890c6
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_0890c6
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_0890c6
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
index 33670ce..f011d38 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<f32>;
-
-fn textureDimensions_0890c6() -> vec3<u32> {
- var arg_1 = 1u;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<float4> arg_0 : register(t0, space1);
+uint3 textureDimensions_0890c6() {
+ uint arg_1 = 1u;
+ Texture3D<float4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_0890c6();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_0890c6());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_0890c6();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_0890c6());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_0890c6();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_0890c6 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var, 1u
- %5:texture_3d<f32> = load %arg_0
- %6:u32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_0890c6
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_0890c6
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_0890c6
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
index 5f17fa6..4970946 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<f32>;
-
-fn textureDimensions_1bc428() -> vec3<u32> {
- var arg_1 = 1i;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<float4> arg_0 : register(t0, space1);
+uint3 textureDimensions_1bc428() {
+ int arg_1 = int(1);
+ Texture3D<float4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_1bc428();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_1bc428());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_1bc428();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_1bc428());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_1bc428();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_1bc428 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, i32, read_write> = var, 1i
- %5:texture_3d<f32> = load %arg_0
- %6:i32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_1bc428
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_1bc428
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_1bc428
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
index 5f17fa6..4970946 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<f32>;
-
-fn textureDimensions_1bc428() -> vec3<u32> {
- var arg_1 = 1i;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<float4> arg_0 : register(t0, space1);
+uint3 textureDimensions_1bc428() {
+ int arg_1 = int(1);
+ Texture3D<float4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_1bc428();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_1bc428());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_1bc428();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_1bc428());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_1bc428();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<f32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_1bc428 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, i32, read_write> = var, 1i
- %5:texture_3d<f32> = load %arg_0
- %6:i32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_1bc428
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_1bc428
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_1bc428
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
index c1ddb99..eddecfd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<u32>;
-
-fn textureDimensions_6e6c7a() -> vec3<u32> {
- var arg_1 = 1u;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<uint4> arg_0 : register(t0, space1);
+uint3 textureDimensions_6e6c7a() {
+ uint arg_1 = 1u;
+ Texture3D<uint4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_6e6c7a();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_6e6c7a());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_6e6c7a();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_6e6c7a());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_6e6c7a();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_6e6c7a = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var, 1u
- %5:texture_3d<u32> = load %arg_0
- %6:u32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_6e6c7a
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_6e6c7a
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_6e6c7a
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
index c1ddb99..eddecfd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<u32>;
-
-fn textureDimensions_6e6c7a() -> vec3<u32> {
- var arg_1 = 1u;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<uint4> arg_0 : register(t0, space1);
+uint3 textureDimensions_6e6c7a() {
+ uint arg_1 = 1u;
+ Texture3D<uint4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_6e6c7a();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_6e6c7a());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_6e6c7a();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_6e6c7a());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_6e6c7a();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_6e6c7a = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var, 1u
- %5:texture_3d<u32> = load %arg_0
- %6:u32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_6e6c7a
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_6e6c7a
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_6e6c7a
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
index 7149461..dc43ba9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<i32>;
-
-fn textureDimensions_756031() -> vec3<u32> {
- var arg_1 = 1i;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<int4> arg_0 : register(t0, space1);
+uint3 textureDimensions_756031() {
+ int arg_1 = int(1);
+ Texture3D<int4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_756031();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_756031());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_756031();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_756031());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_756031();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_756031 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, i32, read_write> = var, 1i
- %5:texture_3d<i32> = load %arg_0
- %6:i32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_756031
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_756031
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_756031
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
index 7149461..dc43ba9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<i32>;
-
-fn textureDimensions_756031() -> vec3<u32> {
- var arg_1 = 1i;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<int4> arg_0 : register(t0, space1);
+uint3 textureDimensions_756031() {
+ int arg_1 = int(1);
+ Texture3D<int4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_756031();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_756031());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_756031();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_756031());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_756031();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_756031 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, i32, read_write> = var, 1i
- %5:texture_3d<i32> = load %arg_0
- %6:i32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_756031
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_756031
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_756031
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
index 0cfdb32..03c774d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<i32>;
-
-fn textureDimensions_c871f3() -> vec3<u32> {
- var arg_1 = 1u;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<int4> arg_0 : register(t0, space1);
+uint3 textureDimensions_c871f3() {
+ uint arg_1 = 1u;
+ Texture3D<int4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_c871f3();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_c871f3());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_c871f3();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_c871f3());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_c871f3();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_c871f3 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var, 1u
- %5:texture_3d<i32> = load %arg_0
- %6:u32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_c871f3
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_c871f3
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_c871f3
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
index 0cfdb32..03c774d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<i32>;
-
-fn textureDimensions_c871f3() -> vec3<u32> {
- var arg_1 = 1u;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<int4> arg_0 : register(t0, space1);
+uint3 textureDimensions_c871f3() {
+ uint arg_1 = 1u;
+ Texture3D<int4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_c871f3();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_c871f3());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_c871f3();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_c871f3());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_c871f3();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<i32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_c871f3 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var, 1u
- %5:texture_3d<i32> = load %arg_0
- %6:u32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_c871f3
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_c871f3
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_c871f3
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
index c0a859d..b275bf3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<u32>;
-
-fn textureDimensions_e5a203() -> vec3<u32> {
- var arg_1 = 1i;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<uint4> arg_0 : register(t0, space1);
+uint3 textureDimensions_e5a203() {
+ int arg_1 = int(1);
+ Texture3D<uint4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_e5a203();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_e5a203());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_e5a203();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_e5a203());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_e5a203();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_e5a203 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, i32, read_write> = var, 1i
- %5:texture_3d<u32> = load %arg_0
- %6:i32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_e5a203
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_e5a203
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_e5a203
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
index c0a859d..b275bf3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
@@ -1,119 +1,47 @@
-SKIP: FAILED
+struct VertexOutput {
+ float4 pos;
+ uint3 prevent_dce;
+};
+
+struct vertex_main_outputs {
+ nointerpolation uint3 VertexOutput_prevent_dce : TEXCOORD0;
+ float4 VertexOutput_pos : SV_Position;
+};
-@group(0) @binding(0) var<storage, read_write> prevent_dce : vec3<u32>;
-
-@group(1) @binding(0) var arg_0 : texture_3d<u32>;
-
-fn textureDimensions_e5a203() -> vec3<u32> {
- var arg_1 = 1i;
- var res : vec3<u32> = textureDimensions(arg_0, arg_1);
+RWByteAddressBuffer prevent_dce : register(u0);
+Texture3D<uint4> arg_0 : register(t0, space1);
+uint3 textureDimensions_e5a203() {
+ int arg_1 = int(1);
+ Texture3D<uint4> v = arg_0;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(arg_1), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 res = v_1.xyz;
return res;
}
-@fragment
-fn fragment_main() {
- prevent_dce = textureDimensions_e5a203();
+void fragment_main() {
+ prevent_dce.Store3(0u, textureDimensions_e5a203());
}
-@compute @workgroup_size(1)
-fn compute_main() {
- prevent_dce = textureDimensions_e5a203();
+[numthreads(1, 1, 1)]
+void compute_main() {
+ prevent_dce.Store3(0u, textureDimensions_e5a203());
}
-struct VertexOutput {
- @builtin(position)
- pos : vec4<f32>,
- @location(0) @interpolate(flat)
- prevent_dce : vec3<u32>,
-}
-
-@vertex
-fn vertex_main() -> VertexOutput {
- var tint_symbol : VertexOutput;
- tint_symbol.pos = vec4<f32>();
+VertexOutput vertex_main_inner() {
+ VertexOutput tint_symbol = (VertexOutput)0;
+ tint_symbol.pos = (0.0f).xxxx;
tint_symbol.prevent_dce = textureDimensions_e5a203();
- return tint_symbol;
+ VertexOutput v_2 = tint_symbol;
+ return v_2;
}
-Failed to generate: :30:49 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- ^^^
-
-:17:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-VertexOutput = struct @align(16) {
- pos:vec4<f32> @offset(0)
- prevent_dce:vec3<u32> @offset(16)
+vertex_main_outputs vertex_main() {
+ VertexOutput v_3 = vertex_main_inner();
+ VertexOutput v_4 = v_3;
+ VertexOutput v_5 = v_3;
+ vertex_main_outputs v_6 = {v_5.prevent_dce, v_4.pos};
+ return v_6;
}
-vertex_main_outputs = struct @align(16) {
- VertexOutput_prevent_dce:vec3<u32> @offset(0), @location(0), @interpolate(flat)
- VertexOutput_pos:vec4<f32> @offset(16), @builtin(position)
-}
-
-$B1: { # root
- %prevent_dce:hlsl.byte_address_buffer<read_write> = var @binding_point(0, 0)
- %arg_0:ptr<handle, texture_3d<u32>, read> = var @binding_point(1, 0)
-}
-
-%textureDimensions_e5a203 = func():vec3<u32> {
- $B2: {
- %arg_1:ptr<function, i32, read_write> = var, 1i
- %5:texture_3d<u32> = load %arg_0
- %6:i32 = load %arg_1
- %7:u32 = convert %6
- %8:ptr<function, vec4<u32>, read_write> = var
- %9:ptr<function, u32, read_write> = access %8, 0u
- %10:ptr<function, u32, read_write> = access %8, 1u
- %11:ptr<function, u32, read_write> = access %8, 2u
- %12:ptr<function, u32, read_write> = access %8, 3u
- %13:void = %5.GetDimensions %7, %9, %10, %11, %12
- %14:vec4<u32> = load %8
- %15:vec2<u32> = swizzle %14, xyz
- %res:ptr<function, vec3<u32>, read_write> = var, %15
- %17:vec3<u32> = load %res
- ret %17
- }
-}
-%fragment_main = @fragment func():void {
- $B3: {
- %19:vec3<u32> = call %textureDimensions_e5a203
- %20:void = %prevent_dce.Store3 0u, %19
- ret
- }
-}
-%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
- $B4: {
- %22:vec3<u32> = call %textureDimensions_e5a203
- %23:void = %prevent_dce.Store3 0u, %22
- ret
- }
-}
-%vertex_main_inner = func():VertexOutput {
- $B5: {
- %tint_symbol:ptr<function, VertexOutput, read_write> = var
- %26:ptr<function, vec4<f32>, read_write> = access %tint_symbol, 0u
- store %26, vec4<f32>(0.0f)
- %27:ptr<function, vec3<u32>, read_write> = access %tint_symbol, 1u
- %28:vec3<u32> = call %textureDimensions_e5a203
- store %27, %28
- %29:VertexOutput = load %tint_symbol
- ret %29
- }
-}
-%vertex_main = @vertex func():vertex_main_outputs {
- $B6: {
- %31:VertexOutput = call %vertex_main_inner
- %32:vec4<f32> = access %31, 0u
- %33:vec3<u32> = access %31, 1u
- %34:vertex_main_outputs = construct %33, %32
- ret %34
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/types/texture/sampled/3d.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/sampled/3d.wgsl.expected.ir.dxc.hlsl
index 9cf167f..a372253 100644
--- a/test/tint/types/texture/sampled/3d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/sampled/3d.wgsl.expected.ir.dxc.hlsl
@@ -1,88 +1,20 @@
-SKIP: FAILED
-
-@group(0) @binding(0) var t_f : texture_3d<f32>;
-
-@group(0) @binding(1) var t_i : texture_3d<i32>;
-
-@group(0) @binding(2) var t_u : texture_3d<u32>;
-
-@compute @workgroup_size(1)
-fn main() {
- var fdims = textureDimensions(t_f, 1);
- var idims = textureDimensions(t_i, 1);
- var udims = textureDimensions(t_u, 1);
+Texture3D<float4> t_f : register(t0);
+Texture3D<int4> t_i : register(t1);
+Texture3D<uint4> t_u : register(t2);
+[numthreads(1, 1, 1)]
+void main() {
+ Texture3D<float4> v = t_f;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 fdims = v_1.xyz;
+ Texture3D<int4> v_2 = t_i;
+ uint4 v_3 = (0u).xxxx;
+ v_2.GetDimensions(uint(int(1)), v_3[0u], v_3[1u], v_3[2u], v_3[3u]);
+ uint3 idims = v_3.xyz;
+ Texture3D<uint4> v_4 = t_u;
+ uint4 v_5 = (0u).xxxx;
+ v_4.GetDimensions(uint(int(1)), v_5[0u], v_5[1u], v_5[2u], v_5[3u]);
+ uint3 udims = v_5.xyz;
}
-Failed to generate: :19:51 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %fdims:ptr<function, vec3<u32>, read_write> = var, %14
- ^^^
-
-:8:3 note: in block
- $B2: {
- ^^^
-
-:30:51 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %idims:ptr<function, vec3<u32>, read_write> = var, %25
- ^^^
-
-:8:3 note: in block
- $B2: {
- ^^^
-
-:41:51 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %udims:ptr<function, vec3<u32>, read_write> = var, %36
- ^^^
-
-:8:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-$B1: { # root
- %t_f:ptr<handle, texture_3d<f32>, read> = var @binding_point(0, 0)
- %t_i:ptr<handle, texture_3d<i32>, read> = var @binding_point(0, 1)
- %t_u:ptr<handle, texture_3d<u32>, read> = var @binding_point(0, 2)
-}
-
-%main = @compute @workgroup_size(1, 1, 1) func():void {
- $B2: {
- %5:texture_3d<f32> = load %t_f
- %6:u32 = convert 1i
- %7:ptr<function, vec4<u32>, read_write> = var
- %8:ptr<function, u32, read_write> = access %7, 0u
- %9:ptr<function, u32, read_write> = access %7, 1u
- %10:ptr<function, u32, read_write> = access %7, 2u
- %11:ptr<function, u32, read_write> = access %7, 3u
- %12:void = %5.GetDimensions %6, %8, %9, %10, %11
- %13:vec4<u32> = load %7
- %14:vec2<u32> = swizzle %13, xyz
- %fdims:ptr<function, vec3<u32>, read_write> = var, %14
- %16:texture_3d<i32> = load %t_i
- %17:u32 = convert 1i
- %18:ptr<function, vec4<u32>, read_write> = var
- %19:ptr<function, u32, read_write> = access %18, 0u
- %20:ptr<function, u32, read_write> = access %18, 1u
- %21:ptr<function, u32, read_write> = access %18, 2u
- %22:ptr<function, u32, read_write> = access %18, 3u
- %23:void = %16.GetDimensions %17, %19, %20, %21, %22
- %24:vec4<u32> = load %18
- %25:vec2<u32> = swizzle %24, xyz
- %idims:ptr<function, vec3<u32>, read_write> = var, %25
- %27:texture_3d<u32> = load %t_u
- %28:u32 = convert 1i
- %29:ptr<function, vec4<u32>, read_write> = var
- %30:ptr<function, u32, read_write> = access %29, 0u
- %31:ptr<function, u32, read_write> = access %29, 1u
- %32:ptr<function, u32, read_write> = access %29, 2u
- %33:ptr<function, u32, read_write> = access %29, 3u
- %34:void = %27.GetDimensions %28, %30, %31, %32, %33
- %35:vec4<u32> = load %29
- %36:vec2<u32> = swizzle %35, xyz
- %udims:ptr<function, vec3<u32>, read_write> = var, %36
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/types/texture/sampled/3d.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/sampled/3d.wgsl.expected.ir.fxc.hlsl
index 9cf167f..a372253 100644
--- a/test/tint/types/texture/sampled/3d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/sampled/3d.wgsl.expected.ir.fxc.hlsl
@@ -1,88 +1,20 @@
-SKIP: FAILED
-
-@group(0) @binding(0) var t_f : texture_3d<f32>;
-
-@group(0) @binding(1) var t_i : texture_3d<i32>;
-
-@group(0) @binding(2) var t_u : texture_3d<u32>;
-
-@compute @workgroup_size(1)
-fn main() {
- var fdims = textureDimensions(t_f, 1);
- var idims = textureDimensions(t_i, 1);
- var udims = textureDimensions(t_u, 1);
+Texture3D<float4> t_f : register(t0);
+Texture3D<int4> t_i : register(t1);
+Texture3D<uint4> t_u : register(t2);
+[numthreads(1, 1, 1)]
+void main() {
+ Texture3D<float4> v = t_f;
+ uint4 v_1 = (0u).xxxx;
+ v.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+ uint3 fdims = v_1.xyz;
+ Texture3D<int4> v_2 = t_i;
+ uint4 v_3 = (0u).xxxx;
+ v_2.GetDimensions(uint(int(1)), v_3[0u], v_3[1u], v_3[2u], v_3[3u]);
+ uint3 idims = v_3.xyz;
+ Texture3D<uint4> v_4 = t_u;
+ uint4 v_5 = (0u).xxxx;
+ v_4.GetDimensions(uint(int(1)), v_5[0u], v_5[1u], v_5[2u], v_5[3u]);
+ uint3 udims = v_5.xyz;
}
-Failed to generate: :19:51 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %fdims:ptr<function, vec3<u32>, read_write> = var, %14
- ^^^
-
-:8:3 note: in block
- $B2: {
- ^^^
-
-:30:51 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %idims:ptr<function, vec3<u32>, read_write> = var, %25
- ^^^
-
-:8:3 note: in block
- $B2: {
- ^^^
-
-:41:51 error: var: initializer type 'vec2<u32>' does not match store type 'vec3<u32>'
- %udims:ptr<function, vec3<u32>, read_write> = var, %36
- ^^^
-
-:8:3 note: in block
- $B2: {
- ^^^
-
-note: # Disassembly
-$B1: { # root
- %t_f:ptr<handle, texture_3d<f32>, read> = var @binding_point(0, 0)
- %t_i:ptr<handle, texture_3d<i32>, read> = var @binding_point(0, 1)
- %t_u:ptr<handle, texture_3d<u32>, read> = var @binding_point(0, 2)
-}
-
-%main = @compute @workgroup_size(1, 1, 1) func():void {
- $B2: {
- %5:texture_3d<f32> = load %t_f
- %6:u32 = convert 1i
- %7:ptr<function, vec4<u32>, read_write> = var
- %8:ptr<function, u32, read_write> = access %7, 0u
- %9:ptr<function, u32, read_write> = access %7, 1u
- %10:ptr<function, u32, read_write> = access %7, 2u
- %11:ptr<function, u32, read_write> = access %7, 3u
- %12:void = %5.GetDimensions %6, %8, %9, %10, %11
- %13:vec4<u32> = load %7
- %14:vec2<u32> = swizzle %13, xyz
- %fdims:ptr<function, vec3<u32>, read_write> = var, %14
- %16:texture_3d<i32> = load %t_i
- %17:u32 = convert 1i
- %18:ptr<function, vec4<u32>, read_write> = var
- %19:ptr<function, u32, read_write> = access %18, 0u
- %20:ptr<function, u32, read_write> = access %18, 1u
- %21:ptr<function, u32, read_write> = access %18, 2u
- %22:ptr<function, u32, read_write> = access %18, 3u
- %23:void = %16.GetDimensions %17, %19, %20, %21, %22
- %24:vec4<u32> = load %18
- %25:vec2<u32> = swizzle %24, xyz
- %idims:ptr<function, vec3<u32>, read_write> = var, %25
- %27:texture_3d<u32> = load %t_u
- %28:u32 = convert 1i
- %29:ptr<function, vec4<u32>, read_write> = var
- %30:ptr<function, u32, read_write> = access %29, 0u
- %31:ptr<function, u32, read_write> = access %29, 1u
- %32:ptr<function, u32, read_write> = access %29, 2u
- %33:ptr<function, u32, read_write> = access %29, 3u
- %34:void = %27.GetDimensions %28, %30, %31, %32, %33
- %35:vec4<u32> = load %29
- %36:vec2<u32> = swizzle %35, xyz
- %udims:ptr<function, vec3<u32>, read_write> = var, %36
- ret
- }
-}
-
-
-tint executable returned error: exit status 1