| #include <metal_stdlib> |
| |
| using namespace metal; |
| void uses_a(threadgroup int* const tint_symbol) { |
| *(tint_symbol) = as_type<int>((as_type<uint>(*(tint_symbol)) + as_type<uint>(1))); |
| } |
| |
| void uses_b(threadgroup int* const tint_symbol_1) { |
| *(tint_symbol_1) = as_type<int>((as_type<uint>(*(tint_symbol_1)) * as_type<uint>(2))); |
| } |
| |
| void uses_a_and_b(threadgroup int* const tint_symbol_2, threadgroup int* const tint_symbol_3) { |
| *(tint_symbol_2) = *(tint_symbol_3); |
| } |
| |
| void no_uses() { |
| } |
| |
| void outer(threadgroup int* const tint_symbol_4, threadgroup int* const tint_symbol_5) { |
| *(tint_symbol_4) = 0; |
| uses_a(tint_symbol_4); |
| uses_a_and_b(tint_symbol_5, tint_symbol_4); |
| uses_b(tint_symbol_5); |
| no_uses(); |
| } |
| |
| void main1_inner(uint local_invocation_index, threadgroup int* const tint_symbol_6) { |
| { |
| *(tint_symbol_6) = 0; |
| } |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| *(tint_symbol_6) = 42; |
| uses_a(tint_symbol_6); |
| } |
| |
| kernel void main1(uint local_invocation_index [[thread_index_in_threadgroup]]) { |
| threadgroup int tint_symbol_7; |
| main1_inner(local_invocation_index, &(tint_symbol_7)); |
| return; |
| } |
| |
| void main2_inner(uint local_invocation_index_1, threadgroup int* const tint_symbol_8) { |
| { |
| *(tint_symbol_8) = 0; |
| } |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| *(tint_symbol_8) = 7; |
| uses_b(tint_symbol_8); |
| } |
| |
| kernel void main2(uint local_invocation_index_1 [[thread_index_in_threadgroup]]) { |
| threadgroup int tint_symbol_9; |
| main2_inner(local_invocation_index_1, &(tint_symbol_9)); |
| return; |
| } |
| |
| void main3_inner(uint local_invocation_index_2, threadgroup int* const tint_symbol_10, threadgroup int* const tint_symbol_11) { |
| { |
| *(tint_symbol_10) = 0; |
| *(tint_symbol_11) = 0; |
| } |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| outer(tint_symbol_10, tint_symbol_11); |
| no_uses(); |
| } |
| |
| kernel void main3(uint local_invocation_index_2 [[thread_index_in_threadgroup]]) { |
| threadgroup int tint_symbol_12; |
| threadgroup int tint_symbol_13; |
| main3_inner(local_invocation_index_2, &(tint_symbol_12), &(tint_symbol_13)); |
| return; |
| } |
| |
| kernel void main4() { |
| no_uses(); |
| return; |
| } |
| |