RWByteAddressBuffer sbuf; float4 main(uint pos : FOO) : SV_Target0 { uint u; sbuf.InterlockedAdd(8, 1); sbuf.InterlockedAdd(8, 1, u); sbuf.InterlockedAnd(8, 1); sbuf.InterlockedAnd(8, 1, u); sbuf.InterlockedCompareExchange(8, 1, 2, u); // sbuf.InterlockedCompareStore(8, 1, 2); // TODO: ... sbuf.InterlockedExchange(8, 1, u); sbuf.InterlockedMax(8, 1); sbuf.InterlockedMax(8, 1, u); sbuf.InterlockedMin(8, 1); sbuf.InterlockedMin(8, 1, u); sbuf.InterlockedOr(8, 1); sbuf.InterlockedOr(8, 1, u); sbuf.InterlockedXor(8, 1); sbuf.InterlockedXor(8, 1, u); return sbuf.Load(pos); }