#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);
}
