vppinfra: fix issue when copying 16 bytes with clib_memcpy 79/5579/2
authorDamjan Marion <damarion@cisco.com>
Wed, 1 Mar 2017 19:53:59 +0000 (20:53 +0100)
committerOle Trøan <otroan@employees.org>
Wed, 1 Mar 2017 21:38:04 +0000 (21:38 +0000)
Current code wos copying same data twice when length is 16.

Change-Id: I8d935b32f61672aaea9789c097a5083ae8f78cdd
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vppinfra/memcpy_avx.h
src/vppinfra/memcpy_sse3.h

index e3feb76..d95bbad 100644 (file)
@@ -185,6 +185,11 @@ clib_memcpy (void *dst, const void *src, size_t n)
        /**
          * Fast way when copy size doesn't exceed 512 bytes
          */
+  if (n == 16)
+    {
+      clib_mov16 ((u8 *) dst, (const u8 *) src);
+      return ret;
+    }
   if (n <= 32)
     {
       clib_mov16 ((u8 *) dst, (const u8 *) src);
index 4fc48c8..49baf5e 100644 (file)
@@ -224,6 +224,11 @@ clib_memcpy (void *dst, const void *src, size_t n)
        /**
         * Fast way when copy size doesn't exceed 512 bytes
         */
+  if (n == 16)
+    {
+      clib_mov16 ((u8 *) dst, (const u8 *) src);
+      return ret;
+    }
   if (n <= 32)
     {
       clib_mov16 ((u8 *) dst, (const u8 *) src);