SWDEV-293408 Add atomicInc_system and atomicDec_system

- Also revise the implementation of atomicInc/atomicDec based on clang
  builtins.

Change-Id: Ia5e06e88c7be1da5f8fc7ac70037a120c604e343
This commit is contained in:
Michael LIAO authored and Michael Hong Bin Liao committed 2021-07-08 11:42:16 -04:00
1 parent 52bc5d7d1f
commit 45205c5e53
1 file changed
+15 -21
+15 -21
View File
@@ -281,34 +281,28 @@ __device__
inline
unsigned int atomicInc(unsigned int* address, unsigned int val)
{
__device__
extern
unsigned int __builtin_amdgcn_atomic_inc(
unsigned int*,
unsigned int,
unsigned int,
unsigned int,
bool) __asm("llvm.amdgcn.atomic.inc.i32.p0i32");
return __builtin_amdgcn_atomic_inc(
address, val, __ATOMIC_RELAXED, 1 /* Device scope */, false);
return __builtin_amdgcn_atomic_inc32(address, val, __ATOMIC_RELAXED, "agent");
}
__device__
inline
unsigned int atomicDec(unsigned int* address, unsigned int val)
{
__device__
extern
unsigned int __builtin_amdgcn_atomic_dec(
unsigned int*,
unsigned int,
unsigned int,
unsigned int,
bool) __asm("llvm.amdgcn.atomic.dec.i32.p0i32");
return __builtin_amdgcn_atomic_dec32(address, val, __ATOMIC_RELAXED, "agent");
}
return __builtin_amdgcn_atomic_dec(
address, val, __ATOMIC_RELAXED, 1 /* Device scope */, false);
__device__
inline
unsigned int atomicInc_system(unsigned int* address, unsigned int val)
{
return __builtin_amdgcn_atomic_inc32(address, val, __ATOMIC_RELAXED, "one-as");
}
__device__
inline
unsigned int atomicDec_system(unsigned int* address, unsigned int val)
{
return __builtin_amdgcn_atomic_dec32(address, val, __ATOMIC_RELAXED, "one-as");
}
__device__