uniform float2x2 testMatrix2x2;
uniform half4 colorRed, colorGreen;
uniform half unknownInput;

bool test_eq() {
    bool ok = true;
    ok = ok &&  (float2x2(float2(1.0, 0.0), float2(0.0, 1.0)) ==
                 float2x2(float2(1.0, 0.0), float2(0.0, 1.0)));
    ok = ok && !(float2x2(float2(1.0, 0.0), float2(1.0, 1.0)) ==
                 float2x2(float2(1.0, 0.0), float2(0.0, 1.0)));

    ok = ok &&  ( float2x2(1)  == float2x2(1));
    ok = ok && !( float2x2(1)  == float2x2(0));
    ok = ok &&  ( float2x2(-1) == -float2x2(1));
    ok = ok &&  ( float2x2(0)  == -float2x2(0));
    ok = ok &&  (-float2x2(-1) ==  float2x2(1));
    ok = ok &&  (-float2x2(0)  == -float2x2(-0));

    ok = ok &&  (float2x2(1) == float2x2(float2(1.0, 0.0), float2(0.0, 1.0)));
    ok = ok && !(float2x2(2) == float2x2(float2(1.0, 0.0), float2(0.0, 1.0)));

    ok = ok && !(float2x2(1) != float2x2(1));
    ok = ok &&  (float2x2(1) != float2x2(0));
    ok = ok &&  (float3x3(float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0)) ==
                 float3x3(float2x2(1.0)));
    ok = ok &&  (float3x3(float3(9.0, 0.0, 0.0), float3(0.0, 9.0, 0.0), float3(0.0, 0.0, 1.0)) ==
                 float3x3(float2x2(9.0)));
    ok = ok &&  (float3x3(unknownInput) == float3x3(float2x2(1.0)));
    ok = ok &&  (float3x3(float3(9).x00, float3(9).0x0, float3(unknownInput).00x) ==
                 float3x3(float2x2(9.0)));
    ok = ok &&  (float2x2(float3x3(1.0)) == float2x2(1.0));
    ok = ok &&  (float2x2(float3x3(1.0)) == float2x2(1.0));
    ok = ok &&  (float2x2(float4(1.0, 0.0, 0.0, 1.0)) == float2x2(1.0));
    ok = ok &&  (float2x2(1.0, 0.0, float2(0.0, 1.0)) == float2x2(1.0));
    ok = ok &&  (float2x2(float2(1.0, 0.0), 0.0, 1.0) == float2x2(1.0));

    ok = ok &&  (float4(testMatrix2x2) * float4(1)) == float4(1, 2, 3, 4);
    ok = ok &&  (float4(testMatrix2x2) * float4(1)) == float4(testMatrix2x2);
    ok = ok &&  (float4(testMatrix2x2) * float4(0)) == float4(0);

    ok = ok &&  (float2x2(5.0)[0] == float2(5.0, 0.0));
    ok = ok &&  (float2x2(5.0)[1] == float2(0.0, 5.0));

    ok = ok &&  (float2x2(5.0)[0][0] == 5.0);
    ok = ok &&  (float2x2(5.0)[0][1] == 0.0);
    ok = ok &&  (float2x2(5.0)[1][0] == 0.0);
    ok = ok &&  (float2x2(5.0)[1][1] == 5.0);

    const float3x3 m = float3x3(1, 2, 3, 4, 5, 6, 7, 8, 9);
    ok = ok &&  (m[0] == float3(1, 2, 3));
    ok = ok &&  (m[1] == float3(4, 5, 6));
    ok = ok &&  (m[2] == float3(7, 8, 9));

    ok = ok &&  (m[0][0] == 1);
    ok = ok &&  (m[0][1] == 2);
    ok = ok &&  (m[0][2] == 3);
    ok = ok &&  (m[1][0] == 4);
    ok = ok &&  (m[1][1] == 5);
    ok = ok &&  (m[1][2] == 6);
    ok = ok &&  (m[2][0] == 7);
    ok = ok &&  (m[2][1] == 8);
    ok = ok &&  (m[2][2] == 9);

    {
        // This `five` is constant and should always fold.
        const float five = 5.0;
        ok = ok &&  (float2x2(five)[0] == float2(five, 0.0));
        ok = ok &&  (float2x2(five)[1] == float2(0.0, five));

        ok = ok &&  (float2x2(five)[0][0] == five);
        ok = ok &&  (float2x2(five)[0][1] == 0.0);
        ok = ok &&  (float2x2(five)[1][0] == 0.0);
        ok = ok &&  (float2x2(five)[1][1] == five);

        ok = ok &&  (float3x3(1, 2, 3, 4, five, 6, 7, 8, 9)[0] == float3(1, 2, 3));
        ok = ok &&  (float3x3(1, 2, 3, 4, five, 6, 7, 8, 9)[1] == float3(4, five, 6));
        ok = ok &&  (float3x3(1, 2, 3, 4, five, 6, 7, 8, 9)[2] == float3(7, 8, 9));
    }
    {
        // This `five` cannot be folded, but the first and third columns should still be foldable.
        float five = 5.0;
        ok = ok &&  (float3x3(1, 2, 3, 4, five, 6, 7, 8, 9)[0] == float3(1, 2, 3));
        ok = ok &&  (float3x3(1, 2, 3, 4, five, 6, 7, 8, 9)[1] == float3(4, five, 6));
        ok = ok &&  (float3x3(1, 2, 3, 4, five, 6, 7, 8, 9)[2] == float3(7, 8, 9));
    }
    {
        // Side-effecting expressions should never be folded away.
        float num = 6.0;
        ok = ok &&  (float3x3(1, 2, 3, 4, 5, num++, 7, 8, 9)[0] == float3(1, 2, 3));
        ok = ok &&  (float3x3(1, 2, 3, 4, 5, 6, num++, 8, 9)[1] == float3(4, 5, 6));
        ok = ok &&  (float3x3(1, 2, 3, 4, 5, 6, 7, num++, 9)[2] == float3(7, 8, 9));
    }
    {
        // The upper-left 2x2 of the matrix is unknown, but the bottom two rows are still foldable.
        ok = ok && float4x4(half3x3(testMatrix2x2))[0] == float4(1, 2, 0, 0);
        ok = ok && float4x4(half3x3(testMatrix2x2))[1] == float4(3, 4, 0, 0);
        ok = ok && float4x4(half3x3(testMatrix2x2))[2] == float4(0, 0, 1, 0);
        ok = ok && float4x4(half3x3(testMatrix2x2))[3] == float4(0, 0, 0, 1);
    }

    return ok;
}

