diff options
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 00000000000..185144c71c1 --- /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 9151b0ccf8d..69f1875877e 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 cc24d2f3de0..290bec20e47 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 9193ae3a6be..422bb785291 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 7faa3cc040f..e3ca9350b8d 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 9c77db13f30..3389c86c372 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 e58796961b9..da002d50a77 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 09177ed8eef..9b7975f4282 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 277c41ba90d..04b5f754eb2 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 a936a8ea7d3..dbf4e15f658 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 1a8e35004cd..40a403d35ff 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 a5dea1824a1..55dd78cc2dd 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 cfb3d809070..d708a6d3942 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 8ea473847e9..8878673d65d 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 c96696ac208..c0af3344b83 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 7d4bcca3fe7..71200687c64 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 180103acc01..62b6ae79cfb 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 b90301ba0f7..8f03b9dfb2f 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 3acedd8350f..59a3252c29e 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 338ff2c0108..8ea408eaa7b 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 51ae3c0e919..8c286627b0f 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" |