blob: b564c9c8f5134e46b18cde655db7d23a9dbd1a17 [file] [log] [blame]
Antonio Maiorano268d7b82022-06-24 22:28:23 +00001struct S0_atomic {
2 int x;
3 uint a;
4 int y;
5 int z;
6};
7struct S1_atomic {
8 int x;
9 S0_atomic a;
10 int y;
11 int z;
12};
13struct S2_atomic {
14 int x;
15 int y;
16 int z;
17 S1_atomic a;
18};
19
20static uint local_invocation_index_1 = 0u;
21groupshared S2_atomic wg;
22
Ben Clayton4d3ff972023-02-21 17:33:54 +000023void compute_main_inner(uint local_invocation_index_2) {
Antonio Maiorano268d7b82022-06-24 22:28:23 +000024 wg.x = 0;
25 wg.y = 0;
26 wg.z = 0;
27 wg.a.x = 0;
28 wg.a.a.x = 0;
29 uint atomic_result = 0u;
30 InterlockedExchange(wg.a.a.a, 0u, atomic_result);
31 wg.a.a.y = 0;
32 wg.a.a.z = 0;
33 wg.a.y = 0;
34 wg.a.z = 0;
35 GroupMemoryBarrierWithGroupSync();
36 uint atomic_result_1 = 0u;
37 InterlockedExchange(wg.a.a.a, 1u, atomic_result_1);
38 return;
39}
40
41void compute_main_1() {
Antonio Maioranoe14a27b2022-09-19 14:05:21 +000042 const uint x_44 = local_invocation_index_1;
43 compute_main_inner(x_44);
Antonio Maiorano268d7b82022-06-24 22:28:23 +000044 return;
45}
46
47struct tint_symbol_1 {
48 uint local_invocation_index_1_param : SV_GroupIndex;
49};
50
51void compute_main_inner_1(uint local_invocation_index_1_param) {
52 {
53 wg.x = 0;
54 wg.y = 0;
55 wg.z = 0;
56 wg.a.x = 0;
57 wg.a.a.x = 0;
58 uint atomic_result_2 = 0u;
59 InterlockedExchange(wg.a.a.a, 0u, atomic_result_2);
60 wg.a.a.y = 0;
61 wg.a.a.z = 0;
62 wg.a.y = 0;
63 wg.a.z = 0;
64 }
65 GroupMemoryBarrierWithGroupSync();
66 local_invocation_index_1 = local_invocation_index_1_param;
67 compute_main_1();
68}
69
70[numthreads(1, 1, 1)]
71void compute_main(tint_symbol_1 tint_symbol) {
72 compute_main_inner_1(tint_symbol.local_invocation_index_1_param);
73 return;
74}