]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/i386/i686/multiarch/strncase.S
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / i386 / i686 / multiarch / strncase.S
CommitLineData
76e3966e 1/* Entry point for multi-version x86 strncasecmp.
b090e8ea 2 All versions must be listed in ifunc-impl-list.c.
b168057a 3 Copyright (C) 2011-2015 Free Software Foundation, Inc.
76e3966e
UD
4 This file is part of the GNU C Library.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
17 License along with the GNU C Library; if not, see
18 <http://www.gnu.org/licenses/>. */
76e3966e
UD
19
20#include <sysdep.h>
21#include <init-arch.h>
22
23#ifdef SHARED
24 .text
25ENTRY(__strncasecmp)
26 .type __strncasecmp, @gnu_indirect_function
27 pushl %ebx
28 cfi_adjust_cfa_offset (4)
29 cfi_rel_offset (ebx, 0)
9a1d9254 30 LOAD_PIC_REG(bx)
76e3966e
UD
31 cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
32 jne 1f
33 call __init_cpu_features
341: leal __strncasecmp_ia32@GOTOFF(%ebx), %eax
35 testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
36 jz 2f
37 leal __strncasecmp_ssse3@GOTOFF(%ebx), %eax
76e3966e
UD
38 testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
39 jz 2f
3574f2fd 40 testl $bit_Slow_SSE4_2, FEATURE_OFFSET+index_Slow_SSE4_2+__cpu_features@GOTOFF(%ebx)
46ed1038 41 jnz 2f
76e3966e 42 leal __strncasecmp_sse4_2@GOTOFF(%ebx), %eax
76e3966e
UD
432: popl %ebx
44 cfi_adjust_cfa_offset (-4)
45 cfi_restore (ebx)
46 ret
47END(__strncasecmp)
48#else
49 .text
50ENTRY(__strncasecmp)
51 .type __strncasecmp, @gnu_indirect_function
52 cmpl $0, KIND_OFFSET+__cpu_features
53 jne 1f
54 call __init_cpu_features
551: leal __strncasecmp_ia32, %eax
56 testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
57 jz 2f
58 leal __strncasecmp_ssse3, %eax
76e3966e
UD
59 testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
60 jz 2f
3574f2fd 61 testl $bit_Slow_SSE4_2, FEATURE_OFFSET+index_Slow_SSE4_2+__cpu_features
46ed1038 62 jnz 2f
76e3966e 63 leal __strncasecmp_sse4_2, %eax
76e3966e
UD
642: ret
65END(__strncasecmp)
66#endif
67
68weak_alias (__strncasecmp, strncasecmp)