[require]
shader model >= 6.0
wave-ops
format r32g32b32a32-sint uav-load

[uav 0]
format r32g32b32a32-sint
size (buffer, 4)

-3 1 -4 2
 3 1 -4 2
 0 5 -3 2
-1 1 -1 2

[uav 1]
format r32g32b32a32-sint
size (buffer, 4)

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

[compute shader]
RWBuffer<int4> u0;
RWBuffer<int4> u1;

    [numthreads(4, 1, 1)]
void main(uint id : SV_GroupIndex)
{
    u1[id] = WaveActiveMin(u0[id]);
}

[test]
dispatch 4 1 1
probe uav 1 (0) i32(-3, 1, -4, 2)
probe uav 1 (1) i32(-3, 1, -4, 2)
probe uav 1 (2) i32(-3, 1, -4, 2)
probe uav 1 (3) i32(-3, 1, -4, 2)


[compute shader]
RWBuffer<int4> u0;
RWBuffer<int4> u1;

    [numthreads(4, 1, 1)]
void main(uint id : SV_GroupIndex)
{
    u1[id] = WaveActiveMax(u0[id]);
}

[test]
dispatch 4 1 1
probe uav 1 (0) i32(3, 5, -1, 2)
probe uav 1 (1) i32(3, 5, -1, 2)
probe uav 1 (2) i32(3, 5, -1, 2)
probe uav 1 (3) i32(3, 5, -1, 2)


[require]
shader model >= 6.0
wave-ops
int64
format r32g32b32a32-sint uav-load

[uav 0]
format r32g32b32a32-sint
size (buffer, 4)

-3 -1 -4 2
 3  1 -4 2
 0  5 -3 2
-1 -1 -1 2

[uav 1]
format r32g32b32a32-sint
size (buffer, 16)

0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

[compute shader]
RWBuffer<int64_t2> u0;
RWBuffer<int64_t2> u1;

    [numthreads(4, 1, 1)]
void main(uint id : SV_GroupIndex)
{
    u1[id] = WaveActiveMin(u0[id]);
}

[test]
bug(mvk) dispatch 4 1 1
probe uav 1 (0) i32(-3, -1, -4, 2)
probe uav 1 (1) i32(-3, -1, -4, 2)
probe uav 1 (2) i32(-3, -1, -4, 2)
probe uav 1 (3) i32(-3, -1, -4, 2)


[compute shader]
RWBuffer<int64_t2> u0;
RWBuffer<int64_t2> u1;

    [numthreads(4, 1, 1)]
void main(uint id : SV_GroupIndex)
{
    u1[id] = WaveActiveMax(u0[id]);
}

[test]
bug(mvk) dispatch 4 1 1
probe uav 1 (0) i32(0, 5, -1, 2)
probe uav 1 (1) i32(0, 5, -1, 2)
probe uav 1 (2) i32(0, 5, -1, 2)
probe uav 1 (3) i32(0, 5, -1, 2)
