Loongarch: Add ifunc support for memcpy{aligned, unaligned, lsx, lasx} and memmove...
commit8944ba483f9215a4606430b7717f056049863032
authordengjianbo <dengjianbo@loongson.cn>
Tue, 15 Aug 2023 01:11:53 +0000 (15 09:11 +0800)
committercaiyinyu <caiyinyu@loongson.cn>
Thu, 17 Aug 2023 02:12:18 +0000 (17 10:12 +0800)
tree9e5653e5b91867324debc700740aa0b1da6c9b3f
parentba67bc8e0a682d98583975b4d3896c5d5fbd33d2
Loongarch: Add ifunc support for memcpy{aligned, unaligned, lsx, lasx} and memmove{aligned, unaligned, lsx, lasx}

These implementations improve the time to copy data in the glibc
microbenchmark as below:
memcpy-lasx       reduces the runtime about 8%-76%
memcpy-lsx        reduces the runtime about 8%-72%
memcpy-unaligned  reduces the runtime of unaligned data copying up to 40%
memcpy-aligned    reduece the runtime of unaligned data copying up to 25%
memmove-lasx      reduces the runtime about 20%-73%
memmove-lsx       reduces the runtime about 50%
memmove-unaligned reduces the runtime of unaligned data moving up to 40%
memmove-aligned   reduces the runtime of unaligned data moving up to 25%
13 files changed:
sysdeps/loongarch/lp64/multiarch/Makefile
sysdeps/loongarch/lp64/multiarch/ifunc-impl-list.c
sysdeps/loongarch/lp64/multiarch/ifunc-lasx.h [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memcpy-aligned.S [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memcpy-lasx.S [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memcpy-lsx.S [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memcpy-unaligned.S [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memcpy.c [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memmove-aligned.S [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memmove-lasx.S [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memmove-lsx.S [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memmove-unaligned.S [new file with mode: 0644]
sysdeps/loongarch/lp64/multiarch/memmove.c [new file with mode: 0644]