[libc] Remove special case for 8 and 16 bytes
authorGuillaume Chatelet <gchatelet@google.com>
Tue, 15 Sep 2020 20:48:08 +0000 (20:48 +0000)
committerGuillaume Chatelet <gchatelet@google.com>
Tue, 15 Sep 2020 20:48:27 +0000 (20:48 +0000)
They don't seem to gain much in real apps and its better to favor less branches and smaller code.

libc/src/string/memcpy.cpp
libc/src/string/x86/memcpy.cpp

index a805671..00d66ea 100644 (file)
@@ -44,12 +44,8 @@ static void memcpy_impl(char *__restrict dst, const char *__restrict src,
     return CopyBlock<4>(dst, src);
   if (count < 8)
     return CopyBlockOverlap<4>(dst, src, count);
-  if (count == 8)
-    return CopyBlock<8>(dst, src);
   if (count < 16)
     return CopyBlockOverlap<8>(dst, src, count);
-  if (count == 16)
-    return CopyBlock<16>(dst, src);
   if (count < 32)
     return CopyBlockOverlap<16>(dst, src, count);
   if (count < 64)
index 811ce51..2e2148e 100644 (file)
@@ -59,12 +59,8 @@ static void memcpy_x86(char *__restrict dst, const char *__restrict src,
     return CopyBlock<4>(dst, src);
   if (count < 8)
     return CopyBlockOverlap<4>(dst, src, count);
-  if (count == 8)
-    return CopyBlock<8>(dst, src);
   if (count < 16)
     return CopyBlockOverlap<8>(dst, src, count);
-  if (count == 16)
-    return CopyBlock<16>(dst, src);
   if (count < 32)
     return CopyBlockOverlap<16>(dst, src, count);
   if (count < 64)