diff options
author | Ondřej Bílka <neleai@seznam.cz> | 2013-09-03 16:21:38 +0200 |
---|---|---|
committer | Ondřej Bílka <neleai@seznam.cz> | 2013-09-03 16:27:10 +0200 |
commit | 8f02859f17d01ce0cf542d934a04a79f048b73fd (patch) | |
tree | 2173f12761daf5f4df32efeb9217bba4f980712c /sysdeps/x86_64/multiarch/strcmp.S | |
parent | d34202f67408b3a6363d8d5a9ef78ae8a264d03f (diff) | |
download | glibc-8f02859f17d01ce0cf542d934a04a79f048b73fd.tar glibc-8f02859f17d01ce0cf542d934a04a79f048b73fd.tar.gz glibc-8f02859f17d01ce0cf542d934a04a79f048b73fd.tar.bz2 glibc-8f02859f17d01ce0cf542d934a04a79f048b73fd.zip |
Add unaligned strcmp.
Diffstat (limited to 'sysdeps/x86_64/multiarch/strcmp.S')
-rw-r--r-- | sysdeps/x86_64/multiarch/strcmp.S | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdeps/x86_64/multiarch/strcmp.S b/sysdeps/x86_64/multiarch/strcmp.S index 1d4d711838..c5dcd1aa5e 100644 --- a/sysdeps/x86_64/multiarch/strcmp.S +++ b/sysdeps/x86_64/multiarch/strcmp.S @@ -66,6 +66,7 @@ # define STRCMP_SSE2 __strncasecmp_l_sse2 # define __GI_STRCMP __GI___strncasecmp_l #else +# define USE_AS_STRCMP # define UPDATE_STRNCMP_COUNTER # ifndef STRCMP # define STRCMP strcmp @@ -88,11 +89,17 @@ ENTRY(STRCMP) jne 1f call __init_cpu_features 1: +#ifdef USE_AS_STRCMP + leaq __strcmp_sse2_unaligned(%rip), %rax + testl $bit_Fast_Unaligned_Load, __cpu_features+CPUID_OFFSET+index_Fast_Unaligned_Load(%rip) + jnz 3f +#else testl $bit_Slow_SSE4_2, __cpu_features+CPUID_OFFSET+index_Slow_SSE4_2(%rip) jnz 2f leaq STRCMP_SSE42(%rip), %rax testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) jnz 3f +#endif 2: leaq STRCMP_SSSE3(%rip), %rax testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) jnz 3f |