mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
S390: Optimize strchrnul and wcschrnul.
This patch provides optimized versions of strchrnul and wcschrnul with the z13 vector instructions. ChangeLog: * sysdeps/s390/multiarch/strchrnul-c.c: New File. * sysdeps/s390/multiarch/strchrnul-vx.S: Likewise. * sysdeps/s390/multiarch/strchrnul.c: Likewise. * sysdeps/s390/multiarch/wcschrnul-c.c: Likewise. * sysdeps/s390/multiarch/wcschrnul-vx.S: Likewise. * sysdeps/s390/multiarch/wcschrnul.c: Likewise. * sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strchrnul and wcschrnul functions. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc test for strchrnul, wcschrnul. * wcsmbs/wcschrnul.c: Use WCSCHRNUL if defined. * string/test-strchr.c: Add wcschrnul support. * wcsmbs/test-wcschrnul.c: New File. * wcsmbs/Makefile (strop-tests): Add wcschrnul. * benchtests/bench-strchr.c: Add wcschrnul support. * benchtests/bench-wcschrnul.c: New File. * benchtests/Makefile (wcsmbs-bench): Add wcschrnul.
This commit is contained in:
committed by
Andreas Krebbel
parent
cf150d45a9
commit
d23d4ef19f
@ -1,4 +1,4 @@
|
||||
/* Test and measure STRCHR functions.
|
||||
/* Test STRCHR functions.
|
||||
Copyright (C) 1999-2015 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Jakub Jelinek <jakub@redhat.com>, 1999.
|
||||
@ -24,10 +24,14 @@
|
||||
# define TEST_NAME "strchrnul"
|
||||
# else
|
||||
# define TEST_NAME "strchr"
|
||||
# endif
|
||||
# endif /* !USE_FOR_STRCHRNUL */
|
||||
#else
|
||||
# define TEST_NAME "wcschr"
|
||||
#endif
|
||||
# ifdef USE_FOR_STRCHRNUL
|
||||
# define TEST_NAME "wcschrnul"
|
||||
# else
|
||||
# define TEST_NAME "wcschr"
|
||||
# endif /* !USE_FOR_STRCHRNUL */
|
||||
#endif /* WIDE */
|
||||
#include "test-string.h"
|
||||
|
||||
#ifndef WIDE
|
||||
@ -37,7 +41,7 @@
|
||||
# define simple_STRCHR simple_STRCHRNUL
|
||||
# else
|
||||
# define STRCHR strchr
|
||||
# endif
|
||||
# endif /* !USE_FOR_STRCHRNUL */
|
||||
# define STRLEN strlen
|
||||
# define CHAR char
|
||||
# define BIG_CHAR CHAR_MAX
|
||||
@ -47,7 +51,13 @@
|
||||
# define L(s) s
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# define STRCHR wcschr
|
||||
# ifdef USE_FOR_STRCHRNUL
|
||||
# define STRCHR wcschrnul
|
||||
# define stupid_STRCHR stupid_WCSCHRNUL
|
||||
# define simple_STRCHR simple_WCSCHRNUL
|
||||
# else
|
||||
# define STRCHR wcschr
|
||||
# endif /* !USE_FOR_STRCHRNUL */
|
||||
# define STRLEN wcslen
|
||||
# define CHAR wchar_t
|
||||
# define BIG_CHAR WCHAR_MAX
|
||||
@ -55,13 +65,13 @@
|
||||
# define SMALL_CHAR 851
|
||||
# define UCHAR wchar_t
|
||||
# define L(s) L ## s
|
||||
#endif
|
||||
#endif /* WIDE */
|
||||
|
||||
#ifdef USE_FOR_STRCHRNUL
|
||||
# define NULLRET(endptr) endptr
|
||||
#else
|
||||
# define NULLRET(endptr) NULL
|
||||
#endif
|
||||
#endif /* !USE_FOR_STRCHRNUL */
|
||||
|
||||
|
||||
typedef CHAR *(*proto_t) (const CHAR *, int);
|
||||
|
Reference in New Issue
Block a user