#include <metal_stdlib>

using namespace metal;
void transpose_31e37e() {
  float4x2 arg_0 = float4x2(float2(1.0f), float2(1.0f), float2(1.0f), float2(1.0f));
  float2x4 res = transpose(arg_0);
}

struct tint_symbol {
  float4 value [[position]];
};

float4 vertex_main_inner() {
  transpose_31e37e();
  return float4(0.0f);
}

vertex tint_symbol vertex_main() {
  float4 const inner_result = vertex_main_inner();
  tint_symbol wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

fragment void fragment_main() {
  transpose_31e37e();
  return;
}

kernel void compute_main() {
  transpose_31e37e();
  return;
}

