#version 310 es

layout(binding = 0, std140) uniform u_block_ubo {
  mat2x4 inner[4];
} u;

shared mat2x4 w[4];
void f(uint local_invocation_index) {
  {
    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
      uint i = idx;
      w[i] = mat2x4(vec4(0.0f), vec4(0.0f));
    }
  }
  barrier();
  w = u.inner;
  w[1] = u.inner[2];
  w[1][0] = u.inner[0][1].ywxz;
  w[1][0].x = u.inner[0][1].x;
}

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