#include <metal_stdlib>
using namespace metal;
struct tint_module_vars_struct {
  thread float4x3* m;
  device float4x3* out;
};

void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
  (*target)[0u] = value_param[0u];
  (*target)[1u] = value_param[1u];
  (*target)[2u] = value_param[2u];
  (*target)[3u] = value_param[3u];
}
kernel void f(device float4x3* out [[buffer(0)]]) {
  thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
  tint_store_and_preserve_padding(tint_module_vars.out, float4x3((*tint_module_vars.m)));
}