bool test_matrix_op_scalar_float() {
    bool ok = true;

    ok = ok && ((float3x3(2) + 4) == float3x3(6, 4, 4, 4, 6, 4, 4, 4, 6));
    ok = ok && ((float3x3(2) - 4) == float3x3(-2, -4, -4, -4, -2, -4, -4, -4, -2));
    ok = ok && ((float3x3(2) * 4) == float3x3(8));
    ok = ok && ((float3x3(2) / 4) == float3x3(0.5));

    ok = ok && (4 + (float3x3(2)) == float3x3(6, 4, 4, 4, 6, 4, 4, 4, 6));
    ok = ok && (4 - (float3x3(2)) == float3x3(2, 4, 4, 4, 2, 4, 4, 4, 2));
    ok = ok && (4 * (float3x3(2)) == float3x3(8));
    ok = ok && (4 / (float2x2(2, 2, 2, 2)) == float2x2(2, 2, 2, 2));

    return ok;
}

bool test_matrix_op_scalar_half() {
    bool ok = true;

    ok = ok && ((half3x3(2) + 4) == half3x3(6, 4, 4, 4, 6, 4, 4, 4, 6));
    ok = ok && ((half3x3(2) - 4) == half3x3(-2, -4, -4, -4, -2, -4, -4, -4, -2));
    ok = ok && ((half3x3(2) * 4) == half3x3(8));
    ok = ok && ((half3x3(2) / 4) == half3x3(0.5));

    ok = ok && (4 + (half3x3(2)) == half3x3(6, 4, 4, 4, 6, 4, 4, 4, 6));
    ok = ok && (4 - (half3x3(2)) == half3x3(2, 4, 4, 4, 2, 4, 4, 4, 2));
    ok = ok && (4 * (half3x3(2)) == half3x3(8));
    ok = ok && (4 / (half2x2(2, 2, 2, 2)) == half2x2(2, 2, 2, 2));

    return ok;
}

