
31 Mar
2010
31 Mar
'10
9:55 p.m.
static inline atomic64_t load64( atomic64_t volatile const * pMem ) { // Atomically loads 64bit value by SSE intrinsics __m128i v = _mm_loadl_epi64( (__m128i const * __restrict) pMem ) ; return v.m128i_i64[0] ; }
are you sure, that _mm_loadl_epi64 is actually atomic in your case? according to the intel manual, the value should be 64bit aligned or should not cross a cache line boundary. are you sure, that this cannot occur? cheers, tim -- tim@klingt.org http://tim.klingt.org The price an artist pays for doing what he wants is that he has to do it. William S. Burroughs