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 uint4 expectedA = uint4(0xBF800000, 0x00000000, 0x3F800000, 0x40000000);
8cb93a386Sopenharmony_ci
9cb93a386Sopenharmony_ci    float4 inputVal = float4(testMatrix2x2) * float4(1, 1, -1, -1);
10cb93a386Sopenharmony_ci    const uint4 expectedB = uint4(0x3F800000, 0x40000000, 0xC0400000, 0xC0800000);
11cb93a386Sopenharmony_ci
12cb93a386Sopenharmony_ci    return (floatBitsToUint(constVal.x)    == expectedA.x    &&
13cb93a386Sopenharmony_ci            floatBitsToUint(constVal.xy)   == expectedA.xy   &&
14cb93a386Sopenharmony_ci            floatBitsToUint(constVal.xyz)  == expectedA.xyz  &&
15cb93a386Sopenharmony_ci            floatBitsToUint(constVal.xyzw) == expectedA.xyzw &&
16cb93a386Sopenharmony_ci            floatBitsToUint(inputVal.x)    == expectedB.x    &&
17cb93a386Sopenharmony_ci            floatBitsToUint(inputVal.xy)   == expectedB.xy   &&
18cb93a386Sopenharmony_ci            floatBitsToUint(inputVal.xyz)  == expectedB.xyz  &&
19cb93a386Sopenharmony_ci            floatBitsToUint(inputVal.xyzw) == expectedB.xyzw) ? colorGreen : colorRed;
20cb93a386Sopenharmony_ci}
21