71 unsigned long long int *ptr = (
unsigned long long int *) add;
72 unsigned long long int old = *ptr, reg;
76 old = atomicCAS(ptr, reg,
78 __float_as_int(val + __int_as_float(reg)));
80 __double_as_longlong(val + __longlong_as_double(reg)));
85 return __int_as_float(old);
87 return __longlong_as_double(old);