uniform half4 colorGreen, colorRed;
uniform half4 testInputs;

half4 main(float2 coords) {
    bool ok = true;

    const half4 vec1234 = half4(1, 2, 3, 4);

    ok = ok && half2x2(testInputs)         == half2x2(-1.25, 0, 0.75, 2.25);
    ok = ok && half2x2(half4(1, 2, 3, 4))  == half2x2(1, 2, 3, 4);
    ok = ok && half2x2(vec1234)            == half2x2(1, 2, 3, 4);

    ok = ok && float2x2(testInputs)        == float2x2(-1.25, 0, 0.75, 2.25);
    ok = ok && float2x2(half4(1, 2, 3, 4)) == float2x2(1, 2, 3, 4);
    ok = ok && float2x2(vec1234)           == float2x2(1, 2, 3, 4);

    ok = ok && half2x2(colorGreen)         == half2x2(0, 1, 0, 1);
    ok = ok && half2x2(colorGreen)         == half2x2(int4(0, 1, 0, 1));
    ok = ok && half2x2(int4(colorGreen))   == half2x2(int4(0, 1, 0, 1));
    ok = ok && half2x2(0, 1, 0, 1)         == half2x2(int4(0, 1, 0, 1));

    ok = ok && half2x2(colorGreen)               == half2x2(false, true, false, true);
    ok = ok && half2x2(colorGreen)               == half2x2(bool4(false, true, false, true));
    ok = ok && half2x2(bool4(colorGreen))        == half2x2(bool4(false, true, false, true));
    ok = ok && half2x2(false, true, false, true) == half2x2(bool4(false, true, false, true));

    return ok ? colorGreen : colorRed;
}
