#version 310 es

struct S_atomic {
  int x;
  uint a;
  uint b;
};

struct S {
  int x;
  uint a;
  uint b;
};

uint local_invocation_index_1 = 0u;
shared S_atomic wg;
void compute_main_inner(uint local_invocation_index) {
  wg.x = 0;
  atomicExchange(wg.a, 0u);
  atomicExchange(wg.b, 0u);
  barrier();
  atomicExchange(wg.a, 1u);
  atomicExchange(wg.b, 2u);
  return;
}

void compute_main_1() {
  compute_main_inner(local_invocation_index_1);
  return;
}

void compute_main(uint local_invocation_index_1_param) {
  {
    wg.x = 0;
    atomicExchange(wg.a, 0u);
    atomicExchange(wg.b, 0u);
  }
  barrier();
  local_invocation_index_1 = local_invocation_index_1_param;
  compute_main_1();
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
  compute_main(gl_LocalInvocationIndex);
  return;
}
