Author: sewardj Date: 2008-02-08 00:29:35 +0000 (Fri, 08 Feb 2008) New Revision: 7381
Log: Vectorise VG_(memset): it's increasingly popular, and poking bytes into memory one at a time really isn't where it's at. Modified: branches/DATASYMS/coregrind/m_libcbase.c Modified: branches/DATASYMS/coregrind/m_libcbase.c =================================================================== --- branches/DATASYMS/coregrind/m_libcbase.c 2008-02-07 12:31:07 UTC (rev 7380) +++ branches/DATASYMS/coregrind/m_libcbase.c 2008-02-08 00:29:35 UTC (rev 7381) @@ -519,23 +519,39 @@ return dest; } -void* VG_(memset) ( void *dest, Int c, SizeT sz ) +void* VG_(memset) ( void *destV, Int c, SizeT sz ) { - Char *d = (Char *)dest; + Int c4; + Char* d = (Char*)destV; + while ((!VG_IS_4_ALIGNED(d)) && sz >= 1) { + d[0] = c; + d++; + sz--; + } + if (sz == 0) + return destV; + c4 = c & 0xFF; + c4 |= (c4 << 8); + c4 |= (c4 << 16); + while (sz >= 16) { + ((Int*)d)[0] = c4; + ((Int*)d)[1] = c4; + ((Int*)d)[2] = c4; + ((Int*)d)[3] = c4; + d += 16; + sz -= 16; + } while (sz >= 4) { - d[0] = c; - d[1] = c; - d[2] = c; - d[3] = c; + ((Int*)d)[0] = c4; d += 4; sz -= 4; } - while (sz > 0) { + while (sz >= 1) { d[0] = c; d++; sz--; } - return dest; + return destV; } Int VG_(memcmp) ( const void* s1, const void* s2, SizeT n ) ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Valgrind-developers mailing list Valgrind-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-developers