#include <metal_stdlib>
using namespace metal;

void transpose_dc671a() {
  float4x4 res = float4x4(float4(1.0f), float4(1.0f), float4(1.0f), float4(1.0f));
}
vertex float4 vertex_main() {
  transpose_dc671a();
  return float4(0.0f);
}
fragment void fragment_main() {
  transpose_dc671a();
}
kernel void compute_main() {
  transpose_dc671a();
}