bool test_matrix_op_matrix_float() {
    bool ok = true;

    // Addition, subtraction and division operate componentwise.
    const float3x3 splat_4 = float3x3(4, 4, 4, 4, 4, 4, 4, 4, 4);

    ok = ok && ((float3x3(2) + splat_4) == float3x3(6, 4, 4, 4, 6, 4, 4, 4, 6));
    ok = ok && ((float3x3(2) - splat_4) == float3x3(-2, -4, -4, -4, -2, -4, -4, -4, -2));
    ok = ok && ((float3x3(2) / splat_4) == float3x3(0.5));

    ok = ok && (splat_4 + (float3x3(2)) == float3x3(6, 4, 4, 4, 6, 4, 4, 4, 6));
    ok = ok && (splat_4 - (float3x3(2)) == float3x3(2, 4, 4, 4, 2, 4, 4, 4, 2));
    ok = ok && (float2x2(4, 4, 4, 4) / (float2x2(2, 2, 2, 2)) == float2x2(2, 2, 2, 2));

    ok = ok && (float4x4(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) +
                float4x4(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) ==
                float4x4(17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17));

    ok = ok && (float2x2(10, 20, 30, 40) - float2x2(1, 2, 3, 4) == float2x2(9, 18, 27, 36));

    ok = ok && (float2x2(10, 20, 30, 40) / float2x2(5, 4, 30, 1) == float2x2(2, 5, 1, 40));

    // Multiplication performs a proper matrix multiply.
    ok = ok && (float2x2(1, 2, 7, 4) * float2x2(3, 5, 3, 2) == float2x2(38, 26, 17, 14));
    ok = ok && (float3x3(10, 4, 2, 20, 5, 3, 10, 6, 5) *
                float3x3(3, 3, 4, 2, 3, 4, 4, 9, 2) ==
                float3x3(130, 51, 35, 120, 47, 33, 240, 73, 45));

    return ok;
}

bool test_matrix_op_matrix_half() {
    bool ok = true;

    // Addition, subtraction and division operate componentwise.
    const half3x3 splat_4 = half3x3(4, 4, 4, 4, 4, 4, 4, 4, 4);

    ok = ok && ((half3x3(2) + splat_4) == half3x3(6, 4, 4, 4, 6, 4, 4, 4, 6));
    ok = ok && ((half3x3(2) - splat_4) == half3x3(-2, -4, -4, -4, -2, -4, -4, -4, -2));
    ok = ok && ((half3x3(2) / splat_4) == half3x3(0.5));

    ok = ok && (splat_4 + (half3x3(2)) == half3x3(6, 4, 4, 4, 6, 4, 4, 4, 6));
    ok = ok && (splat_4 - (half3x3(2)) == half3x3(2, 4, 4, 4, 2, 4, 4, 4, 2));
    ok = ok && (half2x2(4, 4, 4, 4) / (half2x2(2, 2, 2, 2)) == half2x2(2, 2, 2, 2));

    ok = ok && (half4x4(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) +
                half4x4(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) ==
                half4x4(17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17));

    ok = ok && (half2x2(10, 20, 30, 40) - half2x2(1, 2, 3, 4) == half2x2(9, 18, 27, 36));

    ok = ok && (half2x2(10, 20, 30, 40) / half2x2(5, 4, 30, 1) == half2x2(2, 5, 1, 40));

    // Multiplication performs a proper matrix multiply.
    ok = ok && (half2x2(1, 2, 7, 4) * half2x2(3, 5, 3, 2) == half2x2(38, 26, 17, 14));
    ok = ok && (half3x3(10, 4, 2, 20, 5, 3, 10, 6, 5) *
                half3x3(3, 3, 4, 2, 3, 4, 4, 9, 2) ==
                half3x3(130, 51, 35, 120, 47, 33, 240, 73, 45));

    return ok;
}

half4 main(float2 coords) {
    return (test_eq() &&
            test_matrix_op_scalar_float() &&
            test_matrix_op_scalar_half() &&
            test_matrix_op_matrix_float() &&
            test_matrix_op_matrix_half()) ? colorGreen : colorRed;
}
