dan sinclair | 8f1d276 | 2024-07-31 02:35:40 +0000 | [diff] [blame] | 1 | struct S_atomic { |
| 2 | int x; |
| 3 | uint a; |
| 4 | uint y; |
| 5 | }; |
dan sinclair | 6931379 | 2024-06-13 20:35:21 +0000 | [diff] [blame] | 6 | |
dan sinclair | 8f1d276 | 2024-07-31 02:35:40 +0000 | [diff] [blame] | 7 | struct compute_main_inputs { |
| 8 | uint local_invocation_index_1_param : SV_GroupIndex; |
| 9 | }; |
| 10 | |
| 11 | |
| 12 | static uint local_invocation_index_1 = 0u; |
| 13 | groupshared S_atomic wg; |
| 14 | void compute_main_inner(uint local_invocation_index_2) { |
Antonio Maiorano | d032c62 | 2024-09-19 18:20:54 +0000 | [diff] [blame] | 15 | wg.x = int(0); |
dan sinclair | 8f1d276 | 2024-07-31 02:35:40 +0000 | [diff] [blame] | 16 | uint v = 0u; |
| 17 | InterlockedExchange(wg.a, 0u, v); |
| 18 | wg.y = 0u; |
| 19 | GroupMemoryBarrierWithGroupSync(); |
| 20 | uint v_1 = 0u; |
| 21 | InterlockedExchange(wg.a, 1u, v_1); |
| 22 | } |
| 23 | |
| 24 | void compute_main_1() { |
| 25 | uint x_35 = local_invocation_index_1; |
| 26 | compute_main_inner(x_35); |
| 27 | } |
| 28 | |
| 29 | void compute_main_inner_1(uint local_invocation_index_1_param) { |
Peter McNeeley | 1d27435 | 2024-11-21 19:45:21 +0000 | [diff] [blame^] | 30 | if ((local_invocation_index_1_param < 1u)) { |
Antonio Maiorano | d032c62 | 2024-09-19 18:20:54 +0000 | [diff] [blame] | 31 | wg.x = int(0); |
dan sinclair | 8f1d276 | 2024-07-31 02:35:40 +0000 | [diff] [blame] | 32 | uint v_2 = 0u; |
| 33 | InterlockedExchange(wg.a, 0u, v_2); |
| 34 | wg.y = 0u; |
| 35 | } |
| 36 | GroupMemoryBarrierWithGroupSync(); |
| 37 | local_invocation_index_1 = local_invocation_index_1_param; |
| 38 | compute_main_1(); |
| 39 | } |
| 40 | |
| 41 | [numthreads(1, 1, 1)] |
| 42 | void compute_main(compute_main_inputs inputs) { |
| 43 | compute_main_inner_1(inputs.local_invocation_index_1_param); |
| 44 | } |
| 45 | |