i686: Skip SSE4_2 version for strcmp, strncmp, strncase, strcasecmp
authorLiubov Dmitrieva <ldmitrie@sourceware.org>
Wed, 21 Aug 2013 14:24:44 +0000 (18:24 +0400)
committerLiubov Dmitrieva <ldmitrie@sourceware.org>
Wed, 21 Aug 2013 14:25:08 +0000 (18:25 +0400)
if bit_Slow_SSE4_2 is set.

ChangeLog
sysdeps/i386/i686/multiarch/strcasecmp.S
sysdeps/i386/i686/multiarch/strcmp.S
sysdeps/i386/i686/multiarch/strncase.S

index 5340c40..a875ac3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-08-21  Liubov Dmitrieva  <liubov.dmitrieva@intel.com>
+
+       * sysdeps/i386/i686/multiarch/strcmp.S: Skip SSE4_2
+       version if bit_Slow_SSE4_2 is set.
+       * sysdeps/i386/i686/multiarch/strncase.S: Likewise.
+       * sysdeps/i386/i686/multiarch/strcasecmp.S: Likewise.
+
 2013-07-23  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
        [BZ #15867]
index 2444af2..25de4da 100644 (file)
@@ -37,6 +37,8 @@ ENTRY(__strcasecmp)
        leal    __strcasecmp_ssse3@GOTOFF(%ebx), %eax
        testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
        jz      2f
+       testl   $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
+       jnz     2f
        leal    __strcasecmp_sse4_2@GOTOFF(%ebx), %eax
 2:     popl    %ebx
        cfi_adjust_cfa_offset (-4)
@@ -56,6 +58,8 @@ ENTRY(__strcasecmp)
        leal    __strcasecmp_ssse3, %eax
        testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
        jz      2f
+       testl   $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features
+       jnz     2f
        leal    __strcasecmp_sse4_2, %eax
 2:     ret
 END(__strcasecmp)
index 7dc2cef..41dd3b3 100644 (file)
@@ -68,6 +68,8 @@ ENTRY(STRCMP)
        leal    __STRCMP_SSSE3@GOTOFF(%ebx), %eax
        testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
        jz      2f
+       testl   $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
+       jnz     2f
        leal    __STRCMP_SSE4_2@GOTOFF(%ebx), %eax
 2:     popl    %ebx
        cfi_adjust_cfa_offset (-4)
@@ -87,6 +89,8 @@ ENTRY(STRCMP)
        leal    __STRCMP_SSSE3, %eax
        testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
        jz      2f
+       testl   $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features
+       jnz     2f
        leal    __STRCMP_SSE4_2, %eax
 2:     ret
 END(STRCMP)
index 939cd96..de97e1b 100644 (file)
@@ -37,6 +37,8 @@ ENTRY(__strncasecmp)
        leal    __strncasecmp_ssse3@GOTOFF(%ebx), %eax
        testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
        jz      2f
+       testl   $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
+       jnz     2f
        leal    __strncasecmp_sse4_2@GOTOFF(%ebx), %eax
 2:     popl    %ebx
        cfi_adjust_cfa_offset (-4)
@@ -56,6 +58,8 @@ ENTRY(__strncasecmp)
        leal    __strncasecmp_ssse3, %eax
        testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
        jz      2f
+       testl   $bit_Slow_SSE4_2, CPUID_OFFSET+index_Slow_SSE4_2+__cpu_features
+       jnz     2f
        leal    __strncasecmp_sse4_2, %eax
 2:     ret
 END(__strncasecmp)