HLSL-IR: enable replace_pointer_lets in ValueToLet
Thanks to dsinclair@'s recent changes, ValueToLet can now replace lets
to pointers, which inlines them. This is required for HLSL as it does
not support pointers. We were erroneously emitting non-pointer variables
instead.
Bug: 362533189
Change-Id: Ib78c3c52339b9ad22c4725e405f76d166e9adc6f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/209254
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/lang/hlsl/writer/printer/printer.cc b/src/tint/lang/hlsl/writer/printer/printer.cc
index 3d6db6f..94126ec 100644
--- a/src/tint/lang/hlsl/writer/printer/printer.cc
+++ b/src/tint/lang/hlsl/writer/printer/printer.cc
@@ -608,6 +608,8 @@
}
void EmitLet(const core::ir::Let* l, LetType type) {
+ TINT_ASSERT(!l->Result(0)->Type()->Is<core::type::Pointer>());
+
auto out = Line();
if (type == LetType::kModuleScope) {
diff --git a/src/tint/lang/hlsl/writer/raise/raise.cc b/src/tint/lang/hlsl/writer/raise/raise.cc
index 2e9b1e2..feecca8 100644
--- a/src/tint/lang/hlsl/writer/raise/raise.cc
+++ b/src/tint/lang/hlsl/writer/raise/raise.cc
@@ -198,6 +198,7 @@
RUN_TRANSFORM(core::ir::transform::RenameConflicts, module);
{
core::ir::transform::ValueToLetConfig cfg;
+ cfg.replace_pointer_lets = true;
RUN_TRANSFORM(core::ir::transform::ValueToLet, module, cfg);
}
diff --git a/test/tint/access/ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/access/ptr.wgsl.expected.ir.dxc.hlsl
index 31c71a4..8d4a69d 100644
--- a/test/tint/access/ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/access/ptr.wgsl.expected.ir.dxc.hlsl
@@ -29,9 +29,8 @@
}
int accept_ptr_to_struct_access_pass_ptr(inout S val) {
- int b = val.a;
- b = int(2);
- return b;
+ val.a = int(2);
+ return val.a;
}
int tint_f32_to_i32(float value) {
@@ -57,14 +56,13 @@
GroupMemoryBarrierWithGroupSync();
int v1 = int(0);
S v2 = (S)0;
- S v3 = v2;
float3 v4 = (0.0f).xxx;
int v_4 = int(0);
InterlockedOr(g1, int(0), v_4);
int t1 = v_4;
int v_5 = accept_ptr_deref_pass_through(v1);
int v_6 = (v_5 + accept_ptr_to_struct_and_access(v2));
- int v_7 = (v_6 + accept_ptr_to_struct_and_access(v3));
+ int v_7 = (v_6 + accept_ptr_to_struct_and_access(v2));
int v_8 = (v_7 + accept_ptr_vec_access_elements(v4));
int v_9 = (v_8 + accept_ptr_to_struct_access_pass_ptr(v2));
s.Store(0u, asuint(((v_9 + call_builtin_with_mod_scope_ptr()) + t1)));
diff --git a/test/tint/array/assign_to_subexpr.wgsl.expected.ir.dxc.hlsl b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.dxc.hlsl
index a4f9c0f..9f3d59b 100644
--- a/test/tint/array/assign_to_subexpr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.dxc.hlsl
@@ -9,20 +9,17 @@
int tint_symbol[4] = (int[4])0;
S dst_struct = (S)0;
int dst_array[2][4] = (int[2][4])0;
- int dst_ptr[4] = tint_symbol;
- S dst_struct_ptr = dst_struct;
- int dst_array_ptr[2][4] = dst_array;
int src[4] = v;
dst_struct.arr = src;
int v_1[4] = v;
dst_array[int(1)] = v_1;
int v_2[4] = v;
- dst_ptr = v_2;
+ tint_symbol = v_2;
int v_3[4] = v;
- dst_struct_ptr.arr = v_3;
+ dst_struct.arr = v_3;
int v_4[4] = v;
- dst_array_ptr[int(0)] = v_4;
- return ((dst_ptr[int(0)] + dst_struct_ptr.arr[int(0)]) + dst_array_ptr[int(0)][int(0)]);
+ dst_array[int(0)] = v_4;
+ return ((tint_symbol[int(0)] + dst_struct.arr[int(0)]) + dst_array[int(0)][int(0)]);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
index 7fb7bb5..a33e300 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
@@ -112,12 +112,18 @@
uint v_47 = (32u + (544u * uint(idx)));
uint4 v_48 = ub[(v_47 / 16u)];
uint2 vec2_u32 = (((((v_47 % 16u) / 4u) == 2u)) ? (v_48.zw) : (v_48.xy));
- float3 vec3_f32 = asfloat(ub[((48u + (544u * uint(idx))) / 16u)].xyz);
- int3 vec3_i32 = asint(ub[((64u + (544u * uint(idx))) / 16u)].xyz);
- uint3 vec3_u32 = ub[((80u + (544u * uint(idx))) / 16u)].xyz;
- float4 vec4_f32 = asfloat(ub[((96u + (544u * uint(idx))) / 16u)]);
- int4 vec4_i32 = asint(ub[((112u + (544u * uint(idx))) / 16u)]);
- uint4 vec4_u32 = ub[((128u + (544u * uint(idx))) / 16u)];
+ uint v_49 = ((48u + (544u * uint(idx))) / 16u);
+ float3 vec3_f32 = asfloat(ub[v_49].xyz);
+ uint v_50 = ((64u + (544u * uint(idx))) / 16u);
+ int3 vec3_i32 = asint(ub[v_50].xyz);
+ uint v_51 = ((80u + (544u * uint(idx))) / 16u);
+ uint3 vec3_u32 = ub[v_51].xyz;
+ uint v_52 = ((96u + (544u * uint(idx))) / 16u);
+ float4 vec4_f32 = asfloat(ub[v_52]);
+ uint v_53 = ((112u + (544u * uint(idx))) / 16u);
+ int4 vec4_i32 = asint(ub[v_53]);
+ uint v_54 = ((128u + (544u * uint(idx))) / 16u);
+ uint4 vec4_u32 = ub[v_54];
float2x2 mat2x2_f32 = v_36((144u + (544u * uint(idx))));
float2x3 mat2x3_f32 = v_34((160u + (544u * uint(idx))));
float2x4 mat2x4_f32 = v_32((192u + (544u * uint(idx))));
@@ -127,26 +133,26 @@
float4x2 mat4x2_f32 = v_12((352u + (544u * uint(idx))));
float4x3 mat4x3_f32 = v_8((384u + (544u * uint(idx))));
float4x4 mat4x4_f32 = v_4((448u + (544u * uint(idx))));
- float3 v_49[2] = v((512u + (544u * uint(idx))));
- int v_50 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
- int v_51 = (v_50 + int(scalar_u32));
- int v_52 = ((v_51 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
- int v_53 = (v_52 + int(vec2_u32[0u]));
- int v_54 = ((v_53 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
- int v_55 = (v_54 + int(vec3_u32[1u]));
- int v_56 = ((v_55 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
- int v_57 = (v_56 + int(vec4_u32[2u]));
- int v_58 = (v_57 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
- int v_59 = (v_58 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
- int v_60 = (v_59 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
- int v_61 = (v_60 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
- int v_62 = (v_61 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
- int v_63 = (v_62 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
- int v_64 = (v_63 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
- int v_65 = (v_64 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
- int v_66 = (v_65 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
- float3 arr2_vec3_f32[2] = v_49;
- s.Store(0u, asuint((v_66 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
+ float3 v_55[2] = v((512u + (544u * uint(idx))));
+ int v_56 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int v_57 = (v_56 + int(scalar_u32));
+ int v_58 = ((v_57 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int v_59 = (v_58 + int(vec2_u32[0u]));
+ int v_60 = ((v_59 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int v_61 = (v_60 + int(vec3_u32[1u]));
+ int v_62 = ((v_61 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int v_63 = (v_62 + int(vec4_u32[2u]));
+ int v_64 = (v_63 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
+ int v_65 = (v_64 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
+ int v_66 = (v_65 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
+ int v_67 = (v_66 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
+ int v_68 = (v_67 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
+ int v_69 = (v_68 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
+ int v_70 = (v_69 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
+ int v_71 = (v_70 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
+ int v_72 = (v_71 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
+ float3 arr2_vec3_f32[2] = v_55;
+ s.Store(0u, asuint((v_72 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
index 7fb7bb5..a33e300 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
@@ -112,12 +112,18 @@
uint v_47 = (32u + (544u * uint(idx)));
uint4 v_48 = ub[(v_47 / 16u)];
uint2 vec2_u32 = (((((v_47 % 16u) / 4u) == 2u)) ? (v_48.zw) : (v_48.xy));
- float3 vec3_f32 = asfloat(ub[((48u + (544u * uint(idx))) / 16u)].xyz);
- int3 vec3_i32 = asint(ub[((64u + (544u * uint(idx))) / 16u)].xyz);
- uint3 vec3_u32 = ub[((80u + (544u * uint(idx))) / 16u)].xyz;
- float4 vec4_f32 = asfloat(ub[((96u + (544u * uint(idx))) / 16u)]);
- int4 vec4_i32 = asint(ub[((112u + (544u * uint(idx))) / 16u)]);
- uint4 vec4_u32 = ub[((128u + (544u * uint(idx))) / 16u)];
+ uint v_49 = ((48u + (544u * uint(idx))) / 16u);
+ float3 vec3_f32 = asfloat(ub[v_49].xyz);
+ uint v_50 = ((64u + (544u * uint(idx))) / 16u);
+ int3 vec3_i32 = asint(ub[v_50].xyz);
+ uint v_51 = ((80u + (544u * uint(idx))) / 16u);
+ uint3 vec3_u32 = ub[v_51].xyz;
+ uint v_52 = ((96u + (544u * uint(idx))) / 16u);
+ float4 vec4_f32 = asfloat(ub[v_52]);
+ uint v_53 = ((112u + (544u * uint(idx))) / 16u);
+ int4 vec4_i32 = asint(ub[v_53]);
+ uint v_54 = ((128u + (544u * uint(idx))) / 16u);
+ uint4 vec4_u32 = ub[v_54];
float2x2 mat2x2_f32 = v_36((144u + (544u * uint(idx))));
float2x3 mat2x3_f32 = v_34((160u + (544u * uint(idx))));
float2x4 mat2x4_f32 = v_32((192u + (544u * uint(idx))));
@@ -127,26 +133,26 @@
float4x2 mat4x2_f32 = v_12((352u + (544u * uint(idx))));
float4x3 mat4x3_f32 = v_8((384u + (544u * uint(idx))));
float4x4 mat4x4_f32 = v_4((448u + (544u * uint(idx))));
- float3 v_49[2] = v((512u + (544u * uint(idx))));
- int v_50 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
- int v_51 = (v_50 + int(scalar_u32));
- int v_52 = ((v_51 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
- int v_53 = (v_52 + int(vec2_u32[0u]));
- int v_54 = ((v_53 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
- int v_55 = (v_54 + int(vec3_u32[1u]));
- int v_56 = ((v_55 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
- int v_57 = (v_56 + int(vec4_u32[2u]));
- int v_58 = (v_57 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
- int v_59 = (v_58 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
- int v_60 = (v_59 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
- int v_61 = (v_60 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
- int v_62 = (v_61 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
- int v_63 = (v_62 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
- int v_64 = (v_63 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
- int v_65 = (v_64 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
- int v_66 = (v_65 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
- float3 arr2_vec3_f32[2] = v_49;
- s.Store(0u, asuint((v_66 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
+ float3 v_55[2] = v((512u + (544u * uint(idx))));
+ int v_56 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int v_57 = (v_56 + int(scalar_u32));
+ int v_58 = ((v_57 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int v_59 = (v_58 + int(vec2_u32[0u]));
+ int v_60 = ((v_59 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int v_61 = (v_60 + int(vec3_u32[1u]));
+ int v_62 = ((v_61 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int v_63 = (v_62 + int(vec4_u32[2u]));
+ int v_64 = (v_63 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
+ int v_65 = (v_64 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
+ int v_66 = (v_65 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
+ int v_67 = (v_66 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
+ int v_68 = (v_67 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
+ int v_69 = (v_68 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
+ int v_70 = (v_69 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
+ int v_71 = (v_70 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
+ int v_72 = (v_71 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
+ float3 arr2_vec3_f32[2] = v_55;
+ s.Store(0u, asuint((v_72 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
index 0031724..8a7171d 100644
--- a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
@@ -227,14 +227,22 @@
uint v_96 = (40u + (800u * uint(idx)));
uint4 v_97 = ub[(v_96 / 16u)];
vector<float16_t, 2> vec2_f16 = tint_bitcast_to_f16((((((v_96 % 16u) / 4u) == 2u)) ? (v_97.z) : (v_97.x)));
- float3 vec3_f32 = asfloat(ub[((48u + (800u * uint(idx))) / 16u)].xyz);
- int3 vec3_i32 = asint(ub[((64u + (800u * uint(idx))) / 16u)].xyz);
- uint3 vec3_u32 = ub[((80u + (800u * uint(idx))) / 16u)].xyz;
- vector<float16_t, 3> vec3_f16 = tint_bitcast_to_f16_1(ub[((96u + (800u * uint(idx))) / 16u)]).xyz;
- float4 vec4_f32 = asfloat(ub[((112u + (800u * uint(idx))) / 16u)]);
- int4 vec4_i32 = asint(ub[((128u + (800u * uint(idx))) / 16u)]);
- uint4 vec4_u32 = ub[((144u + (800u * uint(idx))) / 16u)];
- vector<float16_t, 4> vec4_f16 = tint_bitcast_to_f16_1(ub[((160u + (800u * uint(idx))) / 16u)]);
+ uint v_98 = ((48u + (800u * uint(idx))) / 16u);
+ float3 vec3_f32 = asfloat(ub[v_98].xyz);
+ uint v_99 = ((64u + (800u * uint(idx))) / 16u);
+ int3 vec3_i32 = asint(ub[v_99].xyz);
+ uint v_100 = ((80u + (800u * uint(idx))) / 16u);
+ uint3 vec3_u32 = ub[v_100].xyz;
+ uint v_101 = ((96u + (800u * uint(idx))) / 16u);
+ vector<float16_t, 3> vec3_f16 = tint_bitcast_to_f16_1(ub[v_101]).xyz;
+ uint v_102 = ((112u + (800u * uint(idx))) / 16u);
+ float4 vec4_f32 = asfloat(ub[v_102]);
+ uint v_103 = ((128u + (800u * uint(idx))) / 16u);
+ int4 vec4_i32 = asint(ub[v_103]);
+ uint v_104 = ((144u + (800u * uint(idx))) / 16u);
+ uint4 vec4_u32 = ub[v_104];
+ uint v_105 = ((160u + (800u * uint(idx))) / 16u);
+ vector<float16_t, 4> vec4_f16 = tint_bitcast_to_f16_1(ub[v_105]);
float2x2 mat2x2_f32 = v_81((168u + (800u * uint(idx))));
float2x3 mat2x3_f32 = v_79((192u + (800u * uint(idx))));
float2x4 mat2x4_f32 = v_77((224u + (800u * uint(idx))));
@@ -253,42 +261,42 @@
matrix<float16_t, 4, 2> mat4x2_f16 = v_2((648u + (800u * uint(idx))));
matrix<float16_t, 4, 3> mat4x3_f16 = v_25((664u + (800u * uint(idx))));
matrix<float16_t, 4, 4> mat4x4_f16 = v_21((696u + (800u * uint(idx))));
- float3 v_98[2] = v_14((736u + (800u * uint(idx))));
- matrix<float16_t, 4, 2> v_99[2] = v_10((768u + (800u * uint(idx))));
- int v_100 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
- int v_101 = (v_100 + int(scalar_u32));
- int v_102 = (v_101 + tint_f16_to_i32(scalar_f16));
- int v_103 = ((v_102 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
- int v_104 = (v_103 + int(vec2_u32[0u]));
- int v_105 = (v_104 + tint_f16_to_i32(vec2_f16[0u]));
- int v_106 = ((v_105 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
- int v_107 = (v_106 + int(vec3_u32[1u]));
- int v_108 = (v_107 + tint_f16_to_i32(vec3_f16[1u]));
- int v_109 = ((v_108 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
- int v_110 = (v_109 + int(vec4_u32[2u]));
- int v_111 = (v_110 + tint_f16_to_i32(vec4_f16[2u]));
- int v_112 = (v_111 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
- int v_113 = (v_112 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
- int v_114 = (v_113 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
- int v_115 = (v_114 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
- int v_116 = (v_115 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
- int v_117 = (v_116 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
- int v_118 = (v_117 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
- int v_119 = (v_118 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
- int v_120 = (v_119 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
- int v_121 = (v_120 + tint_f16_to_i32(mat2x2_f16[int(0)][0u]));
- int v_122 = (v_121 + tint_f16_to_i32(mat2x3_f16[int(0)][0u]));
- int v_123 = (v_122 + tint_f16_to_i32(mat2x4_f16[int(0)][0u]));
- int v_124 = (v_123 + tint_f16_to_i32(mat3x2_f16[int(0)][0u]));
- int v_125 = (v_124 + tint_f16_to_i32(mat3x3_f16[int(0)][0u]));
- int v_126 = (v_125 + tint_f16_to_i32(mat3x4_f16[int(0)][0u]));
- int v_127 = (v_126 + tint_f16_to_i32(mat4x2_f16[int(0)][0u]));
- int v_128 = (v_127 + tint_f16_to_i32(mat4x3_f16[int(0)][0u]));
- int v_129 = (v_128 + tint_f16_to_i32(mat4x4_f16[int(0)][0u]));
- float3 arr2_vec3_f32[2] = v_98;
- int v_130 = (v_129 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]));
- matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = v_99;
- s.Store(0u, asuint((v_130 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)][0u]))));
+ float3 v_106[2] = v_14((736u + (800u * uint(idx))));
+ matrix<float16_t, 4, 2> v_107[2] = v_10((768u + (800u * uint(idx))));
+ int v_108 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
+ int v_109 = (v_108 + int(scalar_u32));
+ int v_110 = (v_109 + tint_f16_to_i32(scalar_f16));
+ int v_111 = ((v_110 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
+ int v_112 = (v_111 + int(vec2_u32[0u]));
+ int v_113 = (v_112 + tint_f16_to_i32(vec2_f16[0u]));
+ int v_114 = ((v_113 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
+ int v_115 = (v_114 + int(vec3_u32[1u]));
+ int v_116 = (v_115 + tint_f16_to_i32(vec3_f16[1u]));
+ int v_117 = ((v_116 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
+ int v_118 = (v_117 + int(vec4_u32[2u]));
+ int v_119 = (v_118 + tint_f16_to_i32(vec4_f16[2u]));
+ int v_120 = (v_119 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
+ int v_121 = (v_120 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
+ int v_122 = (v_121 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
+ int v_123 = (v_122 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
+ int v_124 = (v_123 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
+ int v_125 = (v_124 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
+ int v_126 = (v_125 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
+ int v_127 = (v_126 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
+ int v_128 = (v_127 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
+ int v_129 = (v_128 + tint_f16_to_i32(mat2x2_f16[int(0)][0u]));
+ int v_130 = (v_129 + tint_f16_to_i32(mat2x3_f16[int(0)][0u]));
+ int v_131 = (v_130 + tint_f16_to_i32(mat2x4_f16[int(0)][0u]));
+ int v_132 = (v_131 + tint_f16_to_i32(mat3x2_f16[int(0)][0u]));
+ int v_133 = (v_132 + tint_f16_to_i32(mat3x3_f16[int(0)][0u]));
+ int v_134 = (v_133 + tint_f16_to_i32(mat3x4_f16[int(0)][0u]));
+ int v_135 = (v_134 + tint_f16_to_i32(mat4x2_f16[int(0)][0u]));
+ int v_136 = (v_135 + tint_f16_to_i32(mat4x3_f16[int(0)][0u]));
+ int v_137 = (v_136 + tint_f16_to_i32(mat4x4_f16[int(0)][0u]));
+ float3 arr2_vec3_f32[2] = v_106;
+ int v_138 = (v_137 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]));
+ matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = v_107;
+ s.Store(0u, asuint((v_138 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)][0u]))));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/chromium/1433499.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/chromium/1433499.wgsl.expected.ir.dxc.hlsl
index ae009bb..854fd75 100644
--- a/test/tint/bug/chromium/1433499.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/chromium/1433499.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,5 @@
void f(inout float p) {
- float x = p;
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.dxc.hlsl
index 186a8ec..862961f 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.dxc.hlsl
@@ -10,6 +10,7 @@
[numthreads(1, 1, 1)]
void f() {
S s = (S)0;
- result.Store(0u, asuint(s.data[asint(ubo[0u].x)]));
+ int v = asint(ubo[0u].x);
+ result.Store(0u, asuint(s.data[v]));
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.fxc.hlsl
index 186a8ec..862961f 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.fxc.hlsl
@@ -10,6 +10,7 @@
[numthreads(1, 1, 1)]
void f() {
S s = (S)0;
- result.Store(0u, asuint(s.data[asint(ubo[0u].x)]));
+ int v = asint(ubo[0u].x);
+ result.Store(0u, asuint(s.data[v]));
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.dxc.hlsl
index 23e8f6e..1180c04 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.dxc.hlsl
@@ -10,6 +10,7 @@
static S s = (S)0;
[numthreads(1, 1, 1)]
void f() {
- result.Store(0u, asuint(s.data[asint(ubo[0u].x)]));
+ int v = asint(ubo[0u].x);
+ result.Store(0u, asuint(s.data[v]));
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.fxc.hlsl
index 23e8f6e..1180c04 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.fxc.hlsl
@@ -10,6 +10,7 @@
static S s = (S)0;
[numthreads(1, 1, 1)]
void f() {
- result.Store(0u, asuint(s.data[asint(ubo[0u].x)]));
+ int v = asint(ubo[0u].x);
+ result.Store(0u, asuint(s.data[v]));
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.dxc.hlsl
index 1a11d1b..1f32ea6 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.dxc.hlsl
@@ -29,7 +29,8 @@
}
}
GroupMemoryBarrierWithGroupSync();
- result.Store(0u, asuint(s.data[asint(ubo[0u].x)]));
+ int v_2 = asint(ubo[0u].x);
+ result.Store(0u, asuint(s.data[v_2]));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.fxc.hlsl
index 1a11d1b..1f32ea6 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.ir.fxc.hlsl
@@ -29,7 +29,8 @@
}
}
GroupMemoryBarrierWithGroupSync();
- result.Store(0u, asuint(s.data[asint(ubo[0u].x)]));
+ int v_2 = asint(ubo[0u].x);
+ result.Store(0u, asuint(s.data[v_2]));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.dxc.hlsl
index 6156113..84880c4 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.dxc.hlsl
@@ -10,7 +10,8 @@
[numthreads(1, 1, 1)]
void f() {
S s = (S)0;
- s.data[asint(ubo[0u].x)] = int(1);
+ int v = asint(ubo[0u].x);
+ s.data[v] = int(1);
result.Store(0u, asuint(s.data[int(3)]));
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.dxc.hlsl
index fef4d79..6b5b381 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.dxc.hlsl
@@ -8,7 +8,8 @@
};
RWByteAddressBuffer result : register(u1);
void x(inout S p) {
- p.data[asint(ubo[0u].x)] = int(1);
+ int v = asint(ubo[0u].x);
+ p.data[v] = int(1);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.dxc.hlsl
index 1b53f80..dea5353 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.dxc.hlsl
@@ -10,7 +10,8 @@
static S s = (S)0;
[numthreads(1, 1, 1)]
void f() {
- s.data[asint(ubo[0u].x)] = int(1);
+ int v = asint(ubo[0u].x);
+ s.data[v] = int(1);
result.Store(0u, asuint(s.data[int(3)]));
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.dxc.hlsl
index be19cd2..97ba0a1 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.dxc.hlsl
@@ -9,7 +9,8 @@
RWByteAddressBuffer result : register(u1);
static S s = (S)0;
void x(inout S p) {
- p.data[asint(ubo[0u].x)] = int(1);
+ int v = asint(ubo[0u].x);
+ p.data[v] = int(1);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.dxc.hlsl
index 899621e..bf11112 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.dxc.hlsl
@@ -29,7 +29,8 @@
}
}
GroupMemoryBarrierWithGroupSync();
- s.data[asint(ubo[0u].x)] = int(1);
+ int v_2 = asint(ubo[0u].x);
+ s.data[v_2] = int(1);
result.Store(0u, asuint(s.data[int(3)]));
}
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.fxc.hlsl
index 899621e..bf11112 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.ir.fxc.hlsl
@@ -29,7 +29,8 @@
}
}
GroupMemoryBarrierWithGroupSync();
- s.data[asint(ubo[0u].x)] = int(1);
+ int v_2 = asint(ubo[0u].x);
+ s.data[v_2] = int(1);
result.Store(0u, asuint(s.data[int(3)]));
}
diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.dxc.hlsl
index 24e2323..d856260 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.dxc.hlsl
@@ -44,6 +44,8 @@
[numthreads(1, 1, 1)]
void main() {
Particle particle = v_4(0u);
- particle.position[sim[0u].x] = particle.position[sim[0u].x];
+ uint v_10 = sim[0u].x;
+ uint v_11 = sim[0u].x;
+ particle.position[v_10] = particle.position[v_11];
}
diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.fxc.hlsl
index ee10081..808f0db 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.fxc.hlsl
@@ -45,9 +45,10 @@
void main() {
Particle particle = v_4(0u);
uint v_10 = sim[0u].x;
+ uint v_11 = sim[0u].x;
float3 tint_array_copy[8] = particle.position;
- tint_array_copy[v_10] = particle.position[sim[0u].x];
- float3 v_11[8] = tint_array_copy;
- particle.position = v_11;
+ tint_array_copy[v_10] = particle.position[v_11];
+ float3 v_12[8] = tint_array_copy;
+ particle.position = v_12;
}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
index 189d0f5..8dd0639 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
@@ -5,6 +5,7 @@
[numthreads(1, 1, 1)]
void main() {
float2x4 m1 = float2x4((0.0f).xxxx, (0.0f).xxxx);
- m1[uniforms[0u].x][int(0)] = 1.0f;
+ uint v = uniforms[0u].x;
+ m1[v][int(0)] = 1.0f;
}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.dxc.hlsl
index 542318f..72f575a 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.dxc.hlsl
@@ -5,6 +5,7 @@
[numthreads(1, 1, 1)]
void main() {
float2x4 m1 = float2x4((0.0f).xxxx, (0.0f).xxxx);
- m1[uniforms[0u].x][uniforms[0u].y] = 1.0f;
+ uint v = uniforms[0u].x;
+ m1[v][uniforms[0u].y] = 1.0f;
}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.dxc.hlsl
index 19af7e8..d70b912 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.dxc.hlsl
@@ -5,6 +5,7 @@
[numthreads(1, 1, 1)]
void main() {
float2x4 m1 = float2x4((0.0f).xxxx, (0.0f).xxxx);
- m1[uniforms[0u].x] = (1.0f).xxxx;
+ uint v = uniforms[0u].x;
+ m1[v] = (1.0f).xxxx;
}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
index fbab03c..02ee6a5 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
@@ -5,6 +5,7 @@
static float2x4 m1 = float2x4((0.0f).xxxx, (0.0f).xxxx);
[numthreads(1, 1, 1)]
void main() {
- m1[uniforms[0u].x][int(0)] = 1.0f;
+ uint v = uniforms[0u].x;
+ m1[v][int(0)] = 1.0f;
}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.dxc.hlsl
index 8417610..dc9d126 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.dxc.hlsl
@@ -5,6 +5,7 @@
static float2x4 m1 = float2x4((0.0f).xxxx, (0.0f).xxxx);
[numthreads(1, 1, 1)]
void main() {
- m1[uniforms[0u].x][uniforms[0u].y] = 1.0f;
+ uint v = uniforms[0u].x;
+ m1[v][uniforms[0u].y] = 1.0f;
}
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.dxc.hlsl
index ee087bb..84f8202 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.dxc.hlsl
@@ -5,6 +5,7 @@
static float2x4 m1 = float2x4((0.0f).xxxx, (0.0f).xxxx);
[numthreads(1, 1, 1)]
void main() {
- m1[uniforms[0u].x] = (1.0f).xxxx;
+ uint v = uniforms[0u].x;
+ m1[v] = (1.0f).xxxx;
}
diff --git a/test/tint/bug/tint/1121.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1121.wgsl.expected.ir.dxc.hlsl
index 24d15ec..acc92d6 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.ir.dxc.hlsl
@@ -85,24 +85,29 @@
break;
}
float4 p = (0.0f).xxxx;
- if ((frustumPlanes[i].x > 0.0f)) {
+ uint v_15 = i;
+ if ((frustumPlanes[v_15].x > 0.0f)) {
p[0u] = boxMax.x;
} else {
p[0u] = boxMin.x;
}
- if ((frustumPlanes[i].y > 0.0f)) {
+ uint v_16 = i;
+ if ((frustumPlanes[v_16].y > 0.0f)) {
p[1u] = boxMax.y;
} else {
p[1u] = boxMin.y;
}
- if ((frustumPlanes[i].z > 0.0f)) {
+ uint v_17 = i;
+ if ((frustumPlanes[v_17].z > 0.0f)) {
p[2u] = boxMax.z;
} else {
p[2u] = boxMin.z;
}
p[3u] = 1.0f;
- float v_15 = dp;
- dp = (v_15 + min(0.0f, dot(p, frustumPlanes[i])));
+ float v_18 = dp;
+ float4 v_19 = p;
+ uint v_20 = i;
+ dp = (v_18 + min(0.0f, dot(v_19, frustumPlanes[v_20])));
{
i = (i + 1u);
}
@@ -111,31 +116,31 @@
}
if ((dp >= 0.0f)) {
uint tileId = uint((x + (y * TILE_COUNT_X)));
- bool v_16 = false;
+ bool v_21 = false;
if ((tileId < 0u)) {
- v_16 = true;
+ v_21 = true;
} else {
- v_16 = (tileId >= config[0u].y);
+ v_21 = (tileId >= config[0u].y);
}
- if (v_16) {
+ if (v_21) {
{
x = (x + int(1));
}
continue;
}
- uint v_17 = (uint(tileId) * 260u);
- uint v_18 = 0u;
- tileLightId.InterlockedAdd(uint(0u), 1u, v_18);
- uint offset = v_18;
+ uint v_22 = (uint(tileId) * 260u);
+ uint v_23 = 0u;
+ tileLightId.InterlockedAdd(uint(0u), 1u, v_23);
+ uint offset = v_23;
if ((offset >= config[1u].x)) {
{
x = (x + int(1));
}
continue;
}
- uint v_19 = offset;
- uint v_20 = (uint(tileId) * 260u);
- tileLightId.Store(((4u + v_20) + (uint(v_19) * 4u)), GlobalInvocationID[0u]);
+ uint v_24 = offset;
+ uint v_25 = (uint(tileId) * 260u);
+ tileLightId.Store(((4u + v_25) + (uint(v_24) * 4u)), GlobalInvocationID[0u]);
}
{
x = (x + int(1));
diff --git a/test/tint/bug/tint/1121.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1121.wgsl.expected.ir.fxc.hlsl
index 24d15ec..acc92d6 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.ir.fxc.hlsl
@@ -85,24 +85,29 @@
break;
}
float4 p = (0.0f).xxxx;
- if ((frustumPlanes[i].x > 0.0f)) {
+ uint v_15 = i;
+ if ((frustumPlanes[v_15].x > 0.0f)) {
p[0u] = boxMax.x;
} else {
p[0u] = boxMin.x;
}
- if ((frustumPlanes[i].y > 0.0f)) {
+ uint v_16 = i;
+ if ((frustumPlanes[v_16].y > 0.0f)) {
p[1u] = boxMax.y;
} else {
p[1u] = boxMin.y;
}
- if ((frustumPlanes[i].z > 0.0f)) {
+ uint v_17 = i;
+ if ((frustumPlanes[v_17].z > 0.0f)) {
p[2u] = boxMax.z;
} else {
p[2u] = boxMin.z;
}
p[3u] = 1.0f;
- float v_15 = dp;
- dp = (v_15 + min(0.0f, dot(p, frustumPlanes[i])));
+ float v_18 = dp;
+ float4 v_19 = p;
+ uint v_20 = i;
+ dp = (v_18 + min(0.0f, dot(v_19, frustumPlanes[v_20])));
{
i = (i + 1u);
}
@@ -111,31 +116,31 @@
}
if ((dp >= 0.0f)) {
uint tileId = uint((x + (y * TILE_COUNT_X)));
- bool v_16 = false;
+ bool v_21 = false;
if ((tileId < 0u)) {
- v_16 = true;
+ v_21 = true;
} else {
- v_16 = (tileId >= config[0u].y);
+ v_21 = (tileId >= config[0u].y);
}
- if (v_16) {
+ if (v_21) {
{
x = (x + int(1));
}
continue;
}
- uint v_17 = (uint(tileId) * 260u);
- uint v_18 = 0u;
- tileLightId.InterlockedAdd(uint(0u), 1u, v_18);
- uint offset = v_18;
+ uint v_22 = (uint(tileId) * 260u);
+ uint v_23 = 0u;
+ tileLightId.InterlockedAdd(uint(0u), 1u, v_23);
+ uint offset = v_23;
if ((offset >= config[1u].x)) {
{
x = (x + int(1));
}
continue;
}
- uint v_19 = offset;
- uint v_20 = (uint(tileId) * 260u);
- tileLightId.Store(((4u + v_20) + (uint(v_19) * 4u)), GlobalInvocationID[0u]);
+ uint v_24 = offset;
+ uint v_25 = (uint(tileId) * 260u);
+ tileLightId.Store(((4u + v_25) + (uint(v_24) * 4u)), GlobalInvocationID[0u]);
}
{
x = (x + int(1));
diff --git a/test/tint/bug/tint/1321.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1321.wgsl.expected.ir.dxc.hlsl
index 049e98f..5b0e8af 100644
--- a/test/tint/bug/tint/1321.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1321.wgsl.expected.ir.dxc.hlsl
@@ -6,9 +6,9 @@
void main() {
float arr[4] = (float[4])0;
{
- float a = arr[foo()];
+ int v = foo();
while(true) {
- float x = a;
+ float x = arr[v];
break;
}
}
diff --git a/test/tint/bug/tint/1321.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1321.wgsl.expected.ir.fxc.hlsl
index 036cde1..5b0e8af 100644
--- a/test/tint/bug/tint/1321.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1321.wgsl.expected.ir.fxc.hlsl
@@ -6,9 +6,9 @@
void main() {
float arr[4] = (float[4])0;
{
- float v = arr[foo()];
+ int v = foo();
while(true) {
- float x = v;
+ float x = arr[v];
break;
}
}
diff --git a/test/tint/bug/tint/1764.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1764.wgsl.expected.ir.dxc.hlsl
index b22dbe6..40aba4a 100644
--- a/test/tint/bug/tint/1764.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1764.wgsl.expected.ir.dxc.hlsl
@@ -21,8 +21,7 @@
}
}
GroupMemoryBarrierWithGroupSync();
- int p[246] = W;
- p[int(0)] = int(42);
+ W[int(0)] = int(42);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/tint/2059.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/2059.wgsl.expected.ir.dxc.hlsl
index 23c0b83..0fd28a0 100644
--- a/test/tint/bug/tint/2059.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/2059.wgsl.expected.ir.dxc.hlsl
@@ -228,10 +228,10 @@
} else {
break;
}
- float3 v_41 = m[c];
+ uint v_41 = c;
float v_42 = float(((c * 3u) + 1u));
float v_43 = float(((c * 3u) + 2u));
- v_41 = float3(v_42, v_43, float(((c * 3u) + 3u)));
+ m[v_41] = float3(v_42, v_43, float(((c * 3u) + 3u)));
{
c = (c + 1u);
}
diff --git a/test/tint/bug/tint/2059.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/2059.wgsl.expected.ir.fxc.hlsl
index 23c0b83..0fd28a0 100644
--- a/test/tint/bug/tint/2059.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/2059.wgsl.expected.ir.fxc.hlsl
@@ -228,10 +228,10 @@
} else {
break;
}
- float3 v_41 = m[c];
+ uint v_41 = c;
float v_42 = float(((c * 3u) + 1u));
float v_43 = float(((c * 3u) + 2u));
- v_41 = float3(v_42, v_43, float(((c * 3u) + 3u)));
+ m[v_41] = float3(v_42, v_43, float(((c * 3u) + 3u)));
{
c = (c + 1u);
}
diff --git a/test/tint/bug/tint/914.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/914.wgsl.expected.ir.dxc.hlsl
index 93d5cd5..2845d3d 100644
--- a/test/tint/bug/tint/914.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/914.wgsl.expected.ir.dxc.hlsl
@@ -92,7 +92,8 @@
} else {
break;
}
- acc[index] = 0.0f;
+ uint v_6 = index;
+ acc[v_6] = 0.0f;
{
index = (index + 1u);
}
@@ -155,8 +156,8 @@
}
uint inputRow = (tileRowB + innerRow);
uint inputCol = (tileCol + innerCol);
- float v_6 = mm_Bsub[innerCol][inputCol];
- v_6 = mm_readB(((t * 64u) + inputRow), (globalCol + innerCol));
+ uint v_7 = innerCol;
+ mm_Bsub[v_7][inputCol] = mm_readB(((t * 64u) + inputRow), (globalCol + innerCol));
{
innerCol = (innerCol + 1u);
}
@@ -184,7 +185,10 @@
} else {
break;
}
- BCached[inner] = mm_Bsub[k][(tileCol + inner)];
+ uint v_8 = inner;
+ uint v_9 = k;
+ uint v_10 = (tileCol + inner);
+ BCached[v_8] = mm_Bsub[v_9][v_10];
{
inner = (inner + 1u);
}
@@ -198,7 +202,9 @@
} else {
break;
}
- ACached = mm_Asub[(tileRow + innerRow)][k];
+ uint v_11 = (tileRow + innerRow);
+ uint v_12 = k;
+ ACached = mm_Asub[v_11][v_12];
{
uint innerCol = 0u;
while(true) {
@@ -207,7 +213,10 @@
break;
}
uint index = ((innerRow * 4u) + innerCol);
- acc[index] = (acc[index] + (ACached * BCached[innerCol]));
+ float v_13 = acc[index];
+ float v_14 = ACached;
+ uint v_15 = innerCol;
+ acc[index] = (v_13 + (v_14 * BCached[v_15]));
{
innerCol = (innerCol + 1u);
}
diff --git a/test/tint/bug/tint/914.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/914.wgsl.expected.ir.fxc.hlsl
index 93d5cd5..2845d3d 100644
--- a/test/tint/bug/tint/914.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/914.wgsl.expected.ir.fxc.hlsl
@@ -92,7 +92,8 @@
} else {
break;
}
- acc[index] = 0.0f;
+ uint v_6 = index;
+ acc[v_6] = 0.0f;
{
index = (index + 1u);
}
@@ -155,8 +156,8 @@
}
uint inputRow = (tileRowB + innerRow);
uint inputCol = (tileCol + innerCol);
- float v_6 = mm_Bsub[innerCol][inputCol];
- v_6 = mm_readB(((t * 64u) + inputRow), (globalCol + innerCol));
+ uint v_7 = innerCol;
+ mm_Bsub[v_7][inputCol] = mm_readB(((t * 64u) + inputRow), (globalCol + innerCol));
{
innerCol = (innerCol + 1u);
}
@@ -184,7 +185,10 @@
} else {
break;
}
- BCached[inner] = mm_Bsub[k][(tileCol + inner)];
+ uint v_8 = inner;
+ uint v_9 = k;
+ uint v_10 = (tileCol + inner);
+ BCached[v_8] = mm_Bsub[v_9][v_10];
{
inner = (inner + 1u);
}
@@ -198,7 +202,9 @@
} else {
break;
}
- ACached = mm_Asub[(tileRow + innerRow)][k];
+ uint v_11 = (tileRow + innerRow);
+ uint v_12 = k;
+ ACached = mm_Asub[v_11][v_12];
{
uint innerCol = 0u;
while(true) {
@@ -207,7 +213,10 @@
break;
}
uint index = ((innerRow * 4u) + innerCol);
- acc[index] = (acc[index] + (ACached * BCached[innerCol]));
+ float v_13 = acc[index];
+ float v_14 = ACached;
+ uint v_15 = innerCol;
+ acc[index] = (v_13 + (v_14 * BCached[v_15]));
{
innerCol = (innerCol + 1u);
}
diff --git a/test/tint/bug/tint/942.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/942.wgsl.expected.ir.dxc.hlsl
index 0bd8f81..d39696a 100644
--- a/test/tint/bug/tint/942.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/942.wgsl.expected.ir.dxc.hlsl
@@ -60,10 +60,11 @@
if ((flip[0u].x != 0u)) {
loadIndex = loadIndex.yx;
}
- float3 v_4 = tile[r][((4u * LocalInvocationID[0u]) + c)];
- float2 v_5 = (float2(loadIndex) + (0.25f).xx);
- float2 v_6 = (v_5 / float2(dims));
- v_4 = inputTex.SampleLevel(samp, v_6, float(0.0f)).xyz;
+ uint v_4 = r;
+ uint v_5 = ((4u * LocalInvocationID[0u]) + c);
+ float2 v_6 = (float2(loadIndex) + (0.25f).xx);
+ float2 v_7 = (v_6 / float2(dims));
+ tile[v_4][v_5] = inputTex.SampleLevel(samp, v_7, float(0.0f)).xyz;
{
c = (c + 1u);
}
@@ -96,19 +97,19 @@
writeIndex = writeIndex.yx;
}
uint center = ((4u * LocalInvocationID[0u]) + c);
- bool v_7 = false;
- if ((center >= filterOffset)) {
- v_7 = (center < (256u - filterOffset));
- } else {
- v_7 = false;
- }
bool v_8 = false;
- if (v_7) {
- v_8 = all((writeIndex < dims));
+ if ((center >= filterOffset)) {
+ v_8 = (center < (256u - filterOffset));
} else {
v_8 = false;
}
+ bool v_9 = false;
if (v_8) {
+ v_9 = all((writeIndex < dims));
+ } else {
+ v_9 = false;
+ }
+ if (v_9) {
float3 acc = (0.0f).xxx;
{
uint f = 0u;
@@ -118,17 +119,19 @@
break;
}
uint i = ((center + f) - filterOffset);
- float3 v_9 = acc;
- float v_10 = (1.0f / float(params[0u].x));
- acc = (v_9 + (v_10 * tile[r][i]));
+ float3 v_10 = acc;
+ float v_11 = (1.0f / float(params[0u].x));
+ uint v_12 = r;
+ uint v_13 = i;
+ acc = (v_10 + (v_11 * tile[v_12][v_13]));
{
f = (f + 1u);
}
continue;
}
}
- uint2 v_11 = writeIndex;
- outputTex[v_11] = float4(acc, 1.0f);
+ uint2 v_14 = writeIndex;
+ outputTex[v_14] = float4(acc, 1.0f);
}
{
c = (c + 1u);
diff --git a/test/tint/bug/tint/942.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/942.wgsl.expected.ir.fxc.hlsl
index 0bd8f81..d39696a 100644
--- a/test/tint/bug/tint/942.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/942.wgsl.expected.ir.fxc.hlsl
@@ -60,10 +60,11 @@
if ((flip[0u].x != 0u)) {
loadIndex = loadIndex.yx;
}
- float3 v_4 = tile[r][((4u * LocalInvocationID[0u]) + c)];
- float2 v_5 = (float2(loadIndex) + (0.25f).xx);
- float2 v_6 = (v_5 / float2(dims));
- v_4 = inputTex.SampleLevel(samp, v_6, float(0.0f)).xyz;
+ uint v_4 = r;
+ uint v_5 = ((4u * LocalInvocationID[0u]) + c);
+ float2 v_6 = (float2(loadIndex) + (0.25f).xx);
+ float2 v_7 = (v_6 / float2(dims));
+ tile[v_4][v_5] = inputTex.SampleLevel(samp, v_7, float(0.0f)).xyz;
{
c = (c + 1u);
}
@@ -96,19 +97,19 @@
writeIndex = writeIndex.yx;
}
uint center = ((4u * LocalInvocationID[0u]) + c);
- bool v_7 = false;
- if ((center >= filterOffset)) {
- v_7 = (center < (256u - filterOffset));
- } else {
- v_7 = false;
- }
bool v_8 = false;
- if (v_7) {
- v_8 = all((writeIndex < dims));
+ if ((center >= filterOffset)) {
+ v_8 = (center < (256u - filterOffset));
} else {
v_8 = false;
}
+ bool v_9 = false;
if (v_8) {
+ v_9 = all((writeIndex < dims));
+ } else {
+ v_9 = false;
+ }
+ if (v_9) {
float3 acc = (0.0f).xxx;
{
uint f = 0u;
@@ -118,17 +119,19 @@
break;
}
uint i = ((center + f) - filterOffset);
- float3 v_9 = acc;
- float v_10 = (1.0f / float(params[0u].x));
- acc = (v_9 + (v_10 * tile[r][i]));
+ float3 v_10 = acc;
+ float v_11 = (1.0f / float(params[0u].x));
+ uint v_12 = r;
+ uint v_13 = i;
+ acc = (v_10 + (v_11 * tile[v_12][v_13]));
{
f = (f + 1u);
}
continue;
}
}
- uint2 v_11 = writeIndex;
- outputTex[v_11] = float4(acc, 1.0f);
+ uint2 v_14 = writeIndex;
+ outputTex[v_14] = float4(acc, 1.0f);
}
{
c = (c + 1u);
diff --git a/test/tint/bug/tint/990.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/990.wgsl.expected.ir.dxc.hlsl
index 3f7a614..6814f11 100644
--- a/test/tint/bug/tint/990.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/990.wgsl.expected.ir.dxc.hlsl
@@ -2,7 +2,6 @@
void f() {
int i = int(0);
{
- int p = i;
while(true) {
if (false) {
} else {
diff --git a/test/tint/bug/tint/998.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/998.wgsl.expected.ir.dxc.hlsl
index 3f7c1d4..ea68142 100644
--- a/test/tint/bug/tint/998.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/998.wgsl.expected.ir.dxc.hlsl
@@ -10,6 +10,7 @@
static S s = (S)0;
[numthreads(1, 1, 1)]
void main() {
- s.data[constants[0u].x] = 0u;
+ uint v = constants[0u].x;
+ s.data[v] = 0u;
}
diff --git a/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.dxc.hlsl b/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.dxc.hlsl
index e6704b9..cba56b2 100644
--- a/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.dxc.hlsl
@@ -27,8 +27,9 @@
uint x_35 = idx;
uint v_1 = tint_div_u32(x_31, 2u);
uint v_2 = tint_mod_u32(x_33, 2u);
- uint v_3 = 0u;
- InterlockedExchange(wg[v_1][v_2][tint_mod_u32(x_35, 1u)], 0u, v_3);
+ uint v_3 = tint_mod_u32(x_35, 1u);
+ uint v_4 = 0u;
+ InterlockedExchange(wg[v_1][v_2][v_3], 0u, v_4);
{
idx = (idx + 1u);
}
@@ -36,8 +37,8 @@
}
}
GroupMemoryBarrierWithGroupSync();
- uint v_4 = 0u;
- InterlockedExchange(wg[int(2)][int(1)][int(0)], 1u, v_4);
+ uint v_5 = 0u;
+ InterlockedExchange(wg[int(2)][int(1)][int(0)], 1u, v_5);
}
void compute_main_1() {
@@ -47,17 +48,17 @@
void compute_main_inner_1(uint local_invocation_index_1_param) {
{
- uint v_5 = 0u;
- v_5 = local_invocation_index_1_param;
+ uint v_6 = 0u;
+ v_6 = local_invocation_index_1_param;
while(true) {
- uint v_6 = v_5;
- if ((v_6 >= 6u)) {
+ uint v_7 = v_6;
+ if ((v_7 >= 6u)) {
break;
}
- uint v_7 = 0u;
- InterlockedExchange(wg[(v_6 / 2u)][(v_6 % 2u)][0u], 0u, v_7);
+ uint v_8 = 0u;
+ InterlockedExchange(wg[(v_7 / 2u)][(v_7 % 2u)][0u], 0u, v_8);
{
- v_5 = (v_6 + 1u);
+ v_6 = (v_7 + 1u);
}
continue;
}
diff --git a/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.fxc.hlsl b/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.fxc.hlsl
index e6704b9..cba56b2 100644
--- a/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/atomicStore/array/aliased_arrays.spvasm.expected.ir.fxc.hlsl
@@ -27,8 +27,9 @@
uint x_35 = idx;
uint v_1 = tint_div_u32(x_31, 2u);
uint v_2 = tint_mod_u32(x_33, 2u);
- uint v_3 = 0u;
- InterlockedExchange(wg[v_1][v_2][tint_mod_u32(x_35, 1u)], 0u, v_3);
+ uint v_3 = tint_mod_u32(x_35, 1u);
+ uint v_4 = 0u;
+ InterlockedExchange(wg[v_1][v_2][v_3], 0u, v_4);
{
idx = (idx + 1u);
}
@@ -36,8 +37,8 @@
}
}
GroupMemoryBarrierWithGroupSync();
- uint v_4 = 0u;
- InterlockedExchange(wg[int(2)][int(1)][int(0)], 1u, v_4);
+ uint v_5 = 0u;
+ InterlockedExchange(wg[int(2)][int(1)][int(0)], 1u, v_5);
}
void compute_main_1() {
@@ -47,17 +48,17 @@
void compute_main_inner_1(uint local_invocation_index_1_param) {
{
- uint v_5 = 0u;
- v_5 = local_invocation_index_1_param;
+ uint v_6 = 0u;
+ v_6 = local_invocation_index_1_param;
while(true) {
- uint v_6 = v_5;
- if ((v_6 >= 6u)) {
+ uint v_7 = v_6;
+ if ((v_7 >= 6u)) {
break;
}
- uint v_7 = 0u;
- InterlockedExchange(wg[(v_6 / 2u)][(v_6 % 2u)][0u], 0u, v_7);
+ uint v_8 = 0u;
+ InterlockedExchange(wg[(v_7 / 2u)][(v_7 % 2u)][0u], 0u, v_8);
{
- v_5 = (v_6 + 1u);
+ v_6 = (v_7 + 1u);
}
continue;
}
diff --git a/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.dxc.hlsl b/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.dxc.hlsl
index e6704b9..cba56b2 100644
--- a/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.dxc.hlsl
@@ -27,8 +27,9 @@
uint x_35 = idx;
uint v_1 = tint_div_u32(x_31, 2u);
uint v_2 = tint_mod_u32(x_33, 2u);
- uint v_3 = 0u;
- InterlockedExchange(wg[v_1][v_2][tint_mod_u32(x_35, 1u)], 0u, v_3);
+ uint v_3 = tint_mod_u32(x_35, 1u);
+ uint v_4 = 0u;
+ InterlockedExchange(wg[v_1][v_2][v_3], 0u, v_4);
{
idx = (idx + 1u);
}
@@ -36,8 +37,8 @@
}
}
GroupMemoryBarrierWithGroupSync();
- uint v_4 = 0u;
- InterlockedExchange(wg[int(2)][int(1)][int(0)], 1u, v_4);
+ uint v_5 = 0u;
+ InterlockedExchange(wg[int(2)][int(1)][int(0)], 1u, v_5);
}
void compute_main_1() {
@@ -47,17 +48,17 @@
void compute_main_inner_1(uint local_invocation_index_1_param) {
{
- uint v_5 = 0u;
- v_5 = local_invocation_index_1_param;
+ uint v_6 = 0u;
+ v_6 = local_invocation_index_1_param;
while(true) {
- uint v_6 = v_5;
- if ((v_6 >= 6u)) {
+ uint v_7 = v_6;
+ if ((v_7 >= 6u)) {
break;
}
- uint v_7 = 0u;
- InterlockedExchange(wg[(v_6 / 2u)][(v_6 % 2u)][0u], 0u, v_7);
+ uint v_8 = 0u;
+ InterlockedExchange(wg[(v_7 / 2u)][(v_7 % 2u)][0u], 0u, v_8);
{
- v_5 = (v_6 + 1u);
+ v_6 = (v_7 + 1u);
}
continue;
}
diff --git a/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.fxc.hlsl b/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.fxc.hlsl
index e6704b9..cba56b2 100644
--- a/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/atomicStore/array/arrays.spvasm.expected.ir.fxc.hlsl
@@ -27,8 +27,9 @@
uint x_35 = idx;
uint v_1 = tint_div_u32(x_31, 2u);
uint v_2 = tint_mod_u32(x_33, 2u);
- uint v_3 = 0u;
- InterlockedExchange(wg[v_1][v_2][tint_mod_u32(x_35, 1u)], 0u, v_3);
+ uint v_3 = tint_mod_u32(x_35, 1u);
+ uint v_4 = 0u;
+ InterlockedExchange(wg[v_1][v_2][v_3], 0u, v_4);
{
idx = (idx + 1u);
}
@@ -36,8 +37,8 @@
}
}
GroupMemoryBarrierWithGroupSync();
- uint v_4 = 0u;
- InterlockedExchange(wg[int(2)][int(1)][int(0)], 1u, v_4);
+ uint v_5 = 0u;
+ InterlockedExchange(wg[int(2)][int(1)][int(0)], 1u, v_5);
}
void compute_main_1() {
@@ -47,17 +48,17 @@
void compute_main_inner_1(uint local_invocation_index_1_param) {
{
- uint v_5 = 0u;
- v_5 = local_invocation_index_1_param;
+ uint v_6 = 0u;
+ v_6 = local_invocation_index_1_param;
while(true) {
- uint v_6 = v_5;
- if ((v_6 >= 6u)) {
+ uint v_7 = v_6;
+ if ((v_7 >= 6u)) {
break;
}
- uint v_7 = 0u;
- InterlockedExchange(wg[(v_6 / 2u)][(v_6 % 2u)][0u], 0u, v_7);
+ uint v_8 = 0u;
+ InterlockedExchange(wg[(v_7 / 2u)][(v_7 % 2u)][0u], 0u, v_8);
{
- v_5 = (v_6 + 1u);
+ v_6 = (v_7 + 1u);
}
continue;
}
diff --git a/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.dxc.hlsl
index 103dd73..c4be0f5 100644
--- a/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.dxc.hlsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
struct S {
int x;
uint a;
@@ -14,16 +12,14 @@
groupshared S wg;
void compute_main_inner(uint tint_local_index) {
if ((tint_local_index == 0u)) {
- wg.x = 0;
+ wg.x = int(0);
uint v = 0u;
InterlockedExchange(wg.a, 0u, v);
wg.y = 0u;
}
GroupMemoryBarrierWithGroupSync();
- S p0 = wg;
- uint p1 = p0.a;
uint v_1 = 0u;
- InterlockedExchange(p1, 1u, v_1);
+ InterlockedExchange(wg.a, 1u, v_1);
}
[numthreads(1, 1, 1)]
@@ -31,21 +27,3 @@
compute_main_inner(inputs.tint_local_index);
}
-DXC validation failure:
-hlsl.hlsl:14:25: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
- if ((tint_local_index == 0u)) {
- ~~~~~~~~~~~~~~~~~^~~~~
-hlsl.hlsl:14:25: note: remove extraneous parentheses around the comparison to silence this warning
- if ((tint_local_index == 0u)) {
- ~ ^ ~
-hlsl.hlsl:14:25: note: use '=' to turn this equality comparison into an assignment
- if ((tint_local_index == 0u)) {
- ^~
- =
-error: cannot map resource to handle.
-hlsl.hlsl:24:3: error: Atomic operation targets must be groupshared, Node Record or UAV.
- InterlockedExchange(p1, 1u, v_1);
- ^
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.dxc.hlsl
index 3551188..d9c180e 100644
--- a/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.dxc.hlsl
@@ -2,7 +2,6 @@
[numthreads(1, 1, 1)]
void main() {
float3x3 m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
- float3 v = m[int(1)];
- v = (5.0f).xxx;
+ m[int(1)] = (5.0f).xxx;
}
diff --git a/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.dxc.hlsl
index f741046..45b0c55 100644
--- a/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.dxc.hlsl
@@ -2,7 +2,6 @@
[numthreads(1, 1, 1)]
void main() {
int i = int(123);
- int p = i;
- int u = (p + int(1));
+ int u = (i + int(1));
}
diff --git a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.dxc.hlsl
index a4a308c..904f880 100644
--- a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.dxc.hlsl
@@ -2,7 +2,6 @@
static int i = int(123);
[numthreads(1, 1, 1)]
void main() {
- int p = i;
- int u = (p + int(1));
+ int u = (i + int(1));
}
diff --git a/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.dxc.hlsl
index a8da9d7..2fadb57 100644
--- a/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -10,8 +10,7 @@
}
GroupMemoryBarrierWithGroupSync();
i = int(123);
- int p = i;
- int u = (p + int(1));
+ int u = (i + int(1));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.dxc.hlsl
index d10214c..9fa6205 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.dxc.hlsl
@@ -3,12 +3,13 @@
uint4 S[2];
};
float4 func(uint pointer_indices[1]) {
- return asfloat(S[((16u * uint(pointer_indices[0u])) / 16u)]);
+ uint v = ((16u * uint(pointer_indices[0u])) / 16u);
+ return asfloat(S[v]);
}
[numthreads(1, 1, 1)]
void main() {
- uint v[1] = (uint[1])0;
- float4 r = func(v);
+ uint v_1[1] = (uint[1])0;
+ float4 r = func(v_1);
}
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.fxc.hlsl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.fxc.hlsl
index d10214c..9fa6205 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.fxc.hlsl
@@ -3,12 +3,13 @@
uint4 S[2];
};
float4 func(uint pointer_indices[1]) {
- return asfloat(S[((16u * uint(pointer_indices[0u])) / 16u)]);
+ uint v = ((16u * uint(pointer_indices[0u])) / 16u);
+ return asfloat(S[v]);
}
[numthreads(1, 1, 1)]
void main() {
- uint v[1] = (uint[1])0;
- float4 r = func(v);
+ uint v_1[1] = (uint[1])0;
+ float4 r = func(v_1);
}
diff --git a/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.dxc.hlsl
index 080e0b2..20b825e 100644
--- a/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.dxc.hlsl
@@ -2,8 +2,7 @@
[numthreads(1, 1, 1)]
void main() {
int i = int(123);
- int p = i;
- p = int(123);
- p = int(123);
+ i = int(123);
+ i = int(123);
}
diff --git a/test/tint/ptr_sugar/array.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/array.wgsl.expected.ir.dxc.hlsl
index d9fbb8c..69bd634 100644
--- a/test/tint/ptr_sugar/array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/array.wgsl.expected.ir.dxc.hlsl
@@ -1,48 +1,44 @@
void deref_const() {
int a[10] = (int[10])0;
- int p[10] = a;
- int b = p[int(0)];
- p[int(0)] = int(42);
+ int b = a[int(0)];
+ a[int(0)] = int(42);
}
void no_deref_const() {
int a[10] = (int[10])0;
- int p[10] = a;
- int b = p[int(0)];
- p[int(0)] = int(42);
+ int b = a[int(0)];
+ a[int(0)] = int(42);
}
void deref_let() {
int a[10] = (int[10])0;
- int p[10] = a;
int i = int(0);
- int b = p[i];
- p[int(0)] = int(42);
+ int b = a[i];
+ a[int(0)] = int(42);
}
void no_deref_let() {
int a[10] = (int[10])0;
- int p[10] = a;
int i = int(0);
- int b = p[i];
- p[int(0)] = int(42);
+ int b = a[i];
+ a[int(0)] = int(42);
}
void deref_var() {
int a[10] = (int[10])0;
- int p[10] = a;
int i = int(0);
- int b = p[i];
- p[int(0)] = int(42);
+ int v = i;
+ int b = a[v];
+ a[int(0)] = int(42);
}
void no_deref_var() {
int a[10] = (int[10])0;
- int p[10] = a;
int i = int(0);
- int b = p[i];
- p[int(0)] = int(42);
+ int v_1 = i;
+ int b = a[v_1];
+ a[int(0)] = int(42);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/array.wgsl.expected.ir.fxc.hlsl b/test/tint/ptr_sugar/array.wgsl.expected.ir.fxc.hlsl
index 59e0faf..69bd634 100644
--- a/test/tint/ptr_sugar/array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/ptr_sugar/array.wgsl.expected.ir.fxc.hlsl
@@ -28,14 +28,16 @@
void deref_var() {
int a[10] = (int[10])0;
int i = int(0);
- int b = a[i];
+ int v = i;
+ int b = a[v];
a[int(0)] = int(42);
}
void no_deref_var() {
int a[10] = (int[10])0;
int i = int(0);
- int b = a[i];
+ int v_1 = i;
+ int b = a[v_1];
a[int(0)] = int(42);
}
diff --git a/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.dxc.hlsl
index cbde557..6b92cdf 100644
--- a/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.dxc.hlsl
@@ -11,30 +11,26 @@
void deref_modf() {
modf_result_f32 a = {0.5f, 1.0f};
- modf_result_f32 p = a;
- float fract = p.fract;
- float whole = p.whole;
+ float fract = a.fract;
+ float whole = a.whole;
}
void no_deref_modf() {
modf_result_f32 a = {0.5f, 1.0f};
- modf_result_f32 p = a;
- float fract = p.fract;
- float whole = p.whole;
+ float fract = a.fract;
+ float whole = a.whole;
}
void deref_frexp() {
frexp_result_f32 a = {0.75f, int(1)};
- frexp_result_f32 p = a;
- float fract = p.fract;
- int exp = p.exp;
+ float fract = a.fract;
+ int exp = a.exp;
}
void no_deref_frexp() {
frexp_result_f32 a = {0.75f, int(1)};
- frexp_result_f32 p = a;
- float fract = p.fract;
- int exp = p.exp;
+ float fract = a.fract;
+ int exp = a.exp;
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.dxc.hlsl
index d694332..7577f65 100644
--- a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.dxc.hlsl
@@ -1,26 +1,22 @@
void deref() {
int3 a = (int(0)).xxx;
- int3 p = a;
- p[int(0)] = (p.x + int(42));
+ a[int(0)] = (a.x + int(42));
}
void no_deref() {
int3 a = (int(0)).xxx;
- int3 p = a;
- p[int(0)] = (p.x + int(42));
+ a[int(0)] = (a.x + int(42));
}
void deref_inc() {
int3 a = (int(0)).xxx;
- int3 p = a;
- p[int(0)] = (p.x + int(1));
+ a[int(0)] = (a.x + int(1));
}
void no_deref_inc() {
int3 a = (int(0)).xxx;
- int3 p = a;
- p[int(0)] = (p.x + int(1));
+ a[int(0)] = (a.x + int(1));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.dxc.hlsl
index e34674c..3a99d9b 100644
--- a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.dxc.hlsl
@@ -1,14 +1,12 @@
void deref() {
int3 a = (int(0)).xxx;
- int3 p = a;
- p[0u] = (p.x + int(42));
+ a[0u] = (a.x + int(42));
}
void no_deref() {
int3 a = (int(0)).xxx;
- int3 p = a;
- p[0u] = (p.x + int(42));
+ a[0u] = (a.x + int(42));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/matrix.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/matrix.wgsl.expected.ir.dxc.hlsl
index 7f90e3e..fc5524e 100644
--- a/test/tint/ptr_sugar/matrix.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/matrix.wgsl.expected.ir.dxc.hlsl
@@ -1,16 +1,14 @@
void deref() {
float2x3 a = float2x3((0.0f).xxx, (0.0f).xxx);
- float2x3 p = a;
- float3 b = p[int(0)];
- p[int(0)] = float3(1.0f, 2.0f, 3.0f);
+ float3 b = a[int(0)];
+ a[int(0)] = float3(1.0f, 2.0f, 3.0f);
}
void no_deref() {
float2x3 a = float2x3((0.0f).xxx, (0.0f).xxx);
- float2x3 p = a;
- float3 b = p[int(0)];
- p[int(0)] = float3(1.0f, 2.0f, 3.0f);
+ float3 b = a[int(0)];
+ a[int(0)] = float3(1.0f, 2.0f, 3.0f);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/struct.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/struct.wgsl.expected.ir.dxc.hlsl
index fc4bea1..e62c4a5 100644
--- a/test/tint/ptr_sugar/struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/struct.wgsl.expected.ir.dxc.hlsl
@@ -5,16 +5,14 @@
void deref() {
S a = (S)0;
- S p = a;
- int b = p.x;
- p.x = int(42);
+ int b = a.x;
+ a.x = int(42);
}
void no_deref() {
S a = (S)0;
- S p = a;
- int b = p.x;
- p.x = int(42);
+ int b = a.x;
+ a.x = int(42);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.dxc.hlsl
index c7299e0..1eaa143 100644
--- a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.dxc.hlsl
@@ -1,48 +1,42 @@
void deref_const() {
int3 a = (int(0)).xxx;
- int3 p = a;
- int b = p.x;
- p[int(0)] = int(42);
+ int b = a.x;
+ a[int(0)] = int(42);
}
void no_deref_const() {
int3 a = (int(0)).xxx;
- int3 p = a;
- int b = p.x;
- p[int(0)] = int(42);
+ int b = a.x;
+ a[int(0)] = int(42);
}
void deref_let() {
int3 a = (int(0)).xxx;
- int3 p = a;
int i = int(0);
- int b = p[i];
- p[int(0)] = int(42);
+ int b = a[i];
+ a[int(0)] = int(42);
}
void no_deref_let() {
int3 a = (int(0)).xxx;
- int3 p = a;
int i = int(0);
- int b = p[i];
- p[int(0)] = int(42);
+ int b = a[i];
+ a[int(0)] = int(42);
}
void deref_var() {
int3 a = (int(0)).xxx;
- int3 p = a;
int i = int(0);
- int b = p[i];
- p[int(0)] = int(42);
+ int b = a[i];
+ a[int(0)] = int(42);
}
void no_deref_var() {
int3 a = (int(0)).xxx;
- int3 p = a;
int i = int(0);
- int b = p[i];
- p[int(0)] = int(42);
+ int b = a[i];
+ a[int(0)] = int(42);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.dxc.hlsl
index 9438c9e..637284e 100644
--- a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.dxc.hlsl
@@ -1,16 +1,14 @@
void deref() {
int3 a = (int(0)).xxx;
- int3 p = a;
- int b = p.x;
- p[0u] = int(42);
+ int b = a.x;
+ a[0u] = int(42);
}
void no_deref() {
int3 a = (int(0)).xxx;
- int3 p = a;
- int b = p.x;
- p[0u] = int(42);
+ int b = a.x;
+ a[0u] = int(42);
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.dxc.hlsl
index 04b0429..16f1fd2 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.dxc.hlsl
@@ -21,8 +21,9 @@
} else {
break;
}
- InnerS v_1 = v;
- s1.a1[uniforms[0u].x] = v_1;
+ uint v_1 = uniforms[0u].x;
+ InnerS v_2 = v;
+ s1.a1[v_1] = v_2;
{
i = (i + int(1));
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.dxc.hlsl
index f2e8647..1b8aefc 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.dxc.hlsl
@@ -23,8 +23,9 @@
}
i = (i + int(1));
{
- InnerS v_1 = v;
- s1.a1[uniforms[0u].x] = v_1;
+ uint v_1 = uniforms[0u].x;
+ InnerS v_2 = v;
+ s1.a1[v_1] = v_2;
}
continue;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.dxc.hlsl
index 22ae59f..4e2f45c 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.dxc.hlsl
@@ -16,8 +16,9 @@
OuterS s1 = (OuterS)0;
int i = int(0);
{
- InnerS v_1 = v;
- s1.a1[uniforms[0u].x] = v_1;
+ uint v_1 = uniforms[0u].x;
+ InnerS v_2 = v;
+ s1.a1[v_1] = v_2;
while(true) {
if ((i < int(4))) {
} else {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.dxc.hlsl
index 11c9231..52ff861 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.dxc.hlsl
@@ -25,7 +25,8 @@
InnerS v = (InnerS)0;
OuterS s = (OuterS)0;
uint v_1 = getNextIndex();
- InnerS v_2 = v;
- s.a1[v_1].a2[uniforms[0u].y] = v_2;
+ uint v_2 = uniforms[0u].y;
+ InnerS v_3 = v;
+ s.a1[v_1].a2[v_2] = v_3;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.dxc.hlsl
index 07174a1..29a037b 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,8 @@
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
- InnerS v_1 = v;
- s1.a1[uniforms[0u].x] = v_1;
+ uint v_1 = uniforms[0u].x;
+ InnerS v_2 = v;
+ s1.a1[v_1] = v_2;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.dxc.hlsl
index f4d3670..c608a6d 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,9 @@
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
- InnerS v_1 = v;
- s1.a1[uniforms[0u].x][uniforms[0u].y] = v_1;
+ uint v_1 = uniforms[0u].x;
+ uint v_2 = uniforms[0u].y;
+ InnerS v_3 = v;
+ s1.a1[v_1][v_2] = v_3;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.dxc.hlsl
index e51ac33..af87bd1 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.dxc.hlsl
@@ -18,7 +18,8 @@
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
- InnerS v_1 = v;
- s1.a1[uniforms[0u].x].s2 = v_1;
+ uint v_1 = uniforms[0u].x;
+ InnerS v_2 = v;
+ s1.a1[v_1].s2 = v_2;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.dxc.hlsl
index 1461abb..91951da 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.dxc.hlsl
@@ -18,7 +18,9 @@
void main() {
InnerS v = (InnerS)0;
OuterS s = (OuterS)0;
- InnerS v_1 = v;
- s.a1[uniforms[0u].x].a2[uniforms[0u].y] = v_1;
+ uint v_1 = uniforms[0u].x;
+ uint v_2 = uniforms[0u].y;
+ InnerS v_3 = v;
+ s.a1[v_1].a2[v_2] = v_3;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.dxc.hlsl
index 953df93..4b04a28 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.dxc.hlsl
@@ -9,7 +9,9 @@
[numthreads(1, 1, 1)]
void main() {
OuterS s1 = (OuterS)0;
- s1.m1[uniforms[0u].x] = (1.0f).xxxx;
- s1.m1[uniforms[0u].x][uniforms[0u].x] = 1.0f;
+ uint v = uniforms[0u].x;
+ s1.m1[v] = (1.0f).xxxx;
+ uint v_1 = uniforms[0u].x;
+ s1.m1[v_1][uniforms[0u].x] = 1.0f;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.dxc.hlsl
index ec3f8b2..c480ddd 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.dxc.hlsl
@@ -15,9 +15,11 @@
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
- InnerS v_1 = v;
- s1.a1[uniforms[0u].x] = v_1;
+ uint v_1 = uniforms[0u].x;
InnerS v_2 = v;
- s1.a2[uniforms[0u].x] = v_2;
+ s1.a1[v_1] = v_2;
+ uint v_3 = uniforms[0u].x;
+ InnerS v_4 = v;
+ s1.a2[v_3] = v_4;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.dxc.hlsl
index c57629c..dd6563d 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.dxc.hlsl
@@ -18,7 +18,8 @@
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
- InnerS v_1 = v;
- s1.s2.a[uniforms[0u].x] = v_1;
+ uint v_1 = uniforms[0u].x;
+ InnerS v_2 = v;
+ s1.s2.a[v_1] = v_2;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.dxc.hlsl
index 9341da6..c380d42 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,9 @@
void main() {
OuterS s1 = (OuterS)0;
float3 v = (0.0f).xxx;
- v[s1.a1[uniforms[0u].x]] = 1.0f;
- v[f(s1.a1[uniforms[0u].x])] = 1.0f;
+ uint v_1 = uniforms[0u].x;
+ v[s1.a1[v_1]] = 1.0f;
+ uint v_2 = uniforms[0u].x;
+ v[f(s1.a1[v_2])] = 1.0f;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.fxc.hlsl
index 9341da6..c380d42 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,9 @@
void main() {
OuterS s1 = (OuterS)0;
float3 v = (0.0f).xxx;
- v[s1.a1[uniforms[0u].x]] = 1.0f;
- v[f(s1.a1[uniforms[0u].x])] = 1.0f;
+ uint v_1 = uniforms[0u].x;
+ v[s1.a1[v_1]] = 1.0f;
+ uint v_2 = uniforms[0u].x;
+ v[f(s1.a1[v_2])] = 1.0f;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.dxc.hlsl
index aa66407..29a037b 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.ir.dxc.hlsl
@@ -14,8 +14,8 @@
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
- InnerS p = s1.a1[uniforms[0u].x];
- InnerS v_1 = v;
- p = v_1;
+ uint v_1 = uniforms[0u].x;
+ InnerS v_2 = v;
+ s1.a1[v_1] = v_2;
}
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.dxc.hlsl
index ce150e6..e988a2d 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.dxc.hlsl
@@ -12,8 +12,9 @@
};
void f(inout OuterS p) {
InnerS v = (InnerS)0;
- InnerS v_1 = v;
- p.a1[uniforms[0u].x] = v_1;
+ uint v_1 = uniforms[0u].x;
+ InnerS v_2 = v;
+ p.a1[v_1] = v_2;
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.dxc.hlsl
index f2db107..b99a5f0 100644
--- a/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.dxc.hlsl
@@ -16,10 +16,9 @@
void main() {
S x = (S)0;
- S p = x;
- int4 v = p.a[foo()];
+ int v = foo();
int v_1 = bar();
- v[v_1] = (v[v_1] + int(5));
+ x.a[v][v_1] = (x.a[v][v_1] + int(5));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.fxc.hlsl
index 162a84f..b99a5f0 100644
--- a/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.fxc.hlsl
@@ -16,9 +16,9 @@
void main() {
S x = (S)0;
- int4 v = x.a[foo()];
+ int v = foo();
int v_1 = bar();
- v[v_1] = (v[v_1] + int(5));
+ x.a[v][v_1] = (x.a[v][v_1] + int(5));
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.dxc.hlsl
index a997992..070b80d 100644
--- a/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.dxc.hlsl
@@ -19,16 +19,17 @@
void foo() {
float a[4] = (float[4])0;
{
- float v_1 = a[idx1()];
- v_1 = (v_1 * 2.0f);
+ int v_1 = idx1();
+ a[v_1] = (a[v_1] * 2.0f);
while(true) {
- if ((a[idx2()] < 10.0f)) {
+ int v_2 = idx2();
+ if ((a[v_2] < 10.0f)) {
} else {
break;
}
{
- float v_2 = a[idx3()];
- v_2 = (v_2 + 1.0f);
+ int v_3 = idx3();
+ a[v_3] = (a[v_3] + 1.0f);
}
continue;
}
diff --git a/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.fxc.hlsl
index a997992..070b80d 100644
--- a/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.fxc.hlsl
@@ -19,16 +19,17 @@
void foo() {
float a[4] = (float[4])0;
{
- float v_1 = a[idx1()];
- v_1 = (v_1 * 2.0f);
+ int v_1 = idx1();
+ a[v_1] = (a[v_1] * 2.0f);
while(true) {
- if ((a[idx2()] < 10.0f)) {
+ int v_2 = idx2();
+ if ((a[v_2] < 10.0f)) {
} else {
break;
}
{
- float v_2 = a[idx3()];
- v_2 = (v_2 + 1.0f);
+ int v_3 = idx3();
+ a[v_3] = (a[v_3] + 1.0f);
}
continue;
}
diff --git a/test/tint/types/function_scope_declarations.wgsl.expected.ir.dxc.hlsl b/test/tint/types/function_scope_declarations.wgsl.expected.ir.dxc.hlsl
index 2a8263d..3c4a8c9 100644
--- a/test/tint/types/function_scope_declarations.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/function_scope_declarations.wgsl.expected.ir.dxc.hlsl
@@ -25,8 +25,5 @@
float arr_let[4] = (float[4])0;
S struct_var = (S)0;
S struct_let = (S)0;
- float ptr_f32 = f32_var;
- float4 ptr_vec = v4f32_var;
- float ptr_arr[4] = arr_var;
}
diff --git a/test/tint/types/module_scope_vars_pointers.wgsl.expected.ir.dxc.hlsl b/test/tint/types/module_scope_vars_pointers.wgsl.expected.ir.dxc.hlsl
index 74ad4fb..eb76f21 100644
--- a/test/tint/types/module_scope_vars_pointers.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/module_scope_vars_pointers.wgsl.expected.ir.dxc.hlsl
@@ -10,10 +10,8 @@
w = 0.0f;
}
GroupMemoryBarrierWithGroupSync();
- float p_ptr = p;
- float w_ptr = w;
- float x = (p_ptr + w_ptr);
- p_ptr = x;
+ float x = (p + w);
+ p = x;
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.dxc.hlsl
index 41b6467..f8336f8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.dxc.hlsl
@@ -14,22 +14,22 @@
};
static float4 x_GLF_color = (0.0f).xxxx;
void main_1() {
- int idx = 0;
+ int idx = int(0);
float4x3 m43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
- int ll_1 = 0;
- int GLF_live6rows = 0;
- int z = 0;
- int ll_2 = 0;
- int ctr = 0;
+ int ll_1 = int(0);
+ int GLF_live6rows = int(0);
+ int z = int(0);
+ int ll_2 = int(0);
+ int ctr = int(0);
float4x3 tempm43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
- int ll_3 = 0;
- int c = 0;
- int d = 0;
+ int ll_3 = int(0);
+ int c = int(0);
+ int d = int(0);
float GLF_live6sums[9] = (float[9])0;
- idx = 0;
+ idx = int(0);
m43 = float4x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f), (0.0f).xxx);
- ll_1 = 0;
- GLF_live6rows = 2;
+ ll_1 = int(0);
+ GLF_live6rows = int(2);
{
while(true) {
int v = ll_1;
@@ -37,13 +37,13 @@
x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
break;
}
- ll_1 = (ll_1 + 1);
+ ll_1 = (ll_1 + int(1));
z = asint(x_9[0u].x);
- ll_2 = 0;
- ctr = 0;
+ ll_2 = int(0);
+ ctr = int(0);
{
while(true) {
- if ((ctr < 1)) {
+ if ((ctr < int(1))) {
} else {
break;
}
@@ -51,40 +51,42 @@
if ((v_1 >= asint(x_9[0u].x))) {
break;
}
- ll_2 = (ll_2 + 1);
+ ll_2 = (ll_2 + int(1));
tempm43 = m43;
- ll_3 = 0;
- c = 0;
+ ll_3 = int(0);
+ c = int(0);
{
while(true) {
- if ((1 < z)) {
+ if ((int(1) < z)) {
} else {
break;
}
- d = 0;
+ d = int(0);
int x_29 = c;
int x_30 = c;
int x_31 = c;
int x_32 = d;
int x_33 = d;
int x_34 = d;
- float3 v_2 = tempm43[((((x_29 >= 0) & (x_30 < 4))) ? (x_31) : (0))];
- v_2[((((x_32 >= 0) & (x_33 < 3))) ? (x_34) : (0))] = 1.0f;
+ int v_2 = ((((x_29 >= int(0)) & (x_30 < int(4)))) ? (x_31) : (int(0)));
+ tempm43[v_2][((((x_32 >= int(0)) & (x_33 < int(3)))) ? (x_34) : (int(0)))] = 1.0f;
{
- c = (c + 1);
+ c = (c + int(1));
}
continue;
}
}
- int x_117 = ((((idx >= 0) & (idx < 9))) ? (idx) : (0));
- GLF_live6sums[x_117] = (GLF_live6sums[x_117] + m43[ctr].y);
+ int x_117 = ((((idx >= int(0)) & (idx < int(9)))) ? (idx) : (int(0)));
+ float v_3 = GLF_live6sums[x_117];
+ int v_4 = ctr;
+ GLF_live6sums[x_117] = (v_3 + m43[v_4].y);
{
- ctr = (ctr + 1);
+ ctr = (ctr + int(1));
}
continue;
}
}
- idx = (idx + 1);
+ idx = (idx + int(1));
{
}
continue;
@@ -94,19 +96,19 @@
main_out main_inner() {
main_1();
- main_out v_3 = {x_GLF_color};
- return v_3;
+ main_out v_5 = {x_GLF_color};
+ return v_5;
}
main_outputs main() {
- main_out v_4 = main_inner();
- main_outputs v_5 = {v_4.x_GLF_color_1};
- return v_5;
+ main_out v_6 = main_inner();
+ main_outputs v_7 = {v_6.x_GLF_color_1};
+ return v_7;
}
DXC validation failure:
error: validation errors
-hlsl.hlsl:99: error: Loop must have break.
+hlsl.hlsl:101: error: Loop must have break.
Validation failed.
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..da28904
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -0,0 +1,115 @@
+SKIP: FAILED
+
+struct main_out {
+ float4 x_GLF_color_1;
+};
+
+struct main_outputs {
+ float4 main_out_x_GLF_color_1 : SV_Target0;
+};
+
+
+cbuffer cbuffer_x_9 : register(b0) {
+ uint4 x_9[1];
+};
+static float4 x_GLF_color = (0.0f).xxxx;
+void main_1() {
+ int idx = int(0);
+ float4x3 m43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
+ int ll_1 = int(0);
+ int GLF_live6rows = int(0);
+ int z = int(0);
+ int ll_2 = int(0);
+ int ctr = int(0);
+ float4x3 tempm43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
+ int ll_3 = int(0);
+ int c = int(0);
+ int d = int(0);
+ float GLF_live6sums[9] = (float[9])0;
+ idx = int(0);
+ m43 = float4x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f), (0.0f).xxx);
+ ll_1 = int(0);
+ GLF_live6rows = int(2);
+ {
+ while(true) {
+ int v = ll_1;
+ if ((v >= asint(x_9[0u].x))) {
+ x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+ break;
+ }
+ ll_1 = (ll_1 + int(1));
+ z = asint(x_9[0u].x);
+ ll_2 = int(0);
+ ctr = int(0);
+ {
+ while(true) {
+ if ((ctr < int(1))) {
+ } else {
+ break;
+ }
+ int v_1 = ll_2;
+ if ((v_1 >= asint(x_9[0u].x))) {
+ break;
+ }
+ ll_2 = (ll_2 + int(1));
+ tempm43 = m43;
+ ll_3 = int(0);
+ c = int(0);
+ {
+ while(true) {
+ if ((int(1) < z)) {
+ } else {
+ break;
+ }
+ d = int(0);
+ int x_29 = c;
+ int x_30 = c;
+ int x_31 = c;
+ int x_32 = d;
+ int x_33 = d;
+ int x_34 = d;
+ int v_2 = ((((x_29 >= int(0)) & (x_30 < int(4)))) ? (x_31) : (int(0)));
+ tempm43[v_2][((((x_32 >= int(0)) & (x_33 < int(3)))) ? (x_34) : (int(0)))] = 1.0f;
+ {
+ c = (c + int(1));
+ }
+ continue;
+ }
+ }
+ int x_117 = ((((idx >= int(0)) & (idx < int(9)))) ? (idx) : (int(0)));
+ float v_3 = GLF_live6sums[x_117];
+ int v_4 = ctr;
+ GLF_live6sums[x_117] = (v_3 + m43[v_4].y);
+ {
+ ctr = (ctr + int(1));
+ }
+ continue;
+ }
+ }
+ idx = (idx + int(1));
+ {
+ }
+ continue;
+ }
+ }
+}
+
+main_out main_inner() {
+ main_1();
+ main_out v_5 = {x_GLF_color};
+ return v_5;
+}
+
+main_outputs main() {
+ main_out v_6 = main_inner();
+ main_outputs v_7 = {v_6.x_GLF_color_1};
+ return v_7;
+}
+
+FXC validation failure:
+<scrubbed_path>(57,13-23): error X3511: forced to unroll loop, but unrolling failed.
+<scrubbed_path>(43,9-19): error X3511: forced to unroll loop, but unrolling failed.
+<scrubbed_path>(32,5-15): error X3511: forced to unroll loop, but unrolling failed.
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.dxc.hlsl
index a8d8977..59cf4c9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.dxc.hlsl
@@ -14,22 +14,22 @@
};
static float4 x_GLF_color = (0.0f).xxxx;
void main_1() {
- int idx = 0;
+ int idx = int(0);
float4x3 m43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
- int ll_1 = 0;
- int GLF_live6rows = 0;
- int z = 0;
- int ll_2 = 0;
- int ctr = 0;
+ int ll_1 = int(0);
+ int GLF_live6rows = int(0);
+ int z = int(0);
+ int ll_2 = int(0);
+ int ctr = int(0);
float4x3 tempm43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
- int ll_3 = 0;
- int c = 0;
- int d = 0;
+ int ll_3 = int(0);
+ int c = int(0);
+ int d = int(0);
float GLF_live6sums[9] = (float[9])0;
- idx = 0;
+ idx = int(0);
m43 = float4x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f), (0.0f).xxx);
- ll_1 = 0;
- GLF_live6rows = 2;
+ ll_1 = int(0);
+ GLF_live6rows = int(2);
{
while(true) {
int x_18 = ll_1;
@@ -39,15 +39,15 @@
break;
}
int x_20 = ll_1;
- ll_1 = (x_20 + 1);
+ ll_1 = (x_20 + int(1));
int x_22 = asint(x_9[0u].x);
z = x_22;
- ll_2 = 0;
- ctr = 0;
+ ll_2 = int(0);
+ ctr = int(0);
{
while(true) {
int x_23 = ctr;
- if ((x_23 < 1)) {
+ if ((x_23 < int(1))) {
} else {
break;
}
@@ -57,30 +57,30 @@
break;
}
int x_26 = ll_2;
- ll_2 = (x_26 + 1);
+ ll_2 = (x_26 + int(1));
float4x3 x_98 = m43;
tempm43 = x_98;
- ll_3 = 0;
- c = 0;
+ ll_3 = int(0);
+ c = int(0);
{
while(true) {
int x_28 = z;
- if ((1 < x_28)) {
+ if ((int(1) < x_28)) {
} else {
break;
}
- d = 0;
+ d = int(0);
int x_29 = c;
int x_30 = c;
int x_31 = c;
int x_32 = d;
int x_33 = d;
int x_34 = d;
- float3 v = tempm43[((((x_29 >= 0) & (x_30 < 4))) ? (x_31) : (0))];
- v[((((x_32 >= 0) & (x_33 < 3))) ? (x_34) : (0))] = 1.0f;
+ int v = ((((x_29 >= int(0)) & (x_30 < int(4)))) ? (x_31) : (int(0)));
+ tempm43[v][((((x_32 >= int(0)) & (x_33 < int(3)))) ? (x_34) : (int(0)))] = 1.0f;
{
int x_35 = c;
- c = (x_35 + 1);
+ c = (x_35 + int(1));
}
continue;
}
@@ -88,20 +88,20 @@
int x_37 = idx;
int x_38 = idx;
int x_39 = idx;
- int x_117 = ((((x_37 >= 0) & (x_38 < 9))) ? (x_39) : (0));
+ int x_117 = ((((x_37 >= int(0)) & (x_38 < int(9)))) ? (x_39) : (int(0)));
int x_40 = ctr;
float x_119 = m43[x_40].y;
float x_121 = GLF_live6sums[x_117];
GLF_live6sums[x_117] = (x_121 + x_119);
{
int x_41 = ctr;
- ctr = (x_41 + 1);
+ ctr = (x_41 + int(1));
}
continue;
}
}
int x_43 = idx;
- idx = (x_43 + 1);
+ idx = (x_43 + int(1));
{
}
continue;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..034fa8d
--- /dev/null
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,130 @@
+SKIP: FAILED
+
+struct main_out {
+ float4 x_GLF_color_1;
+};
+
+struct main_outputs {
+ float4 main_out_x_GLF_color_1 : SV_Target0;
+};
+
+
+cbuffer cbuffer_x_9 : register(b0) {
+ uint4 x_9[1];
+};
+static float4 x_GLF_color = (0.0f).xxxx;
+void main_1() {
+ int idx = int(0);
+ float4x3 m43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
+ int ll_1 = int(0);
+ int GLF_live6rows = int(0);
+ int z = int(0);
+ int ll_2 = int(0);
+ int ctr = int(0);
+ float4x3 tempm43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
+ int ll_3 = int(0);
+ int c = int(0);
+ int d = int(0);
+ float GLF_live6sums[9] = (float[9])0;
+ idx = int(0);
+ m43 = float4x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f), (0.0f).xxx);
+ ll_1 = int(0);
+ GLF_live6rows = int(2);
+ {
+ while(true) {
+ int x_18 = ll_1;
+ int x_19 = asint(x_9[0u].x);
+ if ((x_18 >= x_19)) {
+ x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+ break;
+ }
+ int x_20 = ll_1;
+ ll_1 = (x_20 + int(1));
+ int x_22 = asint(x_9[0u].x);
+ z = x_22;
+ ll_2 = int(0);
+ ctr = int(0);
+ {
+ while(true) {
+ int x_23 = ctr;
+ if ((x_23 < int(1))) {
+ } else {
+ break;
+ }
+ int x_24 = ll_2;
+ int x_25 = asint(x_9[0u].x);
+ if ((x_24 >= x_25)) {
+ break;
+ }
+ int x_26 = ll_2;
+ ll_2 = (x_26 + int(1));
+ float4x3 x_98 = m43;
+ tempm43 = x_98;
+ ll_3 = int(0);
+ c = int(0);
+ {
+ while(true) {
+ int x_28 = z;
+ if ((int(1) < x_28)) {
+ } else {
+ break;
+ }
+ d = int(0);
+ int x_29 = c;
+ int x_30 = c;
+ int x_31 = c;
+ int x_32 = d;
+ int x_33 = d;
+ int x_34 = d;
+ int v = ((((x_29 >= int(0)) & (x_30 < int(4)))) ? (x_31) : (int(0)));
+ tempm43[v][((((x_32 >= int(0)) & (x_33 < int(3)))) ? (x_34) : (int(0)))] = 1.0f;
+ {
+ int x_35 = c;
+ c = (x_35 + int(1));
+ }
+ continue;
+ }
+ }
+ int x_37 = idx;
+ int x_38 = idx;
+ int x_39 = idx;
+ int x_117 = ((((x_37 >= int(0)) & (x_38 < int(9)))) ? (x_39) : (int(0)));
+ int x_40 = ctr;
+ float x_119 = m43[x_40].y;
+ float x_121 = GLF_live6sums[x_117];
+ GLF_live6sums[x_117] = (x_121 + x_119);
+ {
+ int x_41 = ctr;
+ ctr = (x_41 + int(1));
+ }
+ continue;
+ }
+ }
+ int x_43 = idx;
+ idx = (x_43 + int(1));
+ {
+ }
+ continue;
+ }
+ }
+}
+
+main_out main_inner() {
+ main_1();
+ main_out v_1 = {x_GLF_color};
+ return v_1;
+}
+
+main_outputs main() {
+ main_out v_2 = main_inner();
+ main_outputs v_3 = {v_2.x_GLF_color_1};
+ return v_3;
+}
+
+FXC validation failure:
+<scrubbed_path>(64,13-23): error X3511: forced to unroll loop, but unrolling failed.
+<scrubbed_path>(46,9-19): error X3511: forced to unroll loop, but unrolling failed.
+<scrubbed_path>(32,5-15): error X3511: forced to unroll loop, but unrolling failed.
+
+
+tint executable returned error: exit status 1