#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  device half3x3* out;
};

void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
  (*target)[0u] = value_param[0u];
  (*target)[1u] = value_param[1u];
  (*target)[2u] = value_param[2u];
}

kernel void f(device half3x3* out [[buffer(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
  half3x3 m = half3x3(half3(0.0h), half3(0.0h), half3(0.0h));
  tint_store_and_preserve_padding(tint_module_vars.out, half3x3(m));
}
