diff --git a/hipamd/docs/markdown/hip_kernel_language.md b/hipamd/docs/markdown/hip_kernel_language.md index e7a6baa1a9..582cb8788a 100644 --- a/hipamd/docs/markdown/hip_kernel_language.md +++ b/hipamd/docs/markdown/hip_kernel_language.md @@ -435,8 +435,8 @@ HIP supports the following atomic operations. | int atomicMax(int* address, int val) | ✓ | ✓ | | unsigned int atomicMax(unsigned int* address,unsigned int val) | ✓ | ✓ | | unsigned long long int atomicMax(unsigned long long int* address,unsigned long long int val) | ✓ | ✓ | -| unsigned int atomicInc(unsigned int* address)| ✓
Takes one argument. | ✓
Wrapping increment,takes two arguments. | -| unsigned int atomicDec(unsigned int* address)| ✓
Takes one argument. | ✓
Wrapping decrement,takes two arguments. | +| unsigned int atomicInc(unsigned int* address)| ✗ | ✓ | +| unsigned int atomicDec(unsigned int* address)| ✗ | ✓ | | int atomicCAS(int* address, int compare, int val) | ✓ | ✓ | | unsigned int atomicCAS(unsigned int* address,unsigned int compare,unsigned int val) | ✓ | ✓ | | unsigned long long int atomicCAS(unsigned long long int* address,unsigned long long int compare,unsigned long long int val) | ✓ | ✓ | diff --git a/hipamd/include/hcc_detail/hip_runtime.h b/hipamd/include/hcc_detail/hip_runtime.h index d7e4cba328..8474f066df 100644 --- a/hipamd/include/hcc_detail/hip_runtime.h +++ b/hipamd/include/hcc_detail/hip_runtime.h @@ -195,18 +195,6 @@ __device__ inline unsigned long long int atomicMax(unsigned long long int* addre return (long long int)hc::atomic_fetch_max((uint64_t*)address,(uint64_t)val); } -//atomicInc() -__device__ inline unsigned int atomicInc(unsigned int* address) -{ - return hc::atomic_fetch_inc(address); -} - -//atomicDec() -__device__ inline unsigned int atomicDec(unsigned int* address) -{ - return hc::atomic_fetch_dec(address); -} - //atomicCAS() __device__ inline int atomicCAS(int* address, int compare, int val) { @@ -318,17 +306,17 @@ __device__ inline unsigned int __ffsll(unsigned long long int input) return hc::__lastbit_u32_u64( input)+1; } -__device__ inline unsigned int __ffs(int input) +__device__ inline unsigned int __ffs(int input) { return hc::__lastbit_u32_s32( input)+1; } -__device__ inline unsigned int __ffsll(long long int input) +__device__ inline unsigned int __ffsll(long long int input) { return hc::__lastbit_u32_s64( input)+1; } -__device__ inline unsigned int __brev( unsigned int input) +__device__ inline unsigned int __brev( unsigned int input) { return hc::__bitrev_b32( input); } @@ -339,59 +327,59 @@ __device__ inline unsigned long long int __brevll( unsigned long long int input) } // warp vote function __all __any __ballot -__device__ inline int __all( int input) +__device__ inline int __all( int input) { return hc::__all( input); } -__device__ inline int __any( int input) +__device__ inline int __any( int input) { if( hc::__any( input)!=0) return 1; else return 0; } -__device__ inline unsigned long long int __ballot( int input) +__device__ inline unsigned long long int __ballot( int input) { return hc::__ballot( input); } // warp shuffle functions -__device__ inline int __shfl(int input, int lane, int width) +__device__ inline int __shfl(int input, int lane, int width) { return hc::__shfl(input,lane,width); } -__device__ inline int __shfl_up(int input, unsigned int lane_delta, int width) +__device__ inline int __shfl_up(int input, unsigned int lane_delta, int width) { return hc::__shfl_up(input,lane_delta,width); } -__device__ inline int __shfl_down(int input, unsigned int lane_delta, int width) +__device__ inline int __shfl_down(int input, unsigned int lane_delta, int width) { return hc::__shfl_down(input,lane_delta,width); } -__device__ inline int __shfl_xor(int input, int lane_mask, int width) +__device__ inline int __shfl_xor(int input, int lane_mask, int width) { return hc::__shfl_xor(input,lane_mask,width); } -__device__ inline float __shfl(float input, int lane, int width) +__device__ inline float __shfl(float input, int lane, int width) { return hc::__shfl(input,lane,width); } -__device__ inline float __shfl_up(float input, unsigned int lane_delta, int width) +__device__ inline float __shfl_up(float input, unsigned int lane_delta, int width) { return hc::__shfl_up(input,lane_delta,width); } -__device__ inline float __shfl_down(float input, unsigned int lane_delta, int width) +__device__ inline float __shfl_down(float input, unsigned int lane_delta, int width) { return hc::__shfl_down(input,lane_delta,width); } -__device__ inline float __shfl_xor(float input, int lane_mask, int width) +__device__ inline float __shfl_xor(float input, int lane_mask, int width) { return hc::__shfl_xor(input,lane_mask,width); }