glibc/sysdeps/sparc/sparc64/multiarch
Patrick McGehearty 1b6e07f8e0 sparc: M7 optimized memcpy/mempcpy/memmove
Support added to identify Sparc M7/T7/S7/M8/T8 processor capability.
Performance tests run on Sparc S7 using new code and old niagara4 code.

Optimizations for memcpy also apply to mempcpy and memmove
where they share code. Optimizations for memset also apply
to bzero as they share code.

For memcpy/mempcpy/memmove, performance comparison with niagara4 code:
Long word aligned data
  0-127 bytes - minimal changes
  128-1023 bytes - 7-30% gain
  1024+ bytes - 1-7% gain (in cache); 30-100% gain (out of cache)
Word aligned data
  0-127 bytes - 50%+ gain
  128-1023 bytes - 10-200% gain
  1024+ bytes - 0-15% gain (in cache); 5-50% gain (out of cache)
Unaligned data
  0-127 bytes - 0-70%+ gain
  128-447 bytes - 40-80%+ gain
  448-511 bytes - 1-3% loss
  512-4096 bytes - 2-3% gain (in cache); 0-20% gain (out of cache)
  4096+ bytes - ± 3% (in cache); 20-50% gain (out of cache)

Tested in sparcv9-*-* and sparc64-*-* targets in both multi and
non-multi arch configurations.

	Patrick McGehearty  <patrick.mcgehearty@oracle.com>
	Adhemerval Zanella  <adhemerval.zanella@linaro.org>

	* sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
	(sysdeps_routines): Add memcpy-memmove-niagara7 and memmove-ultra1.
	* sysdeps/sparc/sparc64/multiarch/Makefile (sysdeps_routines):
	Likewise.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/memcpy-memmove-niagara7.S:
	New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/memmove-ultra1.S: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/rtld-memmove.c: Likewise.
	* sysdeps/sparc/sparc64/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Add __memcpy_niagara7, __mempcpy_niagara7,
	and __memmove_niagara7.
	* sysdeps/sparc/sparc64/multiarch/ifunc-memcpy.h (IFUNC_SELECTOR):
	Add niagara7 option.
	* sysdeps/sparc/sparc64/multiarch/memmove.c: New file.
	* sysdeps/sparc/sparc64/multiarch/ifunc-memmove.h: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy-memmove-niagara7.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memmove-ultra1.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/rtld-memmove.c: Likewise.
2017-12-14 08:47:38 -02:00
..
add_n-generic.S sparc: refactor sparc64 __mpn_add_n selector to C 2017-11-30 14:10:28 -02:00
add_n-vis3.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
add_n.c sparc: refactor sparc64 __mpn_add_n selector to C 2017-11-30 14:10:28 -02:00
addmul_1-generic.S sparc: refactor sparc64 __mpn_addmul_1 selector to C 2017-11-30 14:10:20 -02:00
addmul_1-vis3.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
addmul_1.c sparc: refactor sparc64 __mpn_addmul_1 selector to C 2017-11-30 14:10:20 -02:00
bzero.c sparc: Implement memset/bzero ifunc selection in C 2017-11-28 08:53:15 -02:00
ifunc-impl-list.c sparc: M7 optimized memcpy/mempcpy/memmove 2017-12-14 08:47:38 -02:00
ifunc-memcpy.h sparc: M7 optimized memcpy/mempcpy/memmove 2017-12-14 08:47:38 -02:00
ifunc-memmove.h sparc: M7 optimized memcpy/mempcpy/memmove 2017-12-14 08:47:38 -02:00
ifunc-memset.h sparc: Implement memset/bzero ifunc selection in C 2017-11-28 08:53:15 -02:00
Makefile sparc: M7 optimized memcpy/mempcpy/memmove 2017-12-14 08:47:38 -02:00
md5-block.c Add support for sparc cryptographic hash opcodes. 2012-11-13 17:12:45 -08:00
md5-crop.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
memcpy-memmove-niagara7.S sparc: M7 optimized memcpy/mempcpy/memmove 2017-12-14 08:47:38 -02:00
memcpy-niagara1.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
memcpy-niagara2.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
memcpy-niagara4.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
memcpy-ultra1.S sparc: Implement memcpy/mempcpy ifunc selection in C 2017-11-28 08:53:15 -02:00
memcpy-ultra3.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
memcpy.c sparc: Implement memcpy/mempcpy ifunc selection in C 2017-11-28 08:53:15 -02:00
memmove-ultra1.S sparc: M7 optimized memcpy/mempcpy/memmove 2017-12-14 08:47:38 -02:00
memmove.c sparc: M7 optimized memcpy/mempcpy/memmove 2017-12-14 08:47:38 -02:00
mempcpy.c sparc: Implement memcpy/mempcpy ifunc selection in C 2017-11-28 08:53:15 -02:00
memset-niagara1.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
memset-niagara4.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
memset-ultra1.S sparc: Implement memset/bzero ifunc selection in C 2017-11-28 08:53:15 -02:00
memset.c sparc: Implement memset/bzero ifunc selection in C 2017-11-28 08:53:15 -02:00
mul_1-generic.S sparc: refactor sparc64 __mpn_mul_1 selector to C 2017-11-30 14:10:12 -02:00
mul_1-vis3.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mul_1.c sparc: refactor sparc64 __mpn_mul_1 selector to C 2017-11-30 14:10:12 -02:00
rtld-memcpy.c Use generic memset/memcpy in rtld on sparcv9/sparc64. 2012-03-28 22:22:15 -07:00
rtld-memmove.c sparc: M7 optimized memcpy/mempcpy/memmove 2017-12-14 08:47:38 -02:00
rtld-memset.c Use generic memset/memcpy in rtld on sparcv9/sparc64. 2012-03-28 22:22:15 -07:00
sha256-block.c crypt: Use internal names for the SHA-2 block functions 2016-10-28 21:49:21 +02:00
sha256-crop.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
sha512-block.c crypt: Use internal names for the SHA-2 block functions 2016-10-28 21:49:21 +02:00
sha512-crop.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
sub_n-generic.S sparc: refactor sparc64 __mpn_sub_n selector to C 2017-11-30 14:10:16 -02:00
sub_n-vis3.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
sub_n.c sparc: refactor sparc64 __mpn_sub_n selector to C 2017-11-30 14:10:16 -02:00
submul_1-generic.S sparc: refactor sparc64 __mpn_submul_1 selector to C 2017-11-30 14:10:25 -02:00
submul_1-vis3.S Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
submul_1.c sparc: refactor sparc64 __mpn_submul_1 selector to C 2017-11-30 14:10:25 -02:00