mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-16 07:49:43 +00:00
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
This commit is contained in:
parent
f965b46c8e
commit
65e3541b78
14
libclc/generic/lib/atom_int32_binary.inc
Normal file
14
libclc/generic/lib/atom_int32_binary.inc
Normal file
@ -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
|
@ -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"
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
#define __CLC_ATOMIC_OP and
|
||||
#define __CLC_ATOMIC_ADDRESS_SPACE global
|
||||
#include "../atom_int32_binary.inc"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
#define __CLC_ATOMIC_OP and
|
||||
#define __CLC_ATOMIC_ADDRESS_SPACE local
|
||||
#include "../atom_int32_binary.inc"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user