Browse Source

Reverted lace.h back to find the regression.

Former-commit-id: 03d4d796f3
tempestpy_adaptions
PBerger 8 years ago
parent
commit
fb4bfd724d
  1. 49
      resources/3rdparty/sylvan/src/lace.h

49
resources/3rdparty/sylvan/src/lace.h

@ -66,7 +66,6 @@ extern "C" {
#define PAD(x,b) ( ( (b) - ((x)%(b)) ) & ((b)-1) ) /* b must be power of 2 */ #define PAD(x,b) ( ( (b) - ((x)%(b)) ) & ((b)-1) ) /* b must be power of 2 */
#define ROUND(x,b) ( (x) + PAD( (x), (b) ) ) #define ROUND(x,b) ( (x) + PAD( (x), (b) ) )
#define MINONE(x) ((x < 1) ? (1) : (x))
/* The size is in bytes. Note that this is without the extra overhead from Lace. /* The size is in bytes. Note that this is without the extra overhead from Lace.
The value must be greater than or equal to the maximum size of your tasks. The value must be greater than or equal to the maximum size of your tasks.
@ -184,7 +183,7 @@ struct __lace_common_fields_only { TASK_COMMON_FIELDS(_Task) };
typedef struct _Task { typedef struct _Task {
TASK_COMMON_FIELDS(_Task); TASK_COMMON_FIELDS(_Task);
char p1[MINONE(PAD(LACE_COMMON_FIELD_SIZE, P_SZ))];
char p1[PAD(LACE_COMMON_FIELD_SIZE, P_SZ)];
char d[LACE_TASKSIZE]; char d[LACE_TASKSIZE];
char p2[PAD(ROUND(LACE_COMMON_FIELD_SIZE, P_SZ) + LACE_TASKSIZE, LINE_SIZE)]; char p2[PAD(ROUND(LACE_COMMON_FIELD_SIZE, P_SZ) + LACE_TASKSIZE, LINE_SIZE)];
} Task; } Task;
@ -227,7 +226,7 @@ typedef struct _WorkerP {
uint32_t seed; // my random seed (for lace_steal_random) uint32_t seed; // my random seed (for lace_steal_random)
} WorkerP; } WorkerP;
#define LACE_TYPEDEF_CB(t, f, ...) typedef t (*f)(WorkerP *, Task *, ##__VA_ARGS__)
#define LACE_TYPEDEF_CB(t, f, ...) typedef t (*f)(WorkerP *, Task *, ##__VA_ARGS__);
LACE_TYPEDEF_CB(void, lace_startup_cb, void*); LACE_TYPEDEF_CB(void, lace_startup_cb, void*);
/** /**
@ -649,8 +648,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head )
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head+1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -762,7 +760,7 @@ RTYPE NAME##_CALL(WorkerP *w, Task *__dq_head )
static inline __attribute__((always_inline)) \ static inline __attribute__((always_inline)) \
RTYPE NAME##_WORK(WorkerP *__lace_worker __attribute__((unused)), Task *__lace_dq_head __attribute__((unused)) )\ RTYPE NAME##_WORK(WorkerP *__lace_worker __attribute__((unused)), Task *__lace_dq_head __attribute__((unused)) )\
#define TASK_0(RTYPE, NAME) TASK_DECL_0(RTYPE, NAME); TASK_IMPL_0(RTYPE, NAME)
#define TASK_0(RTYPE, NAME) TASK_DECL_0(RTYPE, NAME) TASK_IMPL_0(RTYPE, NAME)
#define VOID_TASK_DECL_0(NAME) \ #define VOID_TASK_DECL_0(NAME) \
\ \
@ -800,8 +798,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head )
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -954,8 +951,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1)
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -1105,8 +1101,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1)
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -1259,8 +1254,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2)
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -1410,8 +1404,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2)
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -1564,8 +1557,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2, AT
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -1715,8 +1707,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2, AT
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -1869,8 +1860,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2, AT
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -2020,8 +2010,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2, AT
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -2174,8 +2163,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2, AT
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -2325,8 +2313,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2, AT
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -2479,8 +2466,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2, AT
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \
@ -2630,8 +2616,7 @@ void NAME##_SPAWN(WorkerP *w, Task *__dq_head , ATYPE_1 arg_1, ATYPE_2 arg_2, AT
if (unlikely(w->allstolen)) { \ if (unlikely(w->allstolen)) { \
if (wt->movesplit) wt->movesplit = 0; \ if (wt->movesplit) wt->movesplit = 0; \
head = __dq_head - w->dq; \ head = __dq_head - w->dq; \
ts.ts.tail = head; \
ts.ts.split = head + 1; \
ts = (TailSplit){{head,head+1}}; \
wt->ts.v = ts.v; \ wt->ts.v = ts.v; \
compiler_barrier(); \ compiler_barrier(); \
wt->allstolen = 0; \ wt->allstolen = 0; \

Loading…
Cancel
Save