#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  const device half4x3* in;
  device half4x3* out;
};

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

kernel void tint_symbol(const device half4x3* in [[buffer(1)]], device half4x3* out [[buffer(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
}
