diagnostic(off, derivative_uniformity);
diagnostic(off, chromium.unreachable_code);
enable f16;
struct FSOut {
  @location(0) sk_FragColor: vec4<f16>,
};
struct _GlobalUniforms {
  testInputs: vec4<f32>,
  colorGreen: vec4<f16>,
  colorRed: vec4<f16>,
};
@group(0) @binding(0) var<uniform> _globalUniforms : _GlobalUniforms;
fn _skslMain(coords: vec2<f32>) -> vec4<f16> {
  {
    const expected: vec4<f32> = vec4<f32>(0.75, 0.0, 0.75, 0.25);
    return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4<bool>((((fract(_globalUniforms.testInputs.x) == 0.75) && all(fract(_globalUniforms.testInputs.xy) == vec2<f32>(0.75, 0.0))) && all(fract(_globalUniforms.testInputs.xyz) == vec3<f32>(0.75, 0.0, 0.75))) && all(fract(_globalUniforms.testInputs) == expected)));
  }
}
@fragment fn main() -> FSOut {
  var _stageOut: FSOut;
  _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>());
  return _stageOut;
}
