#include <metal_stdlib>
using namespace metal;
struct tint_module_vars_struct {
  threadgroup float2x2* W;
};
struct tint_symbol_1 {
  float2x2 tint_symbol;
};

void F_inner(uint mat2x2_1, tint_module_vars_struct tint_module_vars) {
  if ((mat2x2_1 == 0u)) {
    (*tint_module_vars.W) = float2x2(float2(0.0f), float2(0.0f));
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
  (*tint_module_vars.W)[0] = ((*tint_module_vars.W)[0] + 0.0f);
}
kernel void F(uint mat2x2 [[thread_index_in_threadgroup]], threadgroup tint_symbol_1* v [[threadgroup(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.W=(&(*v).tint_symbol)};
  F_inner(mat2x2, tint_module_vars);
}
