  template <typename T> inline T atomic_fetch_sub(     volatile T* const dest,     typename std::enable_if<sizeof(T) == sizeof(int), const T>::type val) {   union U {     int i;     T t;     KOKKOS_INLINE_FUNCTION U() {}   } oldval, assume, newval;  #if defined(KOKKOS_ENABLE_RFO_PREFETCH)   _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif    oldval.t = *dest;    do {     assume.i = oldval.i;     newval.t = assume.t - val;     oldval.i = __sync_val_compare_and_swap((int*)dest, assume.i, newval.i);   } while (assume.i != oldval.i);    return oldval.t; }  template <typename T> inline T atomic_fetch_sub(volatile T* const dest,                  