#include <metal_stdlib>
using namespace metal;
struct tint_module_vars_struct {
  const constant half4x3* m;
  thread int* counter;
};

int i(tint_module_vars_struct tint_module_vars) {
  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
  return (*tint_module_vars.counter);
}
kernel void f(const constant half4x3* m [[buffer(0)]]) {
  thread int counter = 0;
  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
  const constant half4x3* const p_m = tint_module_vars.m;
  const constant half3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
  half4x3 const l_m = (*p_m);
  half3 const l_m_i = (*p_m_i);
}
