1
2RWByteAddressBuffer sbuf;
3
4float4 main(uint pos : FOO) : SV_Target0
5{
6    uint u;
7
8    sbuf.InterlockedAdd(8, 1);
9    sbuf.InterlockedAdd(8, 1, u);
10    sbuf.InterlockedAnd(8, 1);
11    sbuf.InterlockedAnd(8, 1, u);
12    sbuf.InterlockedCompareExchange(8, 1, 2, u);
13    // sbuf.InterlockedCompareStore(8, 1, 2); // TODO: ...
14    sbuf.InterlockedExchange(8, 1, u);
15    sbuf.InterlockedMax(8, 1);
16    sbuf.InterlockedMax(8, 1, u);
17    sbuf.InterlockedMin(8, 1);
18    sbuf.InterlockedMin(8, 1, u);
19    sbuf.InterlockedOr(8, 1);
20    sbuf.InterlockedOr(8, 1, u);
21    sbuf.InterlockedXor(8, 1);
22    sbuf.InterlockedXor(8, 1, u);
23
24    return sbuf.Load(pos);
25}
26