#include <metal_stdlib>

using namespace metal;
struct tint_symbol_5 {
  float2x2 W;
};

void tint_zero_workgroup_memory(uint local_idx, threadgroup float2x2* const tint_symbol_1) {
  if ((local_idx < 1u)) {
    *(tint_symbol_1) = float2x2(float2(0.0f), float2(0.0f));
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
}

void F_inner(uint mat2x2, threadgroup float2x2* const tint_symbol_2) {
  tint_zero_workgroup_memory(mat2x2, tint_symbol_2);
  (*(tint_symbol_2))[0] = ((*(tint_symbol_2))[0] + 0.0f);
}

kernel void F(threadgroup tint_symbol_5* tint_symbol_4 [[threadgroup(0)]], uint mat2x2 [[thread_index_in_threadgroup]]) {
  threadgroup float2x2* const tint_symbol_3 = &((*(tint_symbol_4)).W);
  F_inner(mat2x2, tint_symbol_3);
  return;
}

