#include <metal_stdlib>
using namespace metal;

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