about summary refs log tree commit diff
path: root/sysdeps/i386/i686/memcmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/i686/memcmp.S')
-rw-r--r--sysdeps/i386/i686/memcmp.S408
1 files changed, 0 insertions, 408 deletions
diff --git a/sysdeps/i386/i686/memcmp.S b/sysdeps/i386/i686/memcmp.S
deleted file mode 100644
index 5140ee2145..0000000000
--- a/sysdeps/i386/i686/memcmp.S
+++ /dev/null
@@ -1,408 +0,0 @@
-/* Compare two memory blocks for differences in the first COUNT bytes.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include "asm-syntax.h"
-
-#define PARMS		4+4	/* Preserve EBX.  */
-#define BLK1		PARMS
-#define BLK2		BLK1+4
-#define LEN		BLK2+4
-#define ENTRANCE	pushl %ebx; cfi_adjust_cfa_offset (4); \
-			cfi_rel_offset (ebx, 0)
-#define RETURN		popl %ebx; cfi_adjust_cfa_offset (-4); \
-			cfi_restore (ebx); ret
-
-/* Load an entry in a jump table into EBX.  TABLE is a jump table
-   with relative offsets.  INDEX is a register contains the index
-   into the jump table.  */
-#define LOAD_JUMP_TABLE_ENTRY(TABLE, INDEX) \
-  /* We first load PC into EBX.  */					      \
-  SETUP_PIC_REG(bx);							      \
-  /* Get the address of the jump table.  */				      \
-  addl	$(TABLE - .), %ebx;						      \
-  /* Get the entry and convert the relative offset to the		      \
-     absolute address.  */						      \
-  addl	(%ebx,INDEX,4), %ebx
-
-        .text
-	ALIGN (4)
-ENTRY (memcmp)
-	ENTRANCE
-
-	movl	BLK1(%esp), %eax
-	movl	BLK2(%esp), %edx
-	movl	LEN(%esp), %ecx
-
-	cmpl 	$1, %ecx
-	jne	L(not_1)
-	movzbl	(%eax), %ecx		/* LEN == 1  */
-	cmpb	(%edx), %cl
-	jne	L(neq)
-L(bye):
-	xorl	%eax, %eax
-	RETURN
-
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (ebx, 0)
-L(neq):
-	sbbl	%eax, %eax
-	sbbl	$-1, %eax
-	RETURN
-
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (ebx, 0)
-L(not_1):
-	jl	L(bye)			/* LEN == 0  */
-
-	pushl	%esi
-	cfi_adjust_cfa_offset (4)
-	movl	%eax, %esi
-	cfi_rel_offset (esi, 0)
-	cmpl	$32, %ecx;
-	jge	L(32bytesormore)	/* LEN => 32  */
-
-	LOAD_JUMP_TABLE_ENTRY (L(table_32bytes), %ecx)
-	addl	%ecx, %edx
-	addl	%ecx, %esi
-	jmp	*%ebx
-
-	ALIGN (4)
-L(28bytes):
-	movl	-28(%esi), %eax
-	movl	-28(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(24bytes):
-	movl	-24(%esi), %eax
-	movl	-24(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(20bytes):
-	movl	-20(%esi), %eax
-	movl	-20(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(16bytes):
-	movl	-16(%esi), %eax
-	movl	-16(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(12bytes):
-	movl	-12(%esi), %eax
-	movl	-12(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(8bytes):
-	movl	-8(%esi), %eax
-	movl	-8(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(4bytes):
-	movl	-4(%esi), %eax
-	movl	-4(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(0bytes):
-	popl	%esi
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (esi)
-	xorl	%eax, %eax
-	RETURN
-
-	cfi_adjust_cfa_offset (8)
-	cfi_rel_offset (esi, 0)
-	cfi_rel_offset (ebx, 4)
-L(29bytes):
-	movl	-29(%esi), %eax
-	movl	-29(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(25bytes):
-	movl	-25(%esi), %eax
-	movl	-25(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(21bytes):
-	movl	-21(%esi), %eax
-	movl	-21(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(17bytes):
-	movl	-17(%esi), %eax
-	movl	-17(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(13bytes):
-	movl	-13(%esi), %eax
-	movl	-13(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(9bytes):
-	movl	-9(%esi), %eax
-	movl	-9(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(5bytes):
-	movl	-5(%esi), %eax
-	movl	-5(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(1bytes):
-	movzbl	-1(%esi), %eax
-	cmpb	-1(%edx), %al
-	jne	L(set)
-	popl	%esi
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (esi)
-	xorl	%eax, %eax
-	RETURN
-
-	cfi_adjust_cfa_offset (8)
-	cfi_rel_offset (esi, 0)
-	cfi_rel_offset (ebx, 4)
-L(30bytes):
-	movl	-30(%esi), %eax
-	movl	-30(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(26bytes):
-	movl	-26(%esi), %eax
-	movl	-26(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(22bytes):
-	movl	-22(%esi), %eax
-	movl	-22(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(18bytes):
-	movl	-18(%esi), %eax
-	movl	-18(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(14bytes):
-	movl	-14(%esi), %eax
-	movl	-14(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(10bytes):
-	movl	-10(%esi), %eax
-	movl	-10(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(6bytes):
-	movl	-6(%esi), %eax
-	movl	-6(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(2bytes):
-	movzwl	-2(%esi), %eax
-	movzwl	-2(%edx), %ecx
-	cmpb	%cl, %al
-	jne	L(set)
-	cmpl	%ecx, %eax
-	jne	L(set)
-	popl	%esi
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (esi)
-	xorl	%eax, %eax
-	RETURN
-
-	cfi_adjust_cfa_offset (8)
-	cfi_rel_offset (esi, 0)
-	cfi_rel_offset (ebx, 4)
-L(31bytes):
-	movl	-31(%esi), %eax
-	movl	-31(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(27bytes):
-	movl	-27(%esi), %eax
-	movl	-27(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(23bytes):
-	movl	-23(%esi), %eax
-	movl	-23(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(19bytes):
-	movl	-19(%esi), %eax
-	movl	-19(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(15bytes):
-	movl	-15(%esi), %eax
-	movl	-15(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(11bytes):
-	movl	-11(%esi), %eax
-	movl	-11(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(7bytes):
-	movl	-7(%esi), %eax
-	movl	-7(%edx), %ecx
-	cmpl	%ecx, %eax
-	jne	L(find_diff)
-L(3bytes):
-	movzwl	-3(%esi), %eax
-	movzwl	-3(%edx), %ecx
-	cmpb	%cl, %al
-	jne	L(set)
-	cmpl	%ecx, %eax
-	jne	L(set)
-	movzbl	-1(%esi), %eax
-	cmpb	-1(%edx), %al
-	jne	L(set)
-	popl	%esi
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (esi)
-	xorl	%eax, %eax
-	RETURN
-
-	cfi_adjust_cfa_offset (8)
-	cfi_rel_offset (esi, 0)
-	cfi_rel_offset (ebx, 4)
-	ALIGN (4)
-/* ECX >= 32.  */
-L(32bytesormore):
-	subl	$32, %ecx
-
-	movl	(%esi), %eax
-	cmpl	(%edx), %eax
-	jne	L(load_ecx)
-
-	movl	4(%esi), %eax
-	cmpl	4(%edx), %eax
-	jne	L(load_ecx_4)
-
-	movl	8(%esi), %eax
-	cmpl	8(%edx), %eax
-	jne	L(load_ecx_8)
-
-	movl	12(%esi), %eax
-	cmpl	12(%edx), %eax
-	jne	L(load_ecx_12)
-
-	movl	16(%esi), %eax
-	cmpl	16(%edx), %eax
-	jne	L(load_ecx_16)
-
-	movl	20(%esi), %eax
-	cmpl	20(%edx), %eax
-	jne	L(load_ecx_20)
-
-	movl	24(%esi), %eax
-	cmpl	24(%edx), %eax
-	jne	L(load_ecx_24)
-
-	movl	28(%esi), %eax
-	cmpl	28(%edx), %eax
-	jne	L(load_ecx_28)
-
-	addl	$32, %esi
-	addl	$32, %edx
-	cmpl	$32, %ecx
-	jge	L(32bytesormore)
-
-	LOAD_JUMP_TABLE_ENTRY (L(table_32bytes), %ecx)
-	addl	%ecx, %edx
-	addl	%ecx, %esi
-	jmp	*%ebx
-
-L(load_ecx_28):
-	addl	$0x4, %edx
-L(load_ecx_24):
-	addl	$0x4, %edx
-L(load_ecx_20):
-	addl	$0x4, %edx
-L(load_ecx_16):
-	addl	$0x4, %edx
-L(load_ecx_12):
-	addl	$0x4, %edx
-L(load_ecx_8):
-	addl	$0x4, %edx
-L(load_ecx_4):
-	addl	$0x4, %edx
-L(load_ecx):
-	movl	(%edx), %ecx
-
-L(find_diff):
-	cmpb	%cl, %al
-	jne	L(set)
-	cmpb	%ch, %ah
-	jne	L(set)
-	shrl	$16,%eax
-	shrl	$16,%ecx
-	cmpb	%cl, %al
-	jne	L(set)
-	/* We get there only if we already know there is a
-	   difference.  */
-	cmpl	%ecx, %eax
-L(set):
-	sbbl	%eax, %eax
-	sbbl	$-1, %eax
-	popl	%esi
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (esi)
-	RETURN
-END (memcmp)
-
-	.section	.rodata
-	ALIGN (2)
-L(table_32bytes) :
-	.long	L(0bytes) - L(table_32bytes)
-	.long	L(1bytes) - L(table_32bytes)
-	.long	L(2bytes) - L(table_32bytes)
-	.long	L(3bytes) - L(table_32bytes)
-	.long	L(4bytes) - L(table_32bytes)
-	.long	L(5bytes) - L(table_32bytes)
-	.long	L(6bytes) - L(table_32bytes)
-	.long	L(7bytes) - L(table_32bytes)
-	.long	L(8bytes) - L(table_32bytes)
-	.long	L(9bytes) - L(table_32bytes)
-	.long	L(10bytes) - L(table_32bytes)
-	.long	L(11bytes) - L(table_32bytes)
-	.long	L(12bytes) - L(table_32bytes)
-	.long	L(13bytes) - L(table_32bytes)
-	.long	L(14bytes) - L(table_32bytes)
-	.long	L(15bytes) - L(table_32bytes)
-	.long	L(16bytes) - L(table_32bytes)
-	.long	L(17bytes) - L(table_32bytes)
-	.long	L(18bytes) - L(table_32bytes)
-	.long	L(19bytes) - L(table_32bytes)
-	.long	L(20bytes) - L(table_32bytes)
-	.long	L(21bytes) - L(table_32bytes)
-	.long	L(22bytes) - L(table_32bytes)
-	.long	L(23bytes) - L(table_32bytes)
-	.long	L(24bytes) - L(table_32bytes)
-	.long	L(25bytes) - L(table_32bytes)
-	.long	L(26bytes) - L(table_32bytes)
-	.long	L(27bytes) - L(table_32bytes)
-	.long	L(28bytes) - L(table_32bytes)
-	.long	L(29bytes) - L(table_32bytes)
-	.long	L(30bytes) - L(table_32bytes)
-	.long	L(31bytes) - L(table_32bytes)
-
-
-#undef bcmp
-weak_alias (memcmp, bcmp)
-libc_hidden_builtin_def (memcmp)