]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
memset replacement: unroll vectorised loops.
authorJulian Seward <jseward@acm.org>
Mon, 4 Apr 2016 12:33:35 +0000 (12:33 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 4 Apr 2016 12:33:35 +0000 (12:33 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15848

shared/vg_replace_strmem.c

index 8de085a57bcec79f0b90f25f66c37dd193f61ab8..f3be419421619b66e2d43dbfabb46bbbcb06e546 100644 (file)
@@ -1200,6 +1200,11 @@ static inline void my_exit ( int x )
          c8 = (c8 << 32) | c8; \
          while ((a & 7) != 0 && n >= 1) \
             { *(UChar*)a = (UChar)c; a += 1; n -= 1; } \
+         while (n >= 32) \
+            { *(ULong*)a = c8; a += 8; n -= 8;   \
+              *(ULong*)a = c8; a += 8; n -= 8;   \
+              *(ULong*)a = c8; a += 8; n -= 8;   \
+              *(ULong*)a = c8; a += 8; n -= 8; } \
          while (n >= 8) \
             { *(ULong*)a = c8; a += 8; n -= 8; } \
          while (n >= 1) \
@@ -1212,6 +1217,11 @@ static inline void my_exit ( int x )
          c4 = (c4 << 16) | c4; \
          while ((a & 3) != 0 && n >= 1) \
             { *(UChar*)a = (UChar)c; a += 1; n -= 1; } \
+         while (n >= 16) \
+            { *(UInt*)a = c4; a += 4; n -= 4;   \
+              *(UInt*)a = c4; a += 4; n -= 4;   \
+              *(UInt*)a = c4; a += 4; n -= 4;   \
+              *(UInt*)a = c4; a += 4; n -= 4; } \
          while (n >= 4) \
             { *(UInt*)a = c4; a += 4; n -= 4; } \
          while (n >= 1) \