X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Fmemcpy_sse3.h;h=f61396c892208c1b816f188d0c5bcc78568061b7;hb=d630713d733718701f38176f98d563fd32679d06;hp=4fc48c86c8b18fb6b000cd784526cd5d40d636dc;hpb=658efd2fc986bca88336569b2e6fa8b537a660d8;p=vpp.git diff --git a/src/vppinfra/memcpy_sse3.h b/src/vppinfra/memcpy_sse3.h index 4fc48c86c8b..f61396c8922 100644 --- a/src/vppinfra/memcpy_sse3.h +++ b/src/vppinfra/memcpy_sse3.h @@ -51,19 +51,20 @@ #include #include -typedef u8 u8x16u __attribute__ ((vector_size (16), aligned (1))); -typedef u8 u8x32u __attribute__ ((vector_size (32), aligned (1))); - static inline void clib_mov16 (u8 * dst, const u8 * src) { - *(u8x16u *) dst = *(u8x16u *) src; + __m128i xmm0; + + xmm0 = _mm_loadu_si128 ((const __m128i *) src); + _mm_storeu_si128 ((__m128i *) dst, xmm0); } static inline void clib_mov32 (u8 * dst, const u8 * src) { - *(u8x32u *) dst = *(u8x32u *) src; + clib_mov16 ((u8 *) dst + 0 * 16, (const u8 *) src + 0 * 16); + clib_mov16 ((u8 *) dst + 1 * 16, (const u8 *) src + 1 * 16); } static inline void