struct FragmentInputs0 {
  @builtin(position) position : vec4<f32>;
  @location(0) @interpolate(flat) loc0 : i32;
};
struct FragmentInputs1 {
  @location(3) loc3 : vec4<f32>;
  @builtin(sample_mask) sample_mask : u32;
};

@stage(fragment)
fn main(
  inputs0 : FragmentInputs0,
  @builtin(front_facing) front_facing : bool,
  @location(1) @interpolate(flat) loc1 : u32,
  @builtin(sample_index) sample_index : u32,
  inputs1 : FragmentInputs1,
  @location(2) loc2 : f32,
) {
  if (front_facing) {
    let foo : vec4<f32> = inputs0.position;
    let bar : u32 = sample_index + inputs1.sample_mask;
    let i : i32 = inputs0.loc0;
    let u : u32 = loc1;
    let f : f32 = loc2;
    let v : vec4<f32> = inputs1.loc3;
  }
}
