summaryrefslogtreecommitdiff
path: root/libclc/generic
diff options
context:
space:
mode:
authorJan Vesely <jan.vesely@rutgers.edu>2018-06-21 19:27:33 +0000
committerJan Vesely <jan.vesely@rutgers.edu>2018-06-21 19:27:33 +0000
commit65e3541b789a5e7513910dd706dd18412c8ced0f (patch)
treeb89110eb0110dc646f1c008235cdfe152486ef6f /libclc/generic
parentf965b46c8edfff3534958624b88f1dc9456b93b5 (diff)
downloadllvm-65e3541b789a5e7513910dd706dd18412c8ced0f.tar.gz
atom: Consolidate cl_khr_{local,global}_int32_{base,extended}_atomics implementation
These are just atomic_* wrappers. Switch inc, dec to use atomic_* wrappers as well. Reviewed-By: Aaron Watry <awatry@gmail.com> Tested-By: Aaron Watry <awatry@gmail.com> Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 335279
Diffstat (limited to 'libclc/generic')
-rw-r--r--libclc/generic/lib/atom_int32_binary.inc14
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl12
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl2
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl2
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl12
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl12
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl12
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl12
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl12
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl12
-rw-r--r--libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl12
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl12
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl2
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl2
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl12
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl12
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl12
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl12
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl12
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl12
-rw-r--r--libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl12
21 files changed, 66 insertions, 148 deletions
diff --git a/libclc/generic/lib/atom_int32_binary.inc b/libclc/generic/lib/atom_int32_binary.inc
new file mode 100644
index 000000000000..185144c71c10
--- /dev/null
+++ b/libclc/generic/lib/atom_int32_binary.inc
@@ -0,0 +1,14 @@
+#include <clc/clc.h>
+#include "utils.h"
+
+#define __CLC_ATOM_IMPL(AS, TYPE) \
+_CLC_OVERLOAD _CLC_DEF TYPE __CLC_XCONCAT(atom_, __CLC_ATOMIC_OP) (AS TYPE *p, TYPE val) { \
+ return __CLC_XCONCAT(atomic_, __CLC_ATOMIC_OP) (p, val); \
+}
+
+__CLC_ATOM_IMPL(__CLC_ATOMIC_ADDRESS_SPACE, int)
+__CLC_ATOM_IMPL(__CLC_ATOMIC_ADDRESS_SPACE, uint)
+
+#undef __CLC_ATOM_IMPL
+#undef __CLC_ATOMIC_OP
+#undef __CLC_ATOMIC_ADDRESS_SPACE
diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl
index 9151b0ccf8d9..69f1875877e8 100644
--- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_add(global TYPE *p, TYPE val) { \
- return atomic_add(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP add
+#define __CLC_ATOMIC_ADDRESS_SPACE global
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl
index cc24d2f3de0f..290bec20e477 100644
--- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl
@@ -2,7 +2,7 @@
#define IMPL(TYPE) \
_CLC_OVERLOAD _CLC_DEF TYPE atom_dec(global TYPE *p) { \
- return atom_sub(p, (TYPE)1); \
+ return atomic_dec(p); \
}
IMPL(int)
diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl
index 9193ae3a6bee..422bb785291d 100644
--- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl
@@ -2,7 +2,7 @@
#define IMPL(TYPE) \
_CLC_OVERLOAD _CLC_DEF TYPE atom_inc(global TYPE *p) { \
- return atom_add(p, (TYPE)1); \
+ return atomic_inc(p); \
}
IMPL(int)
diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl
index 7faa3cc040f0..e3ca9350b8d2 100644
--- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_sub(global TYPE *p, TYPE val) { \
- return atomic_sub(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP sub
+#define __CLC_ATOMIC_ADDRESS_SPACE global
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl
index 9c77db13f309..3389c86c3721 100644
--- a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_xchg(global TYPE *p, TYPE val) { \
- return atomic_xchg(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP xchg
+#define __CLC_ATOMIC_ADDRESS_SPACE global
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl
index e58796961b98..da002d50a771 100644
--- a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_and(global TYPE *p, TYPE val) { \
- return atomic_and(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int) \ No newline at end of file
+#define __CLC_ATOMIC_OP and
+#define __CLC_ATOMIC_ADDRESS_SPACE global
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl
index 09177ed8eef4..9b7975f4282b 100644
--- a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_max(global TYPE *p, TYPE val) { \
- return atomic_max(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP max
+#define __CLC_ATOMIC_ADDRESS_SPACE global
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl
index 277c41ba90dc..04b5f754eb2c 100644
--- a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_min(global TYPE *p, TYPE val) { \
- return atomic_min(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP min
+#define __CLC_ATOMIC_ADDRESS_SPACE global
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl
index a936a8ea7d31..dbf4e15f6587 100644
--- a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_or(global TYPE *p, TYPE val) { \
- return atomic_or(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP or
+#define __CLC_ATOMIC_ADDRESS_SPACE global
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl
index 1a8e35004cd5..40a403d35ff9 100644
--- a/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl
+++ b/libclc/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_xor(global TYPE *p, TYPE val) { \
- return atomic_xor(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP xor
+#define __CLC_ATOMIC_ADDRESS_SPACE global
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl
index a5dea1824a16..55dd78cc2ddd 100644
--- a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_add(local TYPE *p, TYPE val) { \
- return atomic_add(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP add
+#define __CLC_ATOMIC_ADDRESS_SPACE local
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl
index cfb3d8090707..d708a6d39427 100644
--- a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl
@@ -2,7 +2,7 @@
#define IMPL(TYPE) \
_CLC_OVERLOAD _CLC_DEF TYPE atom_dec(local TYPE *p) { \
- return atom_sub(p, (TYPE)1); \
+ return atomic_dec(p); \
}
IMPL(int)
diff --git a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl
index 8ea473847e96..8878673d65d5 100644
--- a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl
@@ -2,7 +2,7 @@
#define IMPL(TYPE) \
_CLC_OVERLOAD _CLC_DEF TYPE atom_inc(local TYPE *p) { \
- return atom_add(p, (TYPE)1); \
+ return atomic_inc(p); \
}
IMPL(int)
diff --git a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl
index c96696ac2084..c0af3344b836 100644
--- a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_sub(local TYPE *p, TYPE val) { \
- return atomic_sub(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP sub
+#define __CLC_ATOMIC_ADDRESS_SPACE local
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl
index 7d4bcca3fe7a..71200687c64e 100644
--- a/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_xchg(local TYPE *p, TYPE val) { \
- return atomic_xchg(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP xchg
+#define __CLC_ATOMIC_ADDRESS_SPACE local
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl
index 180103acc01e..62b6ae79cfb0 100644
--- a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_and(local TYPE *p, TYPE val) { \
- return atomic_and(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int) \ No newline at end of file
+#define __CLC_ATOMIC_OP and
+#define __CLC_ATOMIC_ADDRESS_SPACE local
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl
index b90301ba0f76..8f03b9dfb2ff 100644
--- a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_max(local TYPE *p, TYPE val) { \
- return atomic_max(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP max
+#define __CLC_ATOMIC_ADDRESS_SPACE local
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl
index 3acedd8350fc..59a3252c29ec 100644
--- a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_min(local TYPE *p, TYPE val) { \
- return atomic_min(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP min
+#define __CLC_ATOMIC_ADDRESS_SPACE local
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl
index 338ff2c01088..8ea408eaa7b6 100644
--- a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_or(local TYPE *p, TYPE val) { \
- return atomic_or(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP or
+#define __CLC_ATOMIC_ADDRESS_SPACE local
+#include "../atom_int32_binary.inc"
diff --git a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl
index 51ae3c0e9194..8c286627b0f6 100644
--- a/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl
+++ b/libclc/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl
@@ -1,9 +1,3 @@
-#include <clc/clc.h>
-
-#define IMPL(TYPE) \
-_CLC_OVERLOAD _CLC_DEF TYPE atom_xor(local TYPE *p, TYPE val) { \
- return atomic_xor(p, val); \
-}
-
-IMPL(int)
-IMPL(unsigned int)
+#define __CLC_ATOMIC_OP xor
+#define __CLC_ATOMIC_ADDRESS_SPACE local
+#include "../atom_int32_binary.inc"