1cb93a386Sopenharmony_ciuniform half4 colorGreen, colorRed; 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_cibool test_float() { 4cb93a386Sopenharmony_ci bool ok = true; 5cb93a386Sopenharmony_ci 6cb93a386Sopenharmony_ci float2x3 m23 = float2x3(2); 7cb93a386Sopenharmony_ci ok = ok && (m23 == float2x3(2, 0, 0, 8cb93a386Sopenharmony_ci 0, 2, 0)); 9cb93a386Sopenharmony_ci float2x4 m24 = float2x4(3); 10cb93a386Sopenharmony_ci ok = ok && (m24 == float2x4(3, 0, 0, 0, 11cb93a386Sopenharmony_ci 0, 3, 0, 0)); 12cb93a386Sopenharmony_ci float3x2 m32 = float3x2(4); 13cb93a386Sopenharmony_ci ok = ok && (m32 == float3x2(4, 0, 14cb93a386Sopenharmony_ci 0, 4, 15cb93a386Sopenharmony_ci 0, 0)); 16cb93a386Sopenharmony_ci float3x4 m34 = float3x4(5); 17cb93a386Sopenharmony_ci ok = ok && (m34 == float3x4(5, 0, 0, 0, 18cb93a386Sopenharmony_ci 0, 5, 0, 0, 19cb93a386Sopenharmony_ci 0, 0, 5, 0)); 20cb93a386Sopenharmony_ci float4x2 m42 = float4x2(6); 21cb93a386Sopenharmony_ci ok = ok && (m42 == float4x2(6, 0, 22cb93a386Sopenharmony_ci 0, 6, 23cb93a386Sopenharmony_ci 0, 0, 24cb93a386Sopenharmony_ci 0, 0)); 25cb93a386Sopenharmony_ci float4x3 m43 = float4x3(7); 26cb93a386Sopenharmony_ci ok = ok && (m43 == float4x3(7, 0, 0, 27cb93a386Sopenharmony_ci 0, 7, 0, 28cb93a386Sopenharmony_ci 0, 0, 7, 29cb93a386Sopenharmony_ci 0, 0, 0)); 30cb93a386Sopenharmony_ci float2x2 m22 = m32 * m23; 31cb93a386Sopenharmony_ci ok = ok && (m22 == float2x2(2 * 4)); 32cb93a386Sopenharmony_ci float3x3 m33 = m43 * m34; 33cb93a386Sopenharmony_ci ok = ok && (m33 == float3x3(7 * 5)); 34cb93a386Sopenharmony_ci float4x4 m44 = m24 * m42; 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_ci m23 += 1; 37cb93a386Sopenharmony_ci ok = ok && (m23 == float2x3(3, 1, 1, 38cb93a386Sopenharmony_ci 1, 3, 1)); 39cb93a386Sopenharmony_ci m32 -= 2; 40cb93a386Sopenharmony_ci ok = ok && (m32 == float3x2(2, -2, 41cb93a386Sopenharmony_ci -2, 2, 42cb93a386Sopenharmony_ci -2, -2)); 43cb93a386Sopenharmony_ci m24 /= 4; 44cb93a386Sopenharmony_ci ok = ok && (m24 == float2x4(0.75, 0, 0, 0, 45cb93a386Sopenharmony_ci 0, 0.75, 0, 0)); 46cb93a386Sopenharmony_ci return ok; 47cb93a386Sopenharmony_ci} 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_cibool test_half() { 50cb93a386Sopenharmony_ci bool ok = true; 51cb93a386Sopenharmony_ci 52cb93a386Sopenharmony_ci half2x3 m23 = half2x3(2); 53cb93a386Sopenharmony_ci ok = ok && (m23 == half2x3(2, 0, 0, 54cb93a386Sopenharmony_ci 0, 2, 0)); 55cb93a386Sopenharmony_ci half2x4 m24 = half2x4(3); 56cb93a386Sopenharmony_ci ok = ok && (m24 == half2x4(3, 0, 0, 0, 57cb93a386Sopenharmony_ci 0, 3, 0, 0)); 58cb93a386Sopenharmony_ci half3x2 m32 = half3x2(4); 59cb93a386Sopenharmony_ci ok = ok && (m32 == half3x2(4, 0, 60cb93a386Sopenharmony_ci 0, 4, 61cb93a386Sopenharmony_ci 0, 0)); 62cb93a386Sopenharmony_ci half3x4 m34 = half3x4(5); 63cb93a386Sopenharmony_ci ok = ok && (m34 == half3x4(5, 0, 0, 0, 64cb93a386Sopenharmony_ci 0, 5, 0, 0, 65cb93a386Sopenharmony_ci 0, 0, 5, 0)); 66cb93a386Sopenharmony_ci half4x2 m42 = half4x2(6); 67cb93a386Sopenharmony_ci ok = ok && (m42 == half4x2(6, 0, 68cb93a386Sopenharmony_ci 0, 6, 69cb93a386Sopenharmony_ci 0, 0, 70cb93a386Sopenharmony_ci 0, 0)); 71cb93a386Sopenharmony_ci half4x3 m43 = half4x3(7); 72cb93a386Sopenharmony_ci ok = ok && (m43 == half4x3(7, 0, 0, 73cb93a386Sopenharmony_ci 0, 7, 0, 74cb93a386Sopenharmony_ci 0, 0, 7, 75cb93a386Sopenharmony_ci 0, 0, 0)); 76cb93a386Sopenharmony_ci half2x2 m22 = m32 * m23; 77cb93a386Sopenharmony_ci ok = ok && (m22 == half2x2(2 * 4)); 78cb93a386Sopenharmony_ci half3x3 m33 = m43 * m34; 79cb93a386Sopenharmony_ci ok = ok && (m33 == half3x3(7 * 5)); 80cb93a386Sopenharmony_ci half4x4 m44 = m24 * m42; 81cb93a386Sopenharmony_ci 82cb93a386Sopenharmony_ci m23 += 1; 83cb93a386Sopenharmony_ci ok = ok && (m23 == half2x3(3, 1, 1, 84cb93a386Sopenharmony_ci 1, 3, 1)); 85cb93a386Sopenharmony_ci m32 -= 2; 86cb93a386Sopenharmony_ci ok = ok && (m32 == half3x2(2, -2, 87cb93a386Sopenharmony_ci -2, 2, 88cb93a386Sopenharmony_ci -2, -2)); 89cb93a386Sopenharmony_ci m24 /= 4; 90cb93a386Sopenharmony_ci ok = ok && (m24 == half2x4(0.75, 0, 0, 0, 91cb93a386Sopenharmony_ci 0, 0.75, 0, 0)); 92cb93a386Sopenharmony_ci return ok; 93cb93a386Sopenharmony_ci} 94cb93a386Sopenharmony_ci 95cb93a386Sopenharmony_cihalf4 main(float2 coords) { 96cb93a386Sopenharmony_ci return test_float() && test_half() ? colorGreen : colorRed; 97cb93a386Sopenharmony_ci} 98