]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/i386/i686/multiarch/bcopy.S
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / i386 / i686 / multiarch / bcopy.S
CommitLineData
3af48cbd 1/* Multiple versions of bcopy
b090e8ea 2 All versions must be listed in ifunc-impl-list.c.
f7a9f785 3 Copyright (C) 2010-2016 Free Software Foundation, Inc.
3af48cbd
L
4 Contributed by Intel Corporation.
5 This file is part of the GNU C Library.
6
7 The GNU C Library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
11
12 The GNU C Library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
18 License along with the GNU C Library; if not, see
19 <http://www.gnu.org/licenses/>. */
3af48cbd
L
20
21#include <sysdep.h>
22#include <init-arch.h>
23
24/* Define multiple versions only for the definition in lib. */
4f41c682 25#if IS_IN (libc)
3af48cbd
L
26 .text
27ENTRY(bcopy)
28 .type bcopy, @gnu_indirect_function
1aee37a2
L
29 LOAD_GOT_AND_RTLD_GLOBAL_RO
30 LOAD_FUNC_GOT_EAX (__bcopy_ia32)
31 HAS_CPU_FEATURE (SSE2)
8b4416d8 32 jz 2f
1aee37a2
L
33 LOAD_FUNC_GOT_EAX (__bcopy_sse2_unaligned)
34 HAS_ARCH_FEATURE (Fast_Unaligned_Load)
8b4416d8 35 jnz 2f
1aee37a2 36 HAS_CPU_FEATURE (SSSE3)
3af48cbd 37 jz 2f
1aee37a2
L
38 LOAD_FUNC_GOT_EAX (__bcopy_ssse3)
39 HAS_CPU_FEATURE (Fast_Rep_String)
3af48cbd 40 jz 2f
1aee37a2 41 LOAD_FUNC_GOT_EAX (__bcopy_ssse3_rep)
3af48cbd
L
422: ret
43END(bcopy)
3af48cbd
L
44
45# undef ENTRY
46# define ENTRY(name) \
47 .type __bcopy_ia32, @function; \
48 .p2align 4; \
b090e8ea
L
49 .globl __bcopy_ia32; \
50 .hidden __bcopy_ia32; \
3af48cbd
L
51 __bcopy_ia32: cfi_startproc; \
52 CALL_MCOUNT
53# undef END
54# define END(name) \
55 cfi_endproc; .size __bcopy_ia32, .-__bcopy_ia32
56
57#endif
58
59#include "../bcopy.S"