From: Aaron Watry Date: Fri, 6 Sep 2013 20:20:21 +0000 (+0000) Subject: Add atomic_sub and atomic_dec builtin functions X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=283e3fa011e8052d91a41a59248a045b6b9a5c1f;p=platform%2Fupstream%2Fllvm.git Add atomic_sub and atomic_dec builtin functions Reviewed-by: Tom Stellard llvm-svn: 190201 --- diff --git a/libclc/generic/include/clc/atomic/atomic_dec.h b/libclc/generic/include/clc/atomic/atomic_dec.h new file mode 100644 index 0000000..621905f --- /dev/null +++ b/libclc/generic/include/clc/atomic/atomic_dec.h @@ -0,0 +1 @@ +#define atomic_dec(p) atomic_sub(p, 1); diff --git a/libclc/generic/include/clc/atomic/atomic_sub.h b/libclc/generic/include/clc/atomic/atomic_sub.h new file mode 100644 index 0000000..576a3ab --- /dev/null +++ b/libclc/generic/include/clc/atomic/atomic_sub.h @@ -0,0 +1,3 @@ +#define __CLC_FUNCTION atomic_sub +#include +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index 105180e..aeb3949 100644 --- a/libclc/generic/include/clc/clc.h +++ b/libclc/generic/include/clc/clc.h @@ -101,6 +101,8 @@ /* 6.11.11 Atomic Functins */ #include +#include #include +#include #pragma OPENCL EXTENSION all : disable diff --git a/libclc/generic/lib/atomic/atomic_impl.ll b/libclc/generic/lib/atomic/atomic_impl.ll index c11383b..9df5b9f3 100644 --- a/libclc/generic/lib/atomic/atomic_impl.ll +++ b/libclc/generic/lib/atomic/atomic_impl.ll @@ -9,3 +9,15 @@ entry: %0 = atomicrmw volatile add i32 addrspace(3)* %ptr, i32 %value seq_cst ret i32 %0 } + +define i32 @__clc_atomic_sub_addr1(i32 addrspace(1)* nocapture %ptr, i32 %value) nounwind alwaysinline { +entry: + %0 = atomicrmw volatile sub i32 addrspace(1)* %ptr, i32 %value seq_cst + ret i32 %0 +} + +define i32 @__clc_atomic_sub_addr3(i32 addrspace(3)* nocapture %ptr, i32 %value) nounwind alwaysinline { +entry: + %0 = atomicrmw volatile sub i32 addrspace(3)* %ptr, i32 %value seq_cst + ret i32 %0 +} diff --git a/libclc/r600/lib/atomic/atomic.cl b/libclc/r600/lib/atomic/atomic.cl index e80180c..bd5ee64 100644 --- a/libclc/r600/lib/atomic/atomic.cl +++ b/libclc/r600/lib/atomic/atomic.cl @@ -18,3 +18,4 @@ _CLC_OVERLOAD _CLC_DEF SIGN TYPE FUNCTION (volatile CL_ADDRSPACE SIGN TYPE *p, S ATOMIC_FUNC_ADDRSPACE(int, FUNCTION) ATOMIC_FUNC(atomic_add) +ATOMIC_FUNC(atomic_sub)