blob: c1f1eb16ec0430e7c396fae5a318f9e351e42d9c [file] [log] [blame]
James Price7a47fa82021-05-26 15:41:02 +00001#include <metal_stdlib>
2
3using namespace metal;
Ben Clayton9dc42ad2024-02-05 18:01:33 +00004void tint_zero_workgroup_memory(uint local_idx, threadgroup int* const tint_symbol) {
Antonio Maioranof5abb822024-02-28 01:01:02 +00005 if ((local_idx < 1u)) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +00006 *(tint_symbol) = 0;
7 }
8 threadgroup_barrier(mem_flags::mem_threadgroup);
James Price7a47fa82021-05-26 15:41:02 +00009}
10
Ben Clayton9dc42ad2024-02-05 18:01:33 +000011void tint_zero_workgroup_memory_1(uint local_idx_1, threadgroup int* const tint_symbol_1) {
Antonio Maioranof5abb822024-02-28 01:01:02 +000012 if ((local_idx_1 < 1u)) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +000013 *(tint_symbol_1) = 0;
14 }
15 threadgroup_barrier(mem_flags::mem_threadgroup);
James Price7a47fa82021-05-26 15:41:02 +000016}
17
Ben Clayton9dc42ad2024-02-05 18:01:33 +000018void tint_zero_workgroup_memory_2(uint local_idx_2, threadgroup int* const tint_symbol_2, threadgroup int* const tint_symbol_3) {
Antonio Maioranof5abb822024-02-28 01:01:02 +000019 if ((local_idx_2 < 1u)) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +000020 *(tint_symbol_2) = 0;
21 *(tint_symbol_3) = 0;
22 }
23 threadgroup_barrier(mem_flags::mem_threadgroup);
24}
25
26void 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
30void 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
34void uses_a_and_b(threadgroup int* const tint_symbol_6, threadgroup int* const tint_symbol_7) {
35 *(tint_symbol_6) = *(tint_symbol_7);
James Price7a47fa82021-05-26 15:41:02 +000036}
37
38void no_uses() {
39}
40
Ben Clayton9dc42ad2024-02-05 18:01:33 +000041void 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 Price7a47fa82021-05-26 15:41:02 +000046 no_uses();
47}
48
Ben Clayton9dc42ad2024-02-05 18:01:33 +000049void 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 Pricea5d73ce2021-08-04 22:15:28 +000053}
54
Ben Clayton75db82c2021-06-18 22:44:31 +000055kernel void main1(uint local_invocation_index [[thread_index_in_threadgroup]]) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +000056 threadgroup int tint_symbol_11;
57 main1_inner(local_invocation_index, &(tint_symbol_11));
James Pricea5d73ce2021-08-04 22:15:28 +000058 return;
59}
60
Ben Clayton9dc42ad2024-02-05 18:01:33 +000061void 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 Price7a47fa82021-05-26 15:41:02 +000065}
66
Ben Clayton75db82c2021-06-18 22:44:31 +000067kernel void main2(uint local_invocation_index_1 [[thread_index_in_threadgroup]]) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +000068 threadgroup int tint_symbol_13;
69 main2_inner(local_invocation_index_1, &(tint_symbol_13));
James Price7a47fa82021-05-26 15:41:02 +000070 return;
71}
72
Ben Clayton9dc42ad2024-02-05 18:01:33 +000073void 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 Price7a47fa82021-05-26 15:41:02 +000076 no_uses();
James Pricea5d73ce2021-08-04 22:15:28 +000077}
78
79kernel void main3(uint local_invocation_index_2 [[thread_index_in_threadgroup]]) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +000080 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 Price7a47fa82021-05-26 15:41:02 +000083 return;
84}
85
86kernel void main4() {
87 no_uses();
88 return;
89}
90