blob: 67b6e9d17502929f9ff89323f14d36cc2f323173 [file] [log] [blame]
Peng Huangc00ff7f2023-03-31 17:55:19 +00001RWByteAddressBuffer sb_rw : register(u0);
Antonio Maiorano08f4b552022-05-31 13:20:28 +00002
Ben Clayton1a1b5272023-02-24 17:16:55 +00003int sb_rwatomicSub(uint offset, int value) {
James Pricef9d19712021-08-26 15:26:25 +00004 int original_value = 0;
Ben Clayton1a1b5272023-02-24 17:16:55 +00005 sb_rw.InterlockedAdd(offset, -value, original_value);
James Pricef9d19712021-08-26 15:26:25 +00006 return original_value;
7}
8
James Pricef9d19712021-08-26 15:26:25 +00009
Ben Clayton77a90cb2023-03-06 18:25:08 +000010RWByteAddressBuffer prevent_dce : register(u0, space2);
11
James Pricef9d19712021-08-26 15:26:25 +000012void atomicSub_051100() {
Ben Clayton1a1b5272023-02-24 17:16:55 +000013 int res = sb_rwatomicSub(0u, 1);
Ben Clayton77a90cb2023-03-06 18:25:08 +000014 prevent_dce.Store(0u, asuint(res));
James Pricef9d19712021-08-26 15:26:25 +000015}
16
17void fragment_main() {
18 atomicSub_051100();
19 return;
20}
21
22[numthreads(1, 1, 1)]
23void compute_main() {
24 atomicSub_051100();
25 return;
26}