diff options
author | Aaron Watry <awatry@gmail.com> | 2013-09-06 20:20:21 +0000 |
---|---|---|
committer | Aaron Watry <awatry@gmail.com> | 2013-09-06 20:20:21 +0000 |
commit | 283e3fa011e8052d91a41a59248a045b6b9a5c1f (patch) | |
tree | 88fd47094a1f98048978c0533c678be8f37b53ce | |
parent | 372cecf642365c1c49ff00938231585f17fea90e (diff) | |
download | bcm5719-llvm-283e3fa011e8052d91a41a59248a045b6b9a5c1f.tar.gz bcm5719-llvm-283e3fa011e8052d91a41a59248a045b6b9a5c1f.zip |
Add atomic_sub and atomic_dec builtin functions
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 190201
-rw-r--r-- | libclc/generic/include/clc/atomic/atomic_dec.h | 1 | ||||
-rw-r--r-- | libclc/generic/include/clc/atomic/atomic_sub.h | 3 | ||||
-rw-r--r-- | libclc/generic/include/clc/clc.h | 2 | ||||
-rw-r--r-- | libclc/generic/lib/atomic/atomic_impl.ll | 12 | ||||
-rw-r--r-- | libclc/r600/lib/atomic/atomic.cl | 1 |
5 files changed, 19 insertions, 0 deletions
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 00000000000..621905f21d3 --- /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 00000000000..576a3ab1f39 --- /dev/null +++ b/libclc/generic/include/clc/atomic/atomic_sub.h @@ -0,0 +1,3 @@ +#define __CLC_FUNCTION atomic_sub +#include <clc/atomic/atomic_decl.inc> +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index 105180e12e7..aeb39493332 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 <clc/atomic/atomic_add.h> +#include <clc/atomic/atomic_dec.h> #include <clc/atomic/atomic_inc.h> +#include <clc/atomic/atomic_sub.h> #pragma OPENCL EXTENSION all : disable diff --git a/libclc/generic/lib/atomic/atomic_impl.ll b/libclc/generic/lib/atomic/atomic_impl.ll index c11383be983..9df5b9f3c55 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 e80180ca535..bd5ee649917 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) |