blob: fcc1cdc2b63f33da3eeaeaeae63bedc62c08782e [file] [log] [blame]
Ben Claytonc0af5c52022-06-02 14:36:10 +00001#version 310 es
2
Ben Clayton47dd3012023-04-26 18:27:53 +00003struct atomic_compare_exchange_result_i32 {
Ben Claytonc0af5c52022-06-02 14:36:10 +00004 int old_value;
5 bool exchanged;
6};
7
8
9shared int arg_0;
Ben Clayton9dc42ad2024-02-05 18:01:33 +000010void tint_zero_workgroup_memory(uint local_idx) {
Antonio Maioranof5abb822024-02-28 01:01:02 +000011 if ((local_idx < 1u)) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +000012 atomicExchange(arg_0, 0);
13 }
14 barrier();
15}
16
Ben Claytonc0af5c52022-06-02 14:36:10 +000017void atomicCompareExchangeWeak_e88938() {
18 int arg_1 = 1;
19 int arg_2 = 1;
Ben Clayton47dd3012023-04-26 18:27:53 +000020 atomic_compare_exchange_result_i32 atomic_compare_result;
Ben Claytonc0af5c52022-06-02 14:36:10 +000021 atomic_compare_result.old_value = atomicCompSwap(arg_0, arg_1, arg_2);
22 atomic_compare_result.exchanged = atomic_compare_result.old_value == arg_1;
Ben Clayton47dd3012023-04-26 18:27:53 +000023 atomic_compare_exchange_result_i32 res = atomic_compare_result;
Ben Claytonc0af5c52022-06-02 14:36:10 +000024}
25
26void compute_main(uint local_invocation_index) {
Ben Clayton9dc42ad2024-02-05 18:01:33 +000027 tint_zero_workgroup_memory(local_invocation_index);
Ben Claytonc0af5c52022-06-02 14:36:10 +000028 atomicCompareExchangeWeak_e88938();
29}
30
31layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
32void main() {
33 compute_main(gl_LocalInvocationIndex);
34 return;
35}