glibc/sysdeps/x86_64/multiarch/wcsrchr-evex512.S
Sunil K Pandey faaf733f49 x86_64: Implement evex512 version of strrchr and wcsrchr
Changes from v1:
  Use vec api for register.
  Replace VPCMP with VPCMPEQ
  Restructure and remove 1 unconditional jump.
  Change page cross logic to use sall.

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.

- strrchr function using 512 bit vectors.
- wcsrchr function using 512 bit vectors.

Code size data:

strrchr-evex.o		879 byte
strrchr-evex512.o	601 byte (-32%)

wcsrchr-evex.o		882 byte
wcsrchr-evex512.o	572 byte (-35%)

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

Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
2022-11-03 15:51:52 -07:00

14 lines
218 B
ArmAsm

#ifndef WCSRCHR
# define WCSRCHR __wcsrchr_evex512
#endif
#define STRRCHR WCSRCHR
#define USE_AS_WCSRCHR 1
#define USE_WIDE_CHAR 1
#include "x86-evex512-vecs.h"
#include "reg-macros.h"
#include "strrchr-evex512.S"