[require]
shader model >= 4.0

[pixel shader]
float4x1 main() : sv_target
{
    return float4(1.0, 2.0, 3.0, 4.0);
}

[test]
todo(glsl) draw quad
probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0)

[pixel shader]
row_major float1x4 main() : sv_target
{
    return float4(1.0, 2.0, 3.0, 4.0);
}

[test]
todo(glsl) draw quad
probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0)

[rtv 0]
format r32-float
size (2d, 640, 480)

[rtv 1]
format r32-float
size (2d, 640, 480)

[rtv 2]
format r32-float
size (2d, 640, 480)

[rtv 3]
format r32-float
size (2d, 640, 480)

[pixel shader fail(sm>=6)]
row_major float4x1 main() : sv_target
{
    return float4(1.0, 2.0, 3.0, 4.0);
}

[test]
todo(sm>=6 | glsl) draw quad
probe rtv 0 (0,0) r (1.0)
probe rtv 1 (0,0) r (2.0)
probe rtv 2 (0,0) r (3.0)
probe rtv 3 (0,0) r (4.0)

[pixel shader fail(sm>=6)]
float1x4 main() : sv_target
{
    return float4(1.0, 2.0, 3.0, 4.0);
}

[test]
todo(sm>=6 | glsl) draw quad
probe rtv 0 (0,0) r (1.0)
probe rtv 1 (0,0) r (2.0)
probe rtv 2 (0,0) r (3.0)
probe rtv 3 (0,0) r (4.0)

[pixel shader fail]
void main(out float1x2 x : sv_target0, out float1x2 y : sv_target1)
{
    x = float2(1.0, 2.0);
    y = float2(5.0, 6.0);
}

[pixel shader fail(sm>=6)]
void main(out float1x2 x : sv_target0, out float1x2 y : sv_target2)
{
    x = float2(1.0, 2.0);
    y = float2(5.0, 6.0);
}

[test]
todo(sm>=6 | glsl) draw quad
probe rtv 0 (0,0) r (1.0)
probe rtv 1 (0,0) r (2.0)
probe rtv 2 (0,0) r (5.0)
probe rtv 3 (0,0) r (6.0)

[rtv 0]
format r32g32b32a32-float
size (2d, 640, 480)

[pixel shader fail(sm>=6)]
void main(out row_major float1x4 x : sv_target0, out float1x2 y : sv_target1)
{
    x = float4(1.0, 2.0, 3.0, 4.0);
    y = float2(5.0, 6.0);
}

[test]
todo(sm>=6 | glsl) draw quad
probe rtv 0 (0,0) rgba (1.0, 2.0, 3.0, 4.0)
probe rtv 1 (0,0) r (5.0)
probe rtv 2 (0,0) r (6.0)