1cb93a386Sopenharmony_ciuniform float testInput;
2cb93a386Sopenharmony_ciuniform float2x2 testMatrix2x2;
3cb93a386Sopenharmony_ciuniform half4 colorGreen, colorRed;
4cb93a386Sopenharmony_ci
5cb93a386Sopenharmony_cihalf4 main(float2 coords) {
6cb93a386Sopenharmony_ci    const float4 constVal = float4(-1, 0, 1, 2);
7cb93a386Sopenharmony_ci    const int4 expectedA = int4(-0x40800000, 0x00000000, 0x3F800000, 0x40000000);
8cb93a386Sopenharmony_ci
9cb93a386Sopenharmony_ci    float4 inputVal = float4(testMatrix2x2) * float4(1, 1, -1, -1);
10cb93a386Sopenharmony_ci    int4 expectedB = int4(0x3F800000, 0x40000000, -0x3FC00000, -0x3F800000);
11cb93a386Sopenharmony_ci
12cb93a386Sopenharmony_ci    return (constVal.x    == intBitsToFloat(expectedA.x)    &&
13cb93a386Sopenharmony_ci            constVal.xy   == intBitsToFloat(expectedA.xy)   &&
14cb93a386Sopenharmony_ci            constVal.xyz  == intBitsToFloat(expectedA.xyz)  &&
15cb93a386Sopenharmony_ci            constVal.xyzw == intBitsToFloat(expectedA.xyzw) &&
16cb93a386Sopenharmony_ci            inputVal.x    == intBitsToFloat(expectedB.x)    &&
17cb93a386Sopenharmony_ci            inputVal.xy   == intBitsToFloat(expectedB.xy)   &&
18cb93a386Sopenharmony_ci            inputVal.xyz  == intBitsToFloat(expectedB.xyz)  &&
19cb93a386Sopenharmony_ci            inputVal.xyzw == intBitsToFloat(expectedB.xyzw)) ? colorGreen : colorRed;
20cb93a386Sopenharmony_ci}
21