restored nonptx atomic_*_local
This commit is contained in:
@@ -30,7 +30,13 @@ void countPass(
|
|||||||
if (reduce_equal(key, &skey) == true)
|
if (reduce_equal(key, &skey) == true)
|
||||||
counts[skey] += reduce_add(1);
|
counts[skey] += reduce_add(1);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
#ifdef __NVPTX__
|
||||||
|
atomic_add_global(&counts[key], 1);
|
||||||
|
#else
|
||||||
atomic_add_local(&counts[key], 1);
|
atomic_add_local(&counts[key], 1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -2088,11 +2088,20 @@ static inline TYPE atomic_##NAME##_local(uniform TYPE * uniform ptr, TYPE value)
|
|||||||
} \
|
} \
|
||||||
static inline TYPE atomic_##NAME##_local(uniform TYPE * p, TYPE value) { \
|
static inline TYPE atomic_##NAME##_local(uniform TYPE * p, TYPE value) { \
|
||||||
TYPE ret; \
|
TYPE ret; \
|
||||||
|
if (__is_nvptx_target) { \
|
||||||
foreach_active (i) { \
|
foreach_active (i) { \
|
||||||
uniform TYPE * uniform ptr = (uniform TYPE * uniform)extract((int64)p, i); \
|
uniform TYPE * uniform ptr = (uniform TYPE * uniform)extract((int64)p, i); \
|
||||||
ret = insert(ret, i, *ptr); \
|
ret = insert(ret, i, *ptr); \
|
||||||
*ptr = OPFUNC(*ptr, extract(value, i)); \
|
*ptr = OPFUNC(*ptr, extract(value, i)); \
|
||||||
} \
|
} \
|
||||||
|
} else { \
|
||||||
|
uniform TYPE * uniform ptrs[programCount]; \
|
||||||
|
ptrs[programIndex] = p; \
|
||||||
|
foreach_active (i) { \
|
||||||
|
ret = insert(ret, i, *ptrs[i]); \
|
||||||
|
*ptrs[i] = OPFUNC(*ptrs[i], extract(value, i)); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
return ret; \
|
return ret; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user