mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 22:40:05 +00:00
x86: Add missing IS_IN (libc) check to strcspn-sse4.c
Was missing to for the multiarch build rtld-strcspn-sse4.os was
being built and exporting symbols:
build/glibc/string/rtld-strcspn-sse4.os:
U ___m128i_shift_right
U __strcspn_generic
0000000000000000 T __strcspn_sse42
U strlen
build/glibc/string/rtld-varshift.os:
0000000000000000 R ___m128i_shift_right
Introduced in:
commit 06e51c8f3d
Author: H.J. Lu <hongjiu.lu@intel.com>
Date: Fri Jul 3 02:48:56 2009 -0700
Add SSE4.2 support for strcspn, strpbrk, and strspn on x86-64.
This commit is contained in:
parent
8cfbbbcdf9
commit
0aa294fb88
@ -16,9 +16,11 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <nmmintrin.h>
|
||||
#include <string.h>
|
||||
#include "varshift.h"
|
||||
#if IS_IN (libc)
|
||||
|
||||
# include <nmmintrin.h>
|
||||
# include <string.h>
|
||||
# include "varshift.h"
|
||||
|
||||
/* We use 0x2:
|
||||
_SIDD_SBYTE_OPS
|
||||
@ -52,31 +54,31 @@
|
||||
when either CFlag or ZFlag is 1. If CFlag == 1, ECX has the offset
|
||||
X for case 1. */
|
||||
|
||||
#ifndef STRCSPN_GENERIC
|
||||
# define STRCSPN_GENERIC __strcspn_generic
|
||||
# define STRCSPN_SSE42 __strcspn_sse42
|
||||
#endif
|
||||
# ifndef STRCSPN_GENERIC
|
||||
# define STRCSPN_GENERIC __strcspn_generic
|
||||
# define STRCSPN_SSE42 __strcspn_sse42
|
||||
# endif
|
||||
|
||||
#ifdef USE_AS_STRPBRK
|
||||
# define RETURN(val1, val2) return val1
|
||||
#else
|
||||
# define RETURN(val1, val2) return val2
|
||||
#endif
|
||||
# ifdef USE_AS_STRPBRK
|
||||
# define RETURN(val1, val2) return val1
|
||||
# else
|
||||
# define RETURN(val1, val2) return val2
|
||||
# endif
|
||||
|
||||
extern
|
||||
#ifdef USE_AS_STRPBRK
|
||||
# ifdef USE_AS_STRPBRK
|
||||
char *
|
||||
#else
|
||||
# else
|
||||
size_t
|
||||
#endif
|
||||
# endif
|
||||
STRCSPN_GENERIC (const char *, const char *) attribute_hidden;
|
||||
|
||||
|
||||
#ifdef USE_AS_STRPBRK
|
||||
# ifdef USE_AS_STRPBRK
|
||||
char *
|
||||
#else
|
||||
# else
|
||||
size_t
|
||||
#endif
|
||||
# endif
|
||||
__attribute__ ((section (".text.sse4.2")))
|
||||
STRCSPN_SSE42 (const char *s, const char *a)
|
||||
{
|
||||
@ -161,3 +163,4 @@ start_loop:
|
||||
aligned += 16;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -16,7 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stdint.h>
|
||||
#if IS_IN (libc)
|
||||
# include <stdint.h>
|
||||
|
||||
const int8_t ___m128i_shift_right[31] attribute_hidden
|
||||
__attribute__((aligned(32))) =
|
||||
@ -24,3 +25,5 @@ const int8_t ___m128i_shift_right[31] attribute_hidden
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user