about summary refs log tree commit diff
path: root/sysdeps/x86_64/multiarch/memchr-evex512.S
diff options
context:
space:
mode:
authorSunil K Pandey <skpgkp2@gmail.com>2022-08-18 06:48:07 -0700
committerSunil K Pandey <skpgkp2@gmail.com>2022-10-18 13:26:33 -0700
commit451c6e58540e8571e31581c04c4829e5d2cfe8ac (patch)
tree4016d09705d0bee74009c8cb00113296ea9c2ddc /sysdeps/x86_64/multiarch/memchr-evex512.S
parent932dd83efdce7dbe7c008a27c4eff424a109b3a0 (diff)
downloadglibc-451c6e58540e8571e31581c04c4829e5d2cfe8ac.tar.gz
glibc-451c6e58540e8571e31581c04c4829e5d2cfe8ac.tar.xz
glibc-451c6e58540e8571e31581c04c4829e5d2cfe8ac.zip
x86_64: Implement evex512 version of memchr, rawmemchr and wmemchr
This patch implements following evex512 version of string functions.
evex512 version takes up to 30% less cycle as compared to evex,
depending on length and alignment.

- memchr function using 512 bit vectors.
- rawmemchr function using 512 bit vectors.
- wmemchr function using 512 bit vectors.

Code size data:

memchr-evex.o		762 byte
memchr-evex512.o	576 byte (-24%)

rawmemchr-evex.o	461 byte
rawmemchr-evex512.o	412 byte (-11%)

wmemchr-evex.o		794 byte
wmemchr-evex512.o	552 byte (-30%)

Placeholder function, not used by any processor at the moment.

Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
Diffstat (limited to 'sysdeps/x86_64/multiarch/memchr-evex512.S')
-rw-r--r--sysdeps/x86_64/multiarch/memchr-evex512.S8
1 files changed, 8 insertions, 0 deletions
diff --git a/sysdeps/x86_64/multiarch/memchr-evex512.S b/sysdeps/x86_64/multiarch/memchr-evex512.S
new file mode 100644
index 0000000000..002f8c8489
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/memchr-evex512.S
@@ -0,0 +1,8 @@
+# ifndef MEMCHR
+#  define MEMCHR       __memchr_evex512
+# endif
+
+#include "x86-evex512-vecs.h"
+#include "reg-macros.h"
+
+#include "memchr-evex-base.S"