1cb93a386Sopenharmony_ciuniform half4 testInputs;  // equals (-1.25, 0, 0.75, 2.25)
2cb93a386Sopenharmony_ciuniform half4 colorGreen, colorRed;
3cb93a386Sopenharmony_ci
4cb93a386Sopenharmony_cihalf4 main(float2 coords) {
5cb93a386Sopenharmony_ci    // NOTE: the ES3 spec does not mandate NaN support. This test may not succeed on some GPUs.
6cb93a386Sopenharmony_ci
7cb93a386Sopenharmony_ci    half4 valueIsNaN    = 0 / testInputs.yyyy;
8cb93a386Sopenharmony_ci    half4 valueIsNumber = 1 / testInputs;
9cb93a386Sopenharmony_ci
10cb93a386Sopenharmony_ci    return (    (isnan(valueIsNaN.x))       &&
11cb93a386Sopenharmony_ci             all(isnan(valueIsNaN.xy))      &&
12cb93a386Sopenharmony_ci             all(isnan(valueIsNaN.xyz))     &&
13cb93a386Sopenharmony_ci             all(isnan(valueIsNaN.xyzw))    &&
14cb93a386Sopenharmony_ci            !   (isnan(valueIsNumber.x))    &&
15cb93a386Sopenharmony_ci            !any(isnan(valueIsNumber.xy))   &&
16cb93a386Sopenharmony_ci            !any(isnan(valueIsNumber.xyz))  &&
17cb93a386Sopenharmony_ci            !any(isnan(valueIsNumber.xyzw))) ? colorGreen : colorRed;
18cb93a386Sopenharmony_ci}
19