[require]
shader model >= 4.0

% The return semantic gets allocated before other output semantics.

[vertex shader]
// Output signature:
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SEMC                     0   x           0     NONE   float   x
// SEMA                     0    y          0     NONE   float    y
// SEMB                     0   x           1     NONE   float   x
// SEMB                     1   x           2     NONE   float   x
// SV_POSITION              0   xyzw        3      POS   float   xyzw

float main(float4 pos : POSITION, out float aa : SEMA,
        out float bb[2] : SEMB, out float4 out_pos : SV_POSITION) : SEMC
{
    out_pos = pos;
    aa = 100;
    bb[0] = 200;
    bb[1] = 201;
    return 300;
}

[pixel shader]
// Input signature:
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SEMC                     0   x           0     NONE   float   x
// SEMA                     0    y          0     NONE   float    y
// SEMB                     0   x           1     NONE   float   x
// SEMB                     1   x           2     NONE   float   x

float4 main(float cc : SEMC, float aa : SEMA, float bb[2] : SEMB) : sv_target
{
    return float4(cc, aa, bb[0], bb[1]);
}

[test]
bug(mvk & sm>=6 | msl & sm>=6) draw quad
probe (0, 0) f32(300, 100, 200, 201)
