James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 1 | #include <metal_stdlib> |
| 2 | |
| 3 | using namespace metal; |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 4 | void tint_zero_workgroup_memory(uint local_idx, threadgroup int* const tint_symbol) { |
Antonio Maiorano | f5abb82 | 2024-02-28 01:01:02 +0000 | [diff] [blame] | 5 | if ((local_idx < 1u)) { |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 6 | *(tint_symbol) = 0; |
| 7 | } |
| 8 | threadgroup_barrier(mem_flags::mem_threadgroup); |
James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 9 | } |
| 10 | |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 11 | void tint_zero_workgroup_memory_1(uint local_idx_1, threadgroup int* const tint_symbol_1) { |
Antonio Maiorano | f5abb82 | 2024-02-28 01:01:02 +0000 | [diff] [blame] | 12 | if ((local_idx_1 < 1u)) { |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 13 | *(tint_symbol_1) = 0; |
| 14 | } |
| 15 | threadgroup_barrier(mem_flags::mem_threadgroup); |
James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 16 | } |
| 17 | |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 18 | void tint_zero_workgroup_memory_2(uint local_idx_2, threadgroup int* const tint_symbol_2, threadgroup int* const tint_symbol_3) { |
Antonio Maiorano | f5abb82 | 2024-02-28 01:01:02 +0000 | [diff] [blame] | 19 | if ((local_idx_2 < 1u)) { |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 20 | *(tint_symbol_2) = 0; |
| 21 | *(tint_symbol_3) = 0; |
| 22 | } |
| 23 | threadgroup_barrier(mem_flags::mem_threadgroup); |
| 24 | } |
| 25 | |
| 26 | void uses_a(threadgroup int* const tint_symbol_4) { |
| 27 | *(tint_symbol_4) = as_type<int>((as_type<uint>(*(tint_symbol_4)) + as_type<uint>(1))); |
| 28 | } |
| 29 | |
| 30 | void uses_b(threadgroup int* const tint_symbol_5) { |
| 31 | *(tint_symbol_5) = as_type<int>((as_type<uint>(*(tint_symbol_5)) * as_type<uint>(2))); |
| 32 | } |
| 33 | |
| 34 | void uses_a_and_b(threadgroup int* const tint_symbol_6, threadgroup int* const tint_symbol_7) { |
| 35 | *(tint_symbol_6) = *(tint_symbol_7); |
James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 36 | } |
| 37 | |
| 38 | void no_uses() { |
| 39 | } |
| 40 | |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 41 | void outer(threadgroup int* const tint_symbol_8, threadgroup int* const tint_symbol_9) { |
| 42 | *(tint_symbol_8) = 0; |
| 43 | uses_a(tint_symbol_8); |
| 44 | uses_a_and_b(tint_symbol_9, tint_symbol_8); |
| 45 | uses_b(tint_symbol_9); |
James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 46 | no_uses(); |
| 47 | } |
| 48 | |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 49 | void main1_inner(uint local_invocation_index, threadgroup int* const tint_symbol_10) { |
| 50 | tint_zero_workgroup_memory(local_invocation_index, tint_symbol_10); |
| 51 | *(tint_symbol_10) = 42; |
| 52 | uses_a(tint_symbol_10); |
James Price | a5d73ce | 2021-08-04 22:15:28 +0000 | [diff] [blame] | 53 | } |
| 54 | |
Ben Clayton | 75db82c | 2021-06-18 22:44:31 +0000 | [diff] [blame] | 55 | kernel void main1(uint local_invocation_index [[thread_index_in_threadgroup]]) { |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 56 | threadgroup int tint_symbol_11; |
| 57 | main1_inner(local_invocation_index, &(tint_symbol_11)); |
James Price | a5d73ce | 2021-08-04 22:15:28 +0000 | [diff] [blame] | 58 | return; |
| 59 | } |
| 60 | |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 61 | void main2_inner(uint local_invocation_index_1, threadgroup int* const tint_symbol_12) { |
| 62 | tint_zero_workgroup_memory_1(local_invocation_index_1, tint_symbol_12); |
| 63 | *(tint_symbol_12) = 7; |
| 64 | uses_b(tint_symbol_12); |
James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 65 | } |
| 66 | |
Ben Clayton | 75db82c | 2021-06-18 22:44:31 +0000 | [diff] [blame] | 67 | kernel void main2(uint local_invocation_index_1 [[thread_index_in_threadgroup]]) { |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 68 | threadgroup int tint_symbol_13; |
| 69 | main2_inner(local_invocation_index_1, &(tint_symbol_13)); |
James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 70 | return; |
| 71 | } |
| 72 | |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 73 | void main3_inner(uint local_invocation_index_2, threadgroup int* const tint_symbol_14, threadgroup int* const tint_symbol_15) { |
| 74 | tint_zero_workgroup_memory_2(local_invocation_index_2, tint_symbol_14, tint_symbol_15); |
| 75 | outer(tint_symbol_14, tint_symbol_15); |
James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 76 | no_uses(); |
James Price | a5d73ce | 2021-08-04 22:15:28 +0000 | [diff] [blame] | 77 | } |
| 78 | |
| 79 | kernel void main3(uint local_invocation_index_2 [[thread_index_in_threadgroup]]) { |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 80 | threadgroup int tint_symbol_16; |
| 81 | threadgroup int tint_symbol_17; |
| 82 | main3_inner(local_invocation_index_2, &(tint_symbol_16), &(tint_symbol_17)); |
James Price | 7a47fa8 | 2021-05-26 15:41:02 +0000 | [diff] [blame] | 83 | return; |
| 84 | } |
| 85 | |
| 86 | kernel void main4() { |
| 87 | no_uses(); |
| 88 | return; |
| 89 | } |
| 90 | |