#version 310 es

precision highp float;

layout (local_size_x = 16, local_size_y = 32, local_size_z = 4) in;

shared float s;
shared int i;

buffer outb {
    float f;
    float g;
    float h;
    vec3 uns[];  // this makes it look like the "second" set of 3 floats in a struct, which LLVM
                 // takes advantage of when optimizing, giving confusing results, like thinking
                 // &outbname.uns[18].x == &outbname[9].uns.x
} outbname;

buffer outbna {
    int k;
    vec4 na;
} outbnamena;

buffer outs {
    vec4 va[];
} outnames;

void main()
{
    barrier();
    outbname.f = s;
    outbnamena.na = vec4(s);
    s = outbname.uns[18].x;           // TODO: see note above
    //outbname.uns[17] = vec3(3.0);   // TODO: see note above, this one bitcasts, which isn't handled
    outbname.uns[i] = vec3(s);
    outnames.va[gl_LocalInvocationID.x] = vec4(s);
}
