uniform half4 colorGreen, colorRed;
uniform float2x2 testMatrix2x2;  // equals (1, 2, 3, 4)

half4 main(float2 coords) {
    float4 f4 = float4(testMatrix2x2);

    // These matrices are intentionally assembled off-kilter; the vectors shouldn't line up with the
    // natural matrix stride. Metal and SPIR-V will need to reorder the data to make it fit.
    bool ok = float2x2(f4.xyz, 4)                       == float2x2(1, 2, 3, 4);
    ok = ok && float3x3(f4.xy, f4.zw, f4.xyzw, f4.x)    == float3x3(1, 2, 3, 4, 1, 2, 3, 4, 1);
    ok = ok && float4x4(f4.xy, f4.zwxy, f4.zwx, f4.yz, f4.wxyz, f4.w) == float4x4(1, 2, 3, 4,
                                                                                  1, 2, 3, 4,
                                                                                  1, 2, 3, 4,
                                                                                  1, 2, 3, 4);
    return ok ? colorGreen : colorRed;
}
