72 unsigned long long int *ptr = (
unsigned long long int *) add;
73 unsigned long long int old = *ptr, reg;
77 old = atomicCAS(ptr, reg,
79 __float_as_int(val + __int_as_float(reg)));
81 __double_as_longlong(val + __longlong_as_double(reg)));
86 return __int_as_float(old);
88 return __longlong_as_double(old);