1cb93a386Sopenharmony_ciuniform half4 I, N;
2cb93a386Sopenharmony_ciuniform half4 colorGreen, colorRed;
3cb93a386Sopenharmony_ci
4cb93a386Sopenharmony_cihalf4 main(float2 xy) {
5cb93a386Sopenharmony_ci    const half4 constI    = half4(1, -2, 3, -4);
6cb93a386Sopenharmony_ci    const half4 constN    = half4(-5, 6, -7, 8);
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci    half  expectedX    = half (-49);
9cb93a386Sopenharmony_ci    half2 expectedXY   = half2(-169, 202);
10cb93a386Sopenharmony_ci    half3 expectedXYZ  = half3(-379, 454, -529);
11cb93a386Sopenharmony_ci    half4 expectedXYZW = half4(-699, 838, -977, 1116);
12cb93a386Sopenharmony_ci
13cb93a386Sopenharmony_ci    return (reflect(I.x,         N.x        ) == expectedX    &&
14cb93a386Sopenharmony_ci            reflect(I.xy,        N.xy       ) == expectedXY   &&
15cb93a386Sopenharmony_ci            reflect(I.xyz,       N.xyz      ) == expectedXYZ  &&
16cb93a386Sopenharmony_ci            reflect(I.xyzw,      N.xyzw     ) == expectedXYZW &&
17cb93a386Sopenharmony_ci            reflect(constI.x,    constN.x   ) == expectedX    &&
18cb93a386Sopenharmony_ci            reflect(constI.xy,   constN.xy  ) == expectedXY   &&
19cb93a386Sopenharmony_ci            reflect(constI.xyz,  constN.xyz ) == expectedXYZ  &&
20cb93a386Sopenharmony_ci            reflect(constI.xyzw, constN.xyzw) == expectedXYZW) ? colorGreen
21cb93a386Sopenharmony_ci                                                               : colorRed;
22cb93a386Sopenharmony_ci}
23