struct VertexOutputs {
  @location(0) @interpolate(flat) loc0 : i32;
  @location(1) @interpolate(flat) loc1 : u32;
  @location(2) loc2 : f32;
  @location(3) loc3 : vec4<f32>;
  @builtin(position) position : vec4<f32>;
};

@stage(vertex)
fn main() -> VertexOutputs {
  return VertexOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>());
}
