This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Rename __memcmp_sse4_2 to __memcmp_sse4_1.


It uses SSE 4.1 instructions (ptest) but no SSE 4.2 instructions.

2013-07-09  Matt Turner  <mattst88@gmail.com>

	* sysdeps/i386/i686/multiarch/ifunc-impl-list.c: Rename
	  __memcmp_sse4_2 to __memcmp_sse4_1 and add to ifunc when
	  HAS_SSE4_1.  Rename __wmemcmp_sse4_2 to __wmemcmp_sse4_1 and
	  add to ifunc when HAS_SSE4_1.
	* sysdeps/i386/i686/multiarch/memcmp-sse4.S (__memcmp_sse4_2):
	  Rename to __memcmp_sse4_1.  Put in .text.sse4.1 rather than
	  .text.sse4.2.
	* sysdeps/i386/i686/multiarch/memcmp.S: Test bit_SSE4_1 for
	  __memcmp_sse4_1.
	* sysdeps/i386/i686/multiarch/wmemcmp-sse4.S: Rename
	  __wmemcmp_sse4_2 to __wmemcmp_sse4_1.
	* sysdeps/i386/i686/multiarch/wmemcmp.S: Rename __wmemcmp_sse4_2
	  to __wmemcmp_sse4_1.  Test bit_SSE4_1 for __wmemcmp_sse4_1.
---
 sysdeps/i386/i686/multiarch/ifunc-impl-list.c | 8 ++++----
 sysdeps/i386/i686/multiarch/memcmp-sse4.S     | 8 ++++----
 sysdeps/i386/i686/multiarch/memcmp.S          | 8 ++++----
 sysdeps/i386/i686/multiarch/wmemcmp-sse4.S    | 2 +-
 sysdeps/i386/i686/multiarch/wmemcmp.S         | 4 ++--
 5 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/sysdeps/i386/i686/multiarch/ifunc-impl-list.c b/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
index 2c282bd..eea27f1 100644
--- a/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
+++ b/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
@@ -58,8 +58,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
 
   /* Support sysdeps/i386/i686/multiarch/memcmp.S.  */
   IFUNC_IMPL (i, name, memcmp,
-	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSE4_2,
-			      __memcmp_sse4_2)
+	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSE4_1,
+			      __memcmp_sse4_1)
 	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSSE3, __memcmp_ssse3)
 	      IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_ia32))
 
@@ -266,8 +266,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
 
   /* Support sysdeps/i386/i686/multiarch/wmemcmp.S.  */
   IFUNC_IMPL (i, name, wmemcmp,
-	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSE4_2,
-			      __wmemcmp_sse4_2)
+	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSE4_1,
+			      __wmemcmp_sse4_1)
 	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSSE3,
 			      __wmemcmp_ssse3)
 	      IFUNC_IMPL_ADD (array, i, wmemcmp, 1, __wmemcmp_ia32))
diff --git a/sysdeps/i386/i686/multiarch/memcmp-sse4.S b/sysdeps/i386/i686/multiarch/memcmp-sse4.S
index 14226f5..2b529fc 100644
--- a/sysdeps/i386/i686/multiarch/memcmp-sse4.S
+++ b/sysdeps/i386/i686/multiarch/memcmp-sse4.S
@@ -1,4 +1,4 @@
-/* memcmp with SSE4.2, wmemcmp with SSE4.2
+/* memcmp with SSE4.1, wmemcmp with SSE4.1
    Copyright (C) 2010-2013 Free Software Foundation, Inc.
    Contributed by Intel Corporation.
    This file is part of the GNU C Library.
@@ -22,7 +22,7 @@
 # include <sysdep.h>
 
 # ifndef MEMCMP
-#  define MEMCMP	__memcmp_sse4_2
+#  define MEMCMP	__memcmp_sse4_1
 # endif
 
 # define CFI_PUSH(REG)	\
@@ -76,7 +76,7 @@
            memcmp has to use UNSIGNED comparison for elemnts.
 */
 
-	.section .text.sse4.2,"ax",@progbits
+	.section .text.sse4.1,"ax",@progbits
 ENTRY (MEMCMP)
 	movl	BLK1(%esp), %eax
 	movl	BLK2(%esp), %edx
@@ -1084,7 +1084,7 @@ L(bigger):
 # endif
 END (MEMCMP)
 
-	.section .rodata.sse4.2,"a",@progbits
+	.section .rodata.sse4.1,"a",@progbits
 	.p2align 2
 	.type	L(table_64bytes), @object
 # ifndef USE_AS_WMEMCMP
diff --git a/sysdeps/i386/i686/multiarch/memcmp.S b/sysdeps/i386/i686/multiarch/memcmp.S
index 73d1363..c005bc2 100644
--- a/sysdeps/i386/i686/multiarch/memcmp.S
+++ b/sysdeps/i386/i686/multiarch/memcmp.S
@@ -38,9 +38,9 @@ ENTRY(memcmp)
 	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
 	jz	2f
 	leal	__memcmp_ssse3@GOTOFF(%ebx), %eax
-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
+	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1+__cpu_features@GOTOFF(%ebx)
 	jz	2f
-	leal	__memcmp_sse4_2@GOTOFF(%ebx), %eax
+	leal	__memcmp_sse4_1@GOTOFF(%ebx), %eax
 2:	popl	%ebx
 	cfi_adjust_cfa_offset (-4)
 	cfi_restore (ebx)
@@ -57,9 +57,9 @@ ENTRY(memcmp)
 	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
 	jz	2f
 	leal	__memcmp_ssse3, %eax
-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1+__cpu_features
 	jz	2f
-	leal	__memcmp_sse4_2, %eax
+	leal	__memcmp_sse4_1, %eax
 2:	ret
 END(memcmp)
 # endif
diff --git a/sysdeps/i386/i686/multiarch/wmemcmp-sse4.S b/sysdeps/i386/i686/multiarch/wmemcmp-sse4.S
index 1a857c7..b07973a 100644
--- a/sysdeps/i386/i686/multiarch/wmemcmp-sse4.S
+++ b/sysdeps/i386/i686/multiarch/wmemcmp-sse4.S
@@ -1,4 +1,4 @@
 #define USE_AS_WMEMCMP 1
-#define MEMCMP __wmemcmp_sse4_2
+#define MEMCMP __wmemcmp_sse4_1
 
 #include "memcmp-sse4.S"
diff --git a/sysdeps/i386/i686/multiarch/wmemcmp.S b/sysdeps/i386/i686/multiarch/wmemcmp.S
index e994038..91363dc 100644
--- a/sysdeps/i386/i686/multiarch/wmemcmp.S
+++ b/sysdeps/i386/i686/multiarch/wmemcmp.S
@@ -38,9 +38,9 @@ ENTRY(wmemcmp)
 	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
 	jz	2f
 	leal	__wmemcmp_ssse3@GOTOFF(%ebx), %eax
-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
+	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1+__cpu_features@GOTOFF(%ebx)
 	jz	2f
-	leal	__wmemcmp_sse4_2@GOTOFF(%ebx), %eax
+	leal	__wmemcmp_sse4_1@GOTOFF(%ebx), %eax
 2:	popl	%ebx
 	cfi_adjust_cfa_offset (-4)
 	cfi_restore (ebx)
-- 
1.8.1.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]