[require]
shader model >= 4.0


[pixel shader]
float4 main() : sv_target
{
    min16float4 a = {0, 1, 2, 3};
    min10float2 b = {4, 5};
    min16int3 c = {6.4, 7, 8};
    min12int d = 9.4;
    min16uint4x2 e = {14.4, 15, 16, 17, 18, 19, 20, 21};
    vector<min10float, 3> g = {22, 23, 24};
    matrix<min16uint, 3, 2> h = {25.4, 26, 27, 28, 29, 30};

    return mul(e, b) + a + c.xyzx + d + g.xxyz + h[2].xyxy;
}

[test]
draw quad
probe (0, 0) rgba (197.0, 218.0, 238.0, 257.0)

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

[pixel shader]
uniform min16uint2 u;

uint4 main() : sv_target
{
    min16uint i = 0x7fff, j = 0xffff;
    return uint4(u.x + i, u.y + j, 0, 0);
}

[require]
shader model >= 4.0
shader model < 6.0

[test]
uniform 0 uint4 0 0 0 0
todo(msl) draw quad
probe (0, 0) rgbaui (0x7fff, 0xffff, 0, 0)

[require]
shader model >= 6.0

[test]
uniform 0 uint4 0 0 0 0
draw quad
probe (0, 0) rgbaui (0x7fff, 0xffffffff, 0, 0)


% The code d3dcompiler_47 produces for this appears correct, but the result
% is still zero in Windows.

[pixel shader]
uniform min16uint4 u;
uniform uint i;

uint4 main() : sv_target
{
    min16uint arr[4] = {1, 2, 0x7fff, 0xffff};
    return uint4(u.x + arr[i], u.y + arr[i + 1], 0, 0);
}

[test]
uniform 0 uint4 0 0 0 0
uniform 4 uint 2
draw quad
probe (0, 0) rgbaui (0x7fff, 0xffffffff, 0, 0)
uniform 0 uint4 0 0 0 0
uniform 4 uint 0
draw quad
probe (0, 0) rgbaui (1, 2, 0, 0)
