blob: d0af2846bfa6590d83eb303db9e31920c3f47d78 [file] [log] [blame]
Ben Clayton9dc42ad2024-02-05 18:01:33 +00001groupshared int4 src_workgroup[4];
2
3void tint_zero_workgroup_memory(uint local_idx) {
4 {
5 for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
6 uint i = idx;
7 src_workgroup[i] = (0).xxxx;
8 }
9 }
10 GroupMemoryBarrierWithGroupSync();
11}
12
Ben Clayton4135ea52021-07-05 15:20:57 +000013struct S {
James Pricef6e5cc02022-01-20 22:11:07 +000014 int4 arr[4];
Ben Clayton5d2f34e2021-06-16 09:19:36 +000015};
16
James Pricef6e5cc02022-01-20 22:11:07 +000017static int4 src_private[4] = (int4[4])0;
Peng Huangc00ff7f2023-03-31 17:55:19 +000018cbuffer cbuffer_src_uniform : register(b0) {
Ben Clayton165512c2021-06-18 21:15:25 +000019 uint4 src_uniform[4];
20};
Peng Huangc00ff7f2023-03-31 17:55:19 +000021RWByteAddressBuffer src_storage : register(u1);
James Pricef6e5cc02022-01-20 22:11:07 +000022static int4 tint_symbol[4] = (int4[4])0;
Ben Clayton4135ea52021-07-05 15:20:57 +000023static int dst_nested[4][3][2] = (int[4][3][2])0;
Ben Clayton5d2f34e2021-06-16 09:19:36 +000024
James Pricef6e5cc02022-01-20 22:11:07 +000025typedef int4 ret_arr_ret[4];
Ben Clayton4135ea52021-07-05 15:20:57 +000026ret_arr_ret ret_arr() {
Antonio Maiorano144ebed2024-01-30 16:30:15 +000027 int4 tint_symbol_4[4] = (int4[4])0;
dan sinclaira01fd242023-12-05 20:23:42 +000028 return tint_symbol_4;
Ben Clayton8a96c782021-07-15 20:29:09 +000029}
30
Antonio Maiorano93baaae2022-03-15 15:35:13 +000031S ret_struct_arr() {
Antonio Maiorano144ebed2024-01-30 16:30:15 +000032 S tint_symbol_5 = (S)0;
dan sinclaira01fd242023-12-05 20:23:42 +000033 return tint_symbol_5;
Antonio Maiorano93baaae2022-03-15 15:35:13 +000034}
35
Ben Clayton1a1b5272023-02-24 17:16:55 +000036typedef int4 src_uniform_load_ret[4];
37src_uniform_load_ret src_uniform_load(uint offset) {
James Pricef6e5cc02022-01-20 22:11:07 +000038 int4 arr_1[4] = (int4[4])0;
Ben Clayton883fb632021-07-16 19:47:44 +000039 {
dan sinclaira01fd242023-12-05 20:23:42 +000040 for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
41 const uint scalar_offset = ((offset + (i_1 * 16u))) / 4;
42 arr_1[i_1] = asint(src_uniform[scalar_offset / 4]);
Ben Clayton883fb632021-07-16 19:47:44 +000043 }
44 }
45 return arr_1;
Ben Clayton8a96c782021-07-15 20:29:09 +000046}
47
Ben Clayton1a1b5272023-02-24 17:16:55 +000048typedef int4 src_storage_load_ret[4];
49src_storage_load_ret src_storage_load(uint offset) {
James Pricef6e5cc02022-01-20 22:11:07 +000050 int4 arr_2[4] = (int4[4])0;
Ben Clayton883fb632021-07-16 19:47:44 +000051 {
dan sinclaira01fd242023-12-05 20:23:42 +000052 for(uint i_2 = 0u; (i_2 < 4u); i_2 = (i_2 + 1u)) {
53 arr_2[i_2] = asint(src_storage.Load4((offset + (i_2 * 16u))));
Ben Clayton883fb632021-07-16 19:47:44 +000054 }
55 }
56 return arr_2;
Ben Clayton5d2f34e2021-06-16 09:19:36 +000057}
Ben Clayton9ef52ff2021-06-16 09:19:36 +000058
James Pricef6e5cc02022-01-20 22:11:07 +000059void foo(int4 src_param[4]) {
60 int4 src_function[4] = (int4[4])0;
Antonio Maiorano144ebed2024-01-30 16:30:15 +000061 int4 tint_symbol_6[4] = {(1).xxxx, (2).xxxx, (3).xxxx, (3).xxxx};
dan sinclaira01fd242023-12-05 20:23:42 +000062 tint_symbol = tint_symbol_6;
Ben Clayton5d2f34e2021-06-16 09:19:36 +000063 tint_symbol = src_param;
64 tint_symbol = ret_arr();
Antonio Maiorano144ebed2024-01-30 16:30:15 +000065 int4 src_let[4] = (int4[4])0;
Ben Clayton5d2f34e2021-06-16 09:19:36 +000066 tint_symbol = src_let;
67 tint_symbol = src_function;
68 tint_symbol = src_private;
69 tint_symbol = src_workgroup;
Antonio Maiorano144ebed2024-01-30 16:30:15 +000070 S tint_symbol_1 = ret_struct_arr();
Antonio Maiorano93baaae2022-03-15 15:35:13 +000071 tint_symbol = tint_symbol_1.arr;
Ben Clayton1a1b5272023-02-24 17:16:55 +000072 tint_symbol = src_uniform_load(0u);
73 tint_symbol = src_storage_load(0u);
Ben Clayton4135ea52021-07-05 15:20:57 +000074 int src_nested[4][3][2] = (int[4][3][2])0;
Ben Clayton5d2f34e2021-06-16 09:19:36 +000075 dst_nested = src_nested;
76}
dan sinclaira01fd242023-12-05 20:23:42 +000077
78struct tint_symbol_3 {
79 uint local_invocation_index : SV_GroupIndex;
80};
81
82void main_inner(uint local_invocation_index) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +000083 tint_zero_workgroup_memory(local_invocation_index);
Antonio Maiorano144ebed2024-01-30 16:30:15 +000084 int4 a[4] = (int4[4])0;
dan sinclaira01fd242023-12-05 20:23:42 +000085 foo(a);
86}
87
88[numthreads(1, 1, 1)]
89void main(tint_symbol_3 tint_symbol_2) {
90 main_inner(tint_symbol_2.local_invocation_index);
91 return;
92}