about summary refs log tree commit diff
path: root/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S')
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S681
1 files changed, 0 insertions, 681 deletions
diff --git a/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S b/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S
deleted file mode 100644
index 2fe2072cb1..0000000000
--- a/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S
+++ /dev/null
@@ -1,681 +0,0 @@
-/* memcpy optimized with SSE2 unaligned memory access instructions.
-   Copyright (C) 2014-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/>.  */
-
-#if IS_IN (libc) \
-    && (defined SHARED \
-	|| defined USE_AS_MEMMOVE \
-	|| !defined USE_MULTIARCH)
-
-# include <sysdep.h>
-# include "asm-syntax.h"
-
-# ifndef MEMCPY
-#  define MEMCPY	__memcpy_sse2_unaligned
-#  define MEMCPY_CHK	__memcpy_chk_sse2_unaligned
-# endif
-
-# ifdef USE_AS_BCOPY
-#  define SRC		PARMS
-#  define DEST		SRC+4
-#  define LEN		DEST+4
-# else
-#  define DEST		PARMS
-#  define SRC		DEST+4
-#  define LEN		SRC+4
-# endif
-
-# define CFI_PUSH(REG)		\
-  cfi_adjust_cfa_offset (4);		\
-  cfi_rel_offset (REG, 0)
-
-# define CFI_POP(REG)		\
-  cfi_adjust_cfa_offset (-4);		\
-  cfi_restore (REG)
-
-# define PUSH(REG)	pushl REG; CFI_PUSH (REG)
-# define POP(REG)	popl REG; CFI_POP (REG)
-
-# define PARMS		8		/* Preserve EBX.  */
-# define ENTRANCE	PUSH (%ebx);
-# define RETURN_END	POP (%ebx); ret
-# define RETURN	RETURN_END; CFI_PUSH (%ebx)
-
-	.section .text.sse2,"ax",@progbits
-# if !defined USE_AS_BCOPY
-ENTRY (MEMCPY_CHK)
-	movl	12(%esp), %eax
-	cmpl	%eax, 16(%esp)
-	jb	HIDDEN_JUMPTARGET (__chk_fail)
-END (MEMCPY_CHK)
-# endif
-
-ENTRY (MEMCPY)
-	ENTRANCE
-	movl	LEN(%esp), %ecx
-	movl	SRC(%esp), %eax
-	movl	DEST(%esp), %edx
-	cmp	%edx, %eax
-
-# ifdef USE_AS_MEMMOVE
-	jg	L(check_forward)
-
-L(mm_len_0_or_more_backward):
-/* Now do checks for lengths. We do [0..16], [16..32], [32..64], [64..128]
-	separately.  */
-	cmp	$16, %ecx
-	jbe	L(mm_len_0_16_bytes_backward)
-
-	cmpl	$32, %ecx
-	jg	L(mm_len_32_or_more_backward)
-
-/* Copy [0..32] and return.  */
-	movdqu	(%eax), %xmm0
-	movdqu	-16(%eax, %ecx), %xmm1
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm1, -16(%edx, %ecx)
-	jmp	L(return)
-
-L(mm_len_32_or_more_backward):
-	cmpl	$64, %ecx
-	jg	L(mm_len_64_or_more_backward)
-
-/* Copy [0..64] and return.  */
-	movdqu	(%eax), %xmm0
-	movdqu	16(%eax), %xmm1
-	movdqu	-16(%eax, %ecx), %xmm2
-	movdqu	-32(%eax, %ecx), %xmm3
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm1, 16(%edx)
-	movdqu	%xmm2, -16(%edx, %ecx)
-	movdqu	%xmm3, -32(%edx, %ecx)
-	jmp	L(return)
-
-L(mm_len_64_or_more_backward):
-	cmpl	$128, %ecx
-	jg	L(mm_len_128_or_more_backward)
-
-/* Copy [0..128] and return.  */
-	movdqu	(%eax), %xmm0
-	movdqu	16(%eax), %xmm1
-	movdqu	32(%eax), %xmm2
-	movdqu	48(%eax), %xmm3
-	movdqu	-64(%eax, %ecx), %xmm4
-	movdqu	-48(%eax, %ecx), %xmm5
-	movdqu	-32(%eax, %ecx), %xmm6
-	movdqu	-16(%eax, %ecx), %xmm7
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm1, 16(%edx)
-	movdqu	%xmm2, 32(%edx)
-	movdqu	%xmm3, 48(%edx)
-	movdqu	%xmm4, -64(%edx, %ecx)
-	movdqu	%xmm5, -48(%edx, %ecx)
-	movdqu	%xmm6, -32(%edx, %ecx)
-	movdqu	%xmm7, -16(%edx, %ecx)
-	jmp	L(return)
-
-L(mm_len_128_or_more_backward):
-	add	%ecx, %eax
-	cmp	%edx, %eax
-	movl	SRC(%esp), %eax
-	jle	L(forward)
-	PUSH (%esi)
-	PUSH (%edi)
-	PUSH (%ebx)
-
-/* Aligning the address of destination. */
-	movdqu	(%eax), %xmm4
-	movdqu	16(%eax), %xmm5
-	movdqu	32(%eax), %xmm6
-	movdqu	48(%eax), %xmm7
-	leal	(%edx, %ecx), %esi
-	movdqu	-16(%eax, %ecx), %xmm0
-	subl	$16, %esp
-	movdqu	%xmm0, (%esp)
-	mov	%ecx, %edi
-	movl	%esi, %ecx
-	andl	$-16, %ecx
-	leal	(%ecx), %ebx
-	subl	%edx, %ebx
-	leal	(%eax, %ebx), %eax
-	shrl	$6, %ebx
-
-# ifdef SHARED_CACHE_SIZE_HALF
-	cmp	$SHARED_CACHE_SIZE_HALF, %edi
-# else
-#  ifdef SHARED
-	PUSH (%ebx)
-	SETUP_PIC_REG (bx)
-	add	$_GLOBAL_OFFSET_TABLE_, %ebx
-	cmp	__x86_shared_cache_size_half@GOTOFF(%ebx), %edi
-	POP (%ebx)
-#  else
-	cmp	__x86_shared_cache_size_half, %edi
-#  endif
-# endif
-	jae	L(mm_large_page_loop_backward)
-
-	.p2align 4
-L(mm_main_loop_backward):
-
-	prefetcht0 -128(%eax)
-
-	movdqu	-64(%eax), %xmm0
-	movdqu	-48(%eax), %xmm1
-	movdqu	-32(%eax), %xmm2
-	movdqu	-16(%eax), %xmm3
-	movaps	%xmm0, -64(%ecx)
-	subl	$64, %eax
-	movaps	%xmm1, -48(%ecx)
-	movaps	%xmm2, -32(%ecx)
-	movaps	%xmm3, -16(%ecx)
-	subl	$64, %ecx
-	sub	$1, %ebx
-	jnz	L(mm_main_loop_backward)
-	movdqu	(%esp), %xmm0
-	addl	$16, %esp
-	movdqu	%xmm0, -16(%esi)
-	movdqu	%xmm4, (%edx)
-	movdqu	%xmm5, 16(%edx)
-	movdqu	%xmm6, 32(%edx)
-	movdqu	%xmm7, 48(%edx)
-	POP (%ebx)
-	jmp	L(mm_return_pop_all)
-
-/* Copy [0..16] and return.  */
-L(mm_len_0_16_bytes_backward):
-	testb	$24, %cl
-	jnz	L(mm_len_9_16_bytes_backward)
-	testb	$4, %cl
-	.p2align 4,,5
-	jnz	L(mm_len_5_8_bytes_backward)
-	testl	%ecx, %ecx
-	.p2align 4,,2
-	je	L(return)
-	testb	$2, %cl
-	.p2align 4,,1
-	jne	L(mm_len_3_4_bytes_backward)
-	movzbl	-1(%eax,%ecx), %ebx
-	movzbl	(%eax), %eax
-	movb	%bl, -1(%edx,%ecx)
-	movb	%al, (%edx)
-	jmp	L(return)
-
-L(mm_len_3_4_bytes_backward):
-	movzwl	-2(%eax,%ecx), %ebx
-	movzwl	(%eax), %eax
-	movw	%bx, -2(%edx,%ecx)
-	movw	%ax, (%edx)
-	jmp	L(return)
-
-L(mm_len_9_16_bytes_backward):
-	PUSH (%esi)
-	movl	-4(%eax,%ecx), %ebx
-	movl	-8(%eax,%ecx), %esi
-	movl	%ebx, -4(%edx,%ecx)
-	movl	%esi, -8(%edx,%ecx)
-	subl	$8, %ecx
-	POP (%esi)
-	jmp	L(mm_len_0_16_bytes_backward)
-
-L(mm_len_5_8_bytes_backward):
-	movl	(%eax), %ebx
-	movl	-4(%eax,%ecx), %eax
-	movl	%ebx, (%edx)
-	movl	%eax, -4(%edx,%ecx)
-	jmp	L(return)
-
-/* Big length copy backward part.  */
-	.p2align 4
-L(mm_large_page_loop_backward):
-	movdqu	-64(%eax), %xmm0
-	movdqu	-48(%eax), %xmm1
-	movdqu	-32(%eax), %xmm2
-	movdqu	-16(%eax), %xmm3
-	movntdq	%xmm0, -64(%ecx)
-	subl	$64, %eax
-	movntdq	%xmm1, -48(%ecx)
-	movntdq	%xmm2, -32(%ecx)
-	movntdq	%xmm3, -16(%ecx)
-	subl	$64, %ecx
-	sub	$1, %ebx
-	jnz	L(mm_large_page_loop_backward)
-	sfence
-	movdqu	(%esp), %xmm0
-	addl	$16, %esp
-	movdqu	%xmm0, -16(%esi)
-	movdqu	%xmm4, (%edx)
-	movdqu	%xmm5, 16(%edx)
-	movdqu	%xmm6, 32(%edx)
-	movdqu	%xmm7, 48(%edx)
-	POP (%ebx)
-	jmp	L(mm_return_pop_all)
-
-L(check_forward):
-	add	%edx, %ecx
-	cmp	%eax, %ecx
-	movl	LEN(%esp), %ecx
-	jle	L(forward)
-
-/* Now do checks for lengths. We do [0..16], [0..32], [0..64], [0..128]
-	separately.  */
-	cmp	$16, %ecx
-	jbe	L(mm_len_0_16_bytes_forward)
-
-	cmpl	$32, %ecx
-	ja	L(mm_len_32_or_more_forward)
-
-/* Copy [0..32] and return.  */
-	movdqu	(%eax), %xmm0
-	movdqu	-16(%eax, %ecx), %xmm1
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm1, -16(%edx, %ecx)
-	jmp	L(return)
-
-L(mm_len_32_or_more_forward):
-	cmpl	$64, %ecx
-	ja	L(mm_len_64_or_more_forward)
-
-/* Copy [0..64] and return.  */
-	movdqu	(%eax), %xmm0
-	movdqu	16(%eax), %xmm1
-	movdqu	-16(%eax, %ecx), %xmm2
-	movdqu	-32(%eax, %ecx), %xmm3
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm1, 16(%edx)
-	movdqu	%xmm2, -16(%edx, %ecx)
-	movdqu	%xmm3, -32(%edx, %ecx)
-	jmp	L(return)
-
-L(mm_len_64_or_more_forward):
-	cmpl	$128, %ecx
-	ja	L(mm_len_128_or_more_forward)
-
-/* Copy [0..128] and return.  */
-	movdqu	(%eax), %xmm0
-	movdqu	16(%eax), %xmm1
-	movdqu	32(%eax), %xmm2
-	movdqu	48(%eax), %xmm3
-	movdqu	-64(%eax, %ecx), %xmm4
-	movdqu	-48(%eax, %ecx), %xmm5
-	movdqu	-32(%eax, %ecx), %xmm6
-	movdqu	-16(%eax, %ecx), %xmm7
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm1, 16(%edx)
-	movdqu	%xmm2, 32(%edx)
-	movdqu	%xmm3, 48(%edx)
-	movdqu	%xmm4, -64(%edx, %ecx)
-	movdqu	%xmm5, -48(%edx, %ecx)
-	movdqu	%xmm6, -32(%edx, %ecx)
-	movdqu	%xmm7, -16(%edx, %ecx)
-	jmp	L(return)
-
-L(mm_len_128_or_more_forward):
-	PUSH (%esi)
-	PUSH (%edi)
-	PUSH (%ebx)
-
-/* Aligning the address of destination. */
-	movdqu	-16(%eax, %ecx), %xmm4
-	movdqu	-32(%eax, %ecx), %xmm5
-	movdqu	-48(%eax, %ecx), %xmm6
-	movdqu	-64(%eax, %ecx), %xmm7
-	leal	(%edx, %ecx), %esi
-	movdqu	(%eax), %xmm0
-	subl	$16, %esp
-	movdqu	%xmm0, (%esp)
-	mov	%ecx, %edi
-	leal	16(%edx), %ecx
-	andl	$-16, %ecx
-	movl	%ecx, %ebx
-	subl	%edx, %ebx
-	addl	%ebx, %eax
-	movl	%esi, %ebx
-	subl	%ecx, %ebx
-	shrl	$6, %ebx
-
-# ifdef SHARED_CACHE_SIZE_HALF
-	cmp	$SHARED_CACHE_SIZE_HALF, %edi
-# else
-#  ifdef SHARED
-	PUSH (%ebx)
-	SETUP_PIC_REG(bx)
-	add	$_GLOBAL_OFFSET_TABLE_, %ebx
-	cmp	__x86_shared_cache_size_half@GOTOFF(%ebx), %edi
-	POP (%ebx)
-#  else
-	cmp	__x86_shared_cache_size_half, %edi
-#  endif
-# endif
-	jae	L(mm_large_page_loop_forward)
-
-	.p2align 4
-L(mm_main_loop_forward):
-
-	prefetcht0 128(%eax)
-
-	movdqu	(%eax), %xmm0
-	movdqu	16(%eax), %xmm1
-	movdqu	32(%eax), %xmm2
-	movdqu	48(%eax), %xmm3
-	movdqa	%xmm0, (%ecx)
-	addl	$64, %eax
-	movaps	%xmm1, 16(%ecx)
-	movaps	%xmm2, 32(%ecx)
-	movaps	%xmm3, 48(%ecx)
-	addl	$64, %ecx
-	sub	$1, %ebx
-	jnz	L(mm_main_loop_forward)
-	movdqu	(%esp), %xmm0
-	addl	$16, %esp
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm4, -16(%esi)
-	movdqu	%xmm5, -32(%esi)
-	movdqu	%xmm6, -48(%esi)
-	movdqu	%xmm7, -64(%esi)
-	POP (%ebx)
-	jmp	L(mm_return_pop_all)
-
-L(mm_len_0_16_bytes_forward):
-	testb	$24, %cl
-	jne	L(mm_len_9_16_bytes_forward)
-	testb	$4, %cl
-	.p2align 4,,5
-	jne	L(mm_len_5_8_bytes_forward)
-	testl	%ecx, %ecx
-	.p2align 4,,2
-	je	L(return)
-	testb	$2, %cl
-	.p2align 4,,1
-	jne	L(mm_len_2_4_bytes_forward)
-	movzbl	-1(%eax,%ecx), %ebx
-	movzbl	(%eax), %eax
-	movb	%bl, -1(%edx,%ecx)
-	movb	%al, (%edx)
-	jmp	L(return)
-
-L(mm_len_2_4_bytes_forward):
-	movzwl	-2(%eax,%ecx), %ebx
-	movzwl	(%eax), %eax
-	movw	%bx, -2(%edx,%ecx)
-	movw	%ax, (%edx)
-	jmp	L(return)
-
-L(mm_len_5_8_bytes_forward):
-	movl	(%eax), %ebx
-	movl	-4(%eax,%ecx), %eax
-	movl	%ebx, (%edx)
-	movl	%eax, -4(%edx,%ecx)
-	jmp	L(return)
-
-L(mm_len_9_16_bytes_forward):
-	movq	(%eax), %xmm0
-	movq	-8(%eax, %ecx), %xmm1
-	movq	%xmm0, (%edx)
-	movq	%xmm1, -8(%edx, %ecx)
-	jmp	L(return)
-
-L(mm_return_pop_all):
-	movl	%edx, %eax
-	POP (%edi)
-	POP (%esi)
-	RETURN
-
-/* Big length copy forward part.  */
-	.p2align 4
-L(mm_large_page_loop_forward):
-	movdqu	(%eax), %xmm0
-	movdqu	16(%eax), %xmm1
-	movdqu	32(%eax), %xmm2
-	movdqu	48(%eax), %xmm3
-	movntdq	%xmm0, (%ecx)
-	addl	$64, %eax
-	movntdq	%xmm1, 16(%ecx)
-	movntdq	%xmm2, 32(%ecx)
-	movntdq	%xmm3, 48(%ecx)
-	addl	$64, %ecx
-	sub	$1, %ebx
-	jnz	L(mm_large_page_loop_forward)
-	sfence
-	movdqu	(%esp), %xmm0
-	addl	$16, %esp
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm4, -16(%esi)
-	movdqu	%xmm5, -32(%esi)
-	movdqu	%xmm6, -48(%esi)
-	movdqu	%xmm7, -64(%esi)
-	POP (%ebx)
-	jmp	L(mm_return_pop_all)
-# endif
-
-L(forward):
-	cmp	$16, %ecx
-	jbe	L(len_0_16_bytes)
-
-# ifdef SHARED_CACHE_SIZE_HALF
-	cmp	$SHARED_CACHE_SIZE_HALF, %ecx
-# else
-#  ifdef SHARED
-	SETUP_PIC_REG(bx)
-	add	$_GLOBAL_OFFSET_TABLE_, %ebx
-	cmp	__x86_shared_cache_size_half@GOTOFF(%ebx), %ecx
-#  else
-	cmp	__x86_shared_cache_size_half, %ecx
-#  endif
-# endif
-	jae     L(large_page)
-
-	movdqu	(%eax), %xmm0
-	movdqu	-16(%eax, %ecx), %xmm1
-	cmpl    $32, %ecx
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm1, -16(%edx, %ecx)
-	jbe	L(return)
-
-	movdqu	16(%eax), %xmm0
-	movdqu	-32(%eax, %ecx), %xmm1
-	cmpl    $64, %ecx
-	movdqu	%xmm0, 16(%edx)
-	movdqu	%xmm1, -32(%edx, %ecx)
-	jbe	L(return)
-
-	movdqu	32(%eax), %xmm0
-	movdqu	48(%eax), %xmm1
-	movdqu	-48(%eax, %ecx), %xmm2
-	movdqu	-64(%eax, %ecx), %xmm3
-	cmpl    $128, %ecx
-	movdqu	%xmm0, 32(%edx)
-	movdqu	%xmm1, 48(%edx)
-	movdqu	%xmm2, -48(%edx, %ecx)
-	movdqu	%xmm3, -64(%edx, %ecx)
-	jbe	L(return)
-
-/* Now the main loop: we align the address of the destination.  */
-	leal	64(%edx), %ebx
-	andl	$-64, %ebx
-
-	addl	%edx, %ecx
-	andl	$-64, %ecx
-
-	subl	%edx, %eax
-
-/* We should stop two iterations before the termination
-	(in order not to misprefetch).  */
-	subl	$64, %ecx
-	cmpl	%ebx, %ecx
-	je	L(main_loop_just_one_iteration)
-
-	subl	$64, %ecx
-	cmpl	%ebx, %ecx
-	je	L(main_loop_last_two_iterations)
-
-	.p2align 4
-L(main_loop_cache):
-
-	prefetcht0 128(%ebx, %eax)
-
-	movdqu	(%ebx, %eax), %xmm0
-	movdqu	16(%ebx, %eax), %xmm1
-	movdqu	32(%ebx, %eax), %xmm2
-	movdqu	48(%ebx, %eax), %xmm3
-	movdqa	%xmm0, (%ebx)
-	movaps	%xmm1, 16(%ebx)
-	movaps	%xmm2, 32(%ebx)
-	movaps	%xmm3, 48(%ebx)
-	lea	64(%ebx), %ebx
-	cmpl	%ebx, %ecx
-	jne	L(main_loop_cache)
-
-L(main_loop_last_two_iterations):
-	movdqu	(%ebx, %eax), %xmm0
-	movdqu	16(%ebx, %eax), %xmm1
-	movdqu	32(%ebx, %eax), %xmm2
-	movdqu	48(%ebx, %eax), %xmm3
-	movdqu	64(%ebx, %eax), %xmm4
-	movdqu	80(%ebx, %eax), %xmm5
-	movdqu	96(%ebx, %eax), %xmm6
-	movdqu	112(%ebx, %eax), %xmm7
-	movdqa	%xmm0, (%ebx)
-	movaps	%xmm1, 16(%ebx)
-	movaps	%xmm2, 32(%ebx)
-	movaps	%xmm3, 48(%ebx)
-	movaps	%xmm4, 64(%ebx)
-	movaps	%xmm5, 80(%ebx)
-	movaps	%xmm6, 96(%ebx)
-	movaps	%xmm7, 112(%ebx)
-	jmp	L(return)
-
-L(main_loop_just_one_iteration):
-	movdqu	(%ebx, %eax), %xmm0
-	movdqu	16(%ebx, %eax), %xmm1
-	movdqu	32(%ebx, %eax), %xmm2
-	movdqu	48(%ebx, %eax), %xmm3
-	movdqa	%xmm0, (%ebx)
-	movaps	%xmm1, 16(%ebx)
-	movaps	%xmm2, 32(%ebx)
-	movaps	%xmm3, 48(%ebx)
-	jmp	L(return)
-
-L(large_page):
-	movdqu	(%eax), %xmm0
-	movdqu	16(%eax), %xmm1
-	movdqu	32(%eax), %xmm2
-	movdqu	48(%eax), %xmm3
-	movdqu	-64(%eax, %ecx), %xmm4
-	movdqu	-48(%eax, %ecx), %xmm5
-	movdqu	-32(%eax, %ecx), %xmm6
-	movdqu	-16(%eax, %ecx), %xmm7
-	movdqu	%xmm0, (%edx)
-	movdqu	%xmm1, 16(%edx)
-	movdqu	%xmm2, 32(%edx)
-	movdqu	%xmm3, 48(%edx)
-	movdqu	%xmm4, -64(%edx, %ecx)
-	movdqu	%xmm5, -48(%edx, %ecx)
-	movdqu	%xmm6, -32(%edx, %ecx)
-	movdqu	%xmm7, -16(%edx, %ecx)
-
-	movdqu	64(%eax), %xmm0
-	movdqu	80(%eax), %xmm1
-	movdqu	96(%eax), %xmm2
-	movdqu	112(%eax), %xmm3
-	movdqu	-128(%eax, %ecx), %xmm4
-	movdqu	-112(%eax, %ecx), %xmm5
-	movdqu	-96(%eax, %ecx), %xmm6
-	movdqu	-80(%eax, %ecx), %xmm7
-	movdqu	%xmm0, 64(%edx)
-	movdqu	%xmm1, 80(%edx)
-	movdqu	%xmm2, 96(%edx)
-	movdqu	%xmm3, 112(%edx)
-	movdqu	%xmm4, -128(%edx, %ecx)
-	movdqu	%xmm5, -112(%edx, %ecx)
-	movdqu	%xmm6, -96(%edx, %ecx)
-	movdqu	%xmm7, -80(%edx, %ecx)
-
-/* Now the main loop with non temporal stores. We align
-	the address of the destination.  */
-	leal	128(%edx), %ebx
-	andl	$-128, %ebx
-
-	addl	%edx, %ecx
-	andl	$-128, %ecx
-
-	subl	%edx, %eax
-
-	.p2align 4
-L(main_loop_large_page):
-	movdqu	(%ebx, %eax), %xmm0
-	movdqu	16(%ebx, %eax), %xmm1
-	movdqu	32(%ebx, %eax), %xmm2
-	movdqu	48(%ebx, %eax), %xmm3
-	movdqu	64(%ebx, %eax), %xmm4
-	movdqu	80(%ebx, %eax), %xmm5
-	movdqu	96(%ebx, %eax), %xmm6
-	movdqu	112(%ebx, %eax), %xmm7
-	movntdq	%xmm0, (%ebx)
-	movntdq	%xmm1, 16(%ebx)
-	movntdq	%xmm2, 32(%ebx)
-	movntdq	%xmm3, 48(%ebx)
-	movntdq	%xmm4, 64(%ebx)
-	movntdq	%xmm5, 80(%ebx)
-	movntdq	%xmm6, 96(%ebx)
-	movntdq	%xmm7, 112(%ebx)
-	lea	128(%ebx), %ebx
-	cmpl	%ebx, %ecx
-	jne	L(main_loop_large_page)
-	sfence
-	jmp	L(return)
-
-L(len_0_16_bytes):
-	testb	$24, %cl
-	jne	L(len_9_16_bytes)
-	testb	$4, %cl
-	.p2align 4,,5
-	jne	L(len_5_8_bytes)
-	testl	%ecx, %ecx
-	.p2align 4,,2
-	je	L(return)
-	movzbl	(%eax), %ebx
-	testb	$2, %cl
-	movb	%bl, (%edx)
-	je	L(return)
-	movzwl	-2(%eax,%ecx), %ebx
-	movw	%bx, -2(%edx,%ecx)
-	jmp	L(return)
-
-L(len_9_16_bytes):
-	movq	(%eax), %xmm0
-	movq	-8(%eax, %ecx), %xmm1
-	movq	%xmm0, (%edx)
-	movq	%xmm1, -8(%edx, %ecx)
-	jmp	L(return)
-
-L(len_5_8_bytes):
-	movl	(%eax), %ebx
-	movl	%ebx, (%edx)
-	movl	-4(%eax,%ecx), %ebx
-	movl	%ebx, -4(%edx,%ecx)
-
-L(return):
-	movl	%edx, %eax
-# if !defined USE_AS_BCOPY && defined USE_AS_MEMPCPY
-	movl	LEN(%esp), %ecx
-	add	%ecx, %eax
-# endif
-	RETURN
-
-END (MEMCPY)
-#endif