#pragma clang diagnostic ignored "-Wunused-variable"

#include <metal_stdlib>
#include <simd/simd.h>
#include <metal_atomic>

using namespace metal;

struct DataBuf
{
    uint data[1];
};

struct Result
{
    uint r0;
    uint r1;
    uint r2;
    uint r3;
};

struct OutBuf
{
    Result r[1];
};

constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(256u, 1u, 1u);

kernel void main0(device DataBuf& data_buf [[buffer(0)]], device OutBuf& out_buf [[buffer(1)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])
{
    uint ix = gl_GlobalInvocationID.x;
    uint role_0_ix = (ix * 661u) & 65535u;
    uint role_1_ix = (ix * 1087u) & 65535u;
    uint role_2_ix = (ix * 2749u) & 65535u;
    uint role_3_ix = (ix * 3433u) & 65535u;
    atomic_store_explicit((device atomic_uint*)&data_buf.data[role_0_ix], 1u, memory_order_relaxed);
    uint _52 = atomic_load_explicit((device atomic_uint*)&data_buf.data[role_1_ix], memory_order_relaxed);
    uint r0 = _52;
    uint _56 = atomic_load_explicit((device atomic_uint*)&data_buf.data[role_1_ix], memory_order_relaxed);
    uint r1 = _56;
    atomic_store_explicit((device atomic_uint*)&data_buf.data[role_2_ix], 2u, memory_order_relaxed);
    uint _63 = atomic_load_explicit((device atomic_uint*)&data_buf.data[role_3_ix], memory_order_relaxed);
    uint r2 = _63;
    uint _67 = atomic_load_explicit((device atomic_uint*)&data_buf.data[role_3_ix], memory_order_relaxed);
    uint r3 = _67;
    out_buf.r[role_1_ix].r0 = r0;
    out_buf.r[role_1_ix].r1 = r1;
    out_buf.r[role_3_ix].r2 = r2;
    out_buf.r[role_3_ix].r3 = r3;
}

