test: Add missing cases for UBO dynamic loads
Looks like a typo in the test cases I wrote.
Change-Id: Ieb4d8ce28827e47ab0baef7b1178395d97f90ace
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/69841
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl b/test/buffer/uniform/dynamic_index/read.wgsl
index 12cc0c0..f1612ea 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl
@@ -30,4 +30,6 @@
let g = s.arr[idx].g;
let h = s.arr[idx].h;
let i = s.arr[idx].i;
+ let j = s.arr[idx].j;
+ let k = s.arr[idx].k;
}
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl.expected.hlsl b/test/buffer/uniform/dynamic_index/read.wgsl.expected.hlsl
index 351446d..b110fb7 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl.expected.hlsl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl.expected.hlsl
@@ -12,26 +12,50 @@
return float2x3(asfloat(buffer[scalar_offset / 4].xyz), asfloat(buffer[scalar_offset_1 / 4].xyz));
}
+float3x2 tint_symbol_10(uint4 buffer[96], uint offset) {
+ const uint scalar_offset_2 = ((offset + 0u)) / 4;
+ uint4 ubo_load = buffer[scalar_offset_2 / 4];
+ const uint scalar_offset_3 = ((offset + 8u)) / 4;
+ uint4 ubo_load_1 = buffer[scalar_offset_3 / 4];
+ const uint scalar_offset_4 = ((offset + 16u)) / 4;
+ uint4 ubo_load_2 = buffer[scalar_offset_4 / 4];
+ return float3x2(asfloat(((scalar_offset_2 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_3 & 2) ? ubo_load_1.zw : ubo_load_1.xy)), asfloat(((scalar_offset_4 & 2) ? ubo_load_2.zw : ubo_load_2.xy)));
+}
+
+typedef int4 tint_symbol_12_ret[4];
+tint_symbol_12_ret tint_symbol_12(uint4 buffer[96], uint offset) {
+ int4 arr_1[4] = (int4[4])0;
+ {
+ for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
+ const uint scalar_offset_5 = ((offset + (i_1 * 16u))) / 4;
+ arr_1[i_1] = asint(buffer[scalar_offset_5 / 4]);
+ }
+ }
+ return arr_1;
+}
+
void main_inner(uint idx) {
- const uint scalar_offset_2 = ((192u * idx)) / 4;
- const int3 a = asint(s[scalar_offset_2 / 4].xyz);
- const uint scalar_offset_3 = (((192u * idx) + 12u)) / 4;
- const int b = asint(s[scalar_offset_3 / 4][scalar_offset_3 % 4]);
- const uint scalar_offset_4 = (((192u * idx) + 16u)) / 4;
- const uint3 c = s[scalar_offset_4 / 4].xyz;
- const uint scalar_offset_5 = (((192u * idx) + 28u)) / 4;
- const uint d = s[scalar_offset_5 / 4][scalar_offset_5 % 4];
- const uint scalar_offset_6 = (((192u * idx) + 32u)) / 4;
- const float3 e = asfloat(s[scalar_offset_6 / 4].xyz);
- const uint scalar_offset_7 = (((192u * idx) + 44u)) / 4;
- const float f = asfloat(s[scalar_offset_7 / 4][scalar_offset_7 % 4]);
- const uint scalar_offset_8 = (((192u * idx) + 48u)) / 4;
- uint4 ubo_load = s[scalar_offset_8 / 4];
- const int2 g = asint(((scalar_offset_8 & 2) ? ubo_load.zw : ubo_load.xy));
- const uint scalar_offset_9 = (((192u * idx) + 56u)) / 4;
- uint4 ubo_load_1 = s[scalar_offset_9 / 4];
- const int2 h = asint(((scalar_offset_9 & 2) ? ubo_load_1.zw : ubo_load_1.xy));
+ const uint scalar_offset_6 = ((192u * idx)) / 4;
+ const int3 a = asint(s[scalar_offset_6 / 4].xyz);
+ const uint scalar_offset_7 = (((192u * idx) + 12u)) / 4;
+ const int b = asint(s[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+ const uint scalar_offset_8 = (((192u * idx) + 16u)) / 4;
+ const uint3 c = s[scalar_offset_8 / 4].xyz;
+ const uint scalar_offset_9 = (((192u * idx) + 28u)) / 4;
+ const uint d = s[scalar_offset_9 / 4][scalar_offset_9 % 4];
+ const uint scalar_offset_10 = (((192u * idx) + 32u)) / 4;
+ const float3 e = asfloat(s[scalar_offset_10 / 4].xyz);
+ const uint scalar_offset_11 = (((192u * idx) + 44u)) / 4;
+ const float f = asfloat(s[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+ const uint scalar_offset_12 = (((192u * idx) + 48u)) / 4;
+ uint4 ubo_load_3 = s[scalar_offset_12 / 4];
+ const int2 g = asint(((scalar_offset_12 & 2) ? ubo_load_3.zw : ubo_load_3.xy));
+ const uint scalar_offset_13 = (((192u * idx) + 56u)) / 4;
+ uint4 ubo_load_4 = s[scalar_offset_13 / 4];
+ const int2 h = asint(((scalar_offset_13 & 2) ? ubo_load_4.zw : ubo_load_4.xy));
const float2x3 i = tint_symbol_9(s, ((192u * idx) + 64u));
+ const float3x2 j = tint_symbol_10(s, ((192u * idx) + 96u));
+ const int4 k[4] = tint_symbol_12(s, ((192u * idx) + 128u));
}
[numthreads(1, 1, 1)]
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl.expected.msl b/test/buffer/uniform/dynamic_index/read.wgsl.expected.msl
index 16e6ca2..0b2cafe 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl.expected.msl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl.expected.msl
@@ -46,6 +46,8 @@
int2 const g = (*(tint_symbol_1)).arr.arr[idx].g;
int2 const h = (*(tint_symbol_1)).arr.arr[idx].h;
float2x3 const i = (*(tint_symbol_1)).arr.arr[idx].i;
+ float3x2 const j = (*(tint_symbol_1)).arr.arr[idx].j;
+ tint_array_wrapper const k = (*(tint_symbol_1)).arr.arr[idx].k;
}
kernel void tint_symbol(const constant S* tint_symbol_2 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl.expected.spvasm b/test/buffer/uniform/dynamic_index/read.wgsl.expected.spvasm
index e00a927..9f34e03 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl.expected.spvasm
+++ b/test/buffer/uniform/dynamic_index/read.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 65
+; Bound: 73
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -87,7 +87,11 @@
%_ptr_Uniform_v2int = OpTypePointer Uniform %v2int
%uint_7 = OpConstant %uint 7
%_ptr_Uniform_mat2v3float = OpTypePointer Uniform %mat2v3float
- %60 = OpTypeFunction %void
+ %uint_9 = OpConstant %uint 9
+%_ptr_Uniform_mat3v2float = OpTypePointer Uniform %mat3v2float
+ %uint_10 = OpConstant %uint 10
+%_ptr_Uniform__arr_v4int_uint_4 = OpTypePointer Uniform %_arr_v4int_uint_4
+ %68 = OpTypeFunction %void
%main_inner = OpFunction %void None %22
%idx = OpFunctionParameter %uint
%26 = OpLabel
@@ -109,11 +113,15 @@
%56 = OpLoad %v2int %55
%58 = OpAccessChain %_ptr_Uniform_mat2v3float %s %uint_0 %idx %uint_8
%59 = OpLoad %mat2v3float %58
+ %62 = OpAccessChain %_ptr_Uniform_mat3v2float %s %uint_0 %idx %uint_9
+ %63 = OpLoad %mat3v2float %62
+ %66 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %s %uint_0 %idx %uint_10
+ %67 = OpLoad %_arr_v4int_uint_4 %66
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %60
- %62 = OpLabel
- %64 = OpLoad %uint %idx_1
- %63 = OpFunctionCall %void %main_inner %64
+ %main = OpFunction %void None %68
+ %70 = OpLabel
+ %72 = OpLoad %uint %idx_1
+ %71 = OpFunctionCall %void %main_inner %72
OpReturn
OpFunctionEnd
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl b/test/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
index 7377f9e..017eb39 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
@@ -32,4 +32,6 @@
let g = s.arr[idx].g;
let h = s.arr[idx].h;
let i = s.arr[idx].i;
+ let j = s.arr[idx].j;
+ let k = s.arr[idx].k;
}