1cb93a386Sopenharmony_ci
2cb93a386Sopenharmony_ciout vec4 sk_FragColor;
3cb93a386Sopenharmony_ciuniform vec4 N;
4cb93a386Sopenharmony_ciuniform vec4 I;
5cb93a386Sopenharmony_ciuniform vec4 NRef;
6cb93a386Sopenharmony_ciuniform vec4 colorGreen;
7cb93a386Sopenharmony_ciuniform vec4 colorRed;
8cb93a386Sopenharmony_civec4 main() {
9cb93a386Sopenharmony_ci    vec4 expectedPos = vec4(1.0, 2.0, 3.0, 4.0);
10cb93a386Sopenharmony_ci    vec4 expectedNeg = vec4(-1.0, -2.0, -3.0, -4.0);
11cb93a386Sopenharmony_ci    return ((((((faceforward(N.x, I.x, NRef.x) == expectedNeg.x && faceforward(N.xy, I.xy, NRef.xy) == expectedNeg.xy) && faceforward(N.xyz, I.xyz, NRef.xyz) == expectedPos.xyz) && faceforward(N, I, NRef) == expectedPos) && -1.0 == expectedNeg.x) && vec2(-1.0, -2.0) == expectedNeg.xy) && vec3(1.0, 2.0, 3.0) == expectedPos.xyz) && vec4(1.0, 2.0, 3.0, 4.0) == expectedPos ? colorGreen : colorRed;
12cb93a386Sopenharmony_ci}
13