RWByteAddressBuffer sb_rw : register(u0); struct atomic_compare_exchange_weak_ret_type { int old_value; bool exchanged; }; atomic_compare_exchange_weak_ret_type sb_rwatomicCompareExchangeWeak(uint offset, int compare, int value) { atomic_compare_exchange_weak_ret_type result=(atomic_compare_exchange_weak_ret_type)0; sb_rw.InterlockedCompareExchange(offset, compare, value, result.old_value); result.exchanged = result.old_value == compare; return result; } void atomicCompareExchangeWeak_1bd40a() { atomic_compare_exchange_weak_ret_type res = sb_rwatomicCompareExchangeWeak(0u, 1, 1); } void fragment_main() { atomicCompareExchangeWeak_1bd40a(); return; } [numthreads(1, 1, 1)] void compute_main() { atomicCompareExchangeWeak_1bd40a(); return; }