PATCH: Improve 32 bit memchr, memrchr, rawmemchr with SSE2

Dmitrieva Liubov liubov.dmitrieva@gmail.com
Mon Sep 12 16:02:00 GMT 2011


Hello,

This patch improves memchr, rawmemchr, memrchr functions for all
architectures with SSE2 support.

For example, it improves performance:

-- for memchr
---- by up to 7X on atom, up to 9X on core7.

-- for memrchr
---- by up to 9X on atom, up to 11X on core7.

-- for rawmemchr
---- by up to 7X on atom, up to 9X on core7.

"Make check" was run successfully on my atom and core2 machines, I
built rpms and checked them as well.

ChangeLog:

2011-08-25  Liubov Dmitrieva  <liubov.dmitrieva@gmail.com>

	* sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
	memchr-sse2 memchr-sse2-bsf memchr-c
	memrchr-sse2 memrchr-sse2-bsf memrchr-c
	rawmemchr-sse2 rawmemchr-sse2-bsf rawmemchr-c

	* sysdeps/i386/i686/multiarch/memchr.S: New file.
	* sysdeps/i386/i686/multiarch/memchr-c.c: New file.
	* sysdeps/i386/i686/multiarch/memchr-sse2.S: New file.
	* sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S: New file.

	* sysdeps/i386/i686/multiarch/memrchr.S: New file.
	* sysdeps/i386/i686/multiarch/memrchr-c.c: New file.
	* sysdeps/i386/i686/multiarch/memrchr-sse2.S: New file.
	* sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S: New file.

	* sysdeps/i386/i686/multiarch/rawmemchr.S: New file.
	* sysdeps/i386/i686/multiarch/rawmemchr-c.c: New file.
	* sysdeps/i386/i686/multiarch/rawmemchr-sse2.S: New file.
	* sysdeps/i386/i686/multiarch/rawmemchr-sse2-bsf.S: New file.

	* string/memchr.c
	(MEMCHR): New macro.
	* string/memrchr.c
	(MEMRCHR): New macro.
	* string/rawmemchr.c
	(RAWMEMCHR): New macro.


--
Liubov Dmitrieva
Software engineer
Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: memchr_family_32.patch
Type: application/octet-stream
Size: 52050 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20110912/732de6ed/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ChangeLog.memchr_family_32
Type: application/octet-stream
Size: 1060 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20110912/732de6ed/attachment-0001.obj>


More information about the Libc-alpha mailing list