blob: 2d8fe86a0c067d6fc4d11bb25d913aa55fabdfa2 [file] [log] [blame]
dan sinclairf1f381a2023-11-22 09:44:15 +00001SKIP: FAILED
2
James Pricea30f8dd2024-05-10 14:31:43 +00003#include <metal_stdlib>
4using namespace metal;
5
6threadgroup int a;
7threadgroup int b;
8threadgroup int c;
9void uses_a() {
10 a = (a + 1);
11}
12void uses_b() {
13 b = (b * 2);
14}
15void uses_a_and_b() {
16 b = a;
17}
18void no_uses() {
19}
20void outer() {
21 a = 0;
22 uses_a();
23 uses_a_and_b();
24 uses_b();
25 no_uses();
26}
27kernel void main1(uint tint_local_index [[thread_index_in_threadgroup]]) {
28 if ((tint_local_index == 0u)) {
29 a = 0;
30 }
31 threadgroup_barrier(mem_flags::mem_threadgroup);
32 a = 42;
33 uses_a();
34}
35kernel void main2(uint tint_local_index [[thread_index_in_threadgroup]]) {
36 if ((tint_local_index == 0u)) {
37 b = 0;
38 }
39 threadgroup_barrier(mem_flags::mem_threadgroup);
40 b = 7;
41 uses_b();
42}
43kernel void main3(uint tint_local_index [[thread_index_in_threadgroup]]) {
44 if ((tint_local_index == 0u)) {
45 a = 0;
46 b = 0;
47 }
48 threadgroup_barrier(mem_flags::mem_threadgroup);
49 outer();
50 no_uses();
51}
52kernel void main4() {
53 no_uses();
54}
55program_source:4:17: error: program scope variable must reside in constant address space
56threadgroup int a;
57 ^
58program_source:5:17: error: program scope variable must reside in constant address space
59threadgroup int b;
60 ^
61program_source:6:17: error: program scope variable must reside in constant address space
62threadgroup int c;
63 ^
64program_source:26:25: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
65 if ((tint_local_index == 0u)) {
66 ~~~~~~~~~~~~~~~~~^~~~~
67program_source:26:25: note: remove extraneous parentheses around the comparison to silence this warning
68 if ((tint_local_index == 0u)) {
69 ~ ^ ~
70program_source:26:25: note: use '=' to turn this equality comparison into an assignment
71 if ((tint_local_index == 0u)) {
72 ^~
73 =
74program_source:34:25: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
75 if ((tint_local_index == 0u)) {
76 ~~~~~~~~~~~~~~~~~^~~~~
77program_source:34:25: note: remove extraneous parentheses around the comparison to silence this warning
78 if ((tint_local_index == 0u)) {
79 ~ ^ ~
80program_source:34:25: note: use '=' to turn this equality comparison into an assignment
81 if ((tint_local_index == 0u)) {
82 ^~
83 =
84program_source:42:25: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
85 if ((tint_local_index == 0u)) {
86 ~~~~~~~~~~~~~~~~~^~~~~
87program_source:42:25: note: remove extraneous parentheses around the comparison to silence this warning
88 if ((tint_local_index == 0u)) {
89 ~ ^ ~
90program_source:42:25: note: use '=' to turn this equality comparison into an assignment
91 if ((tint_local_index == 0u)) {
92 ^~
93 =
94