]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c
Update copyright notices with scripts/update-copyrights
[thirdparty/glibc.git] / sysdeps / powerpc / powerpc32 / power4 / multiarch / ifunc-impl-list.c
CommitLineData
4c628e00 1/* Enumerate available IFUNC implementations of a function. PowerPC32 version.
d4697bc9 2 Copyright (C) 2013-2014 Free Software Foundation, Inc.
4c628e00
AZ
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
18
19#include <assert.h>
20#include <string.h>
21#include <wchar.h>
22#include <ldsodefs.h>
23#include <ifunc-impl-list.h>
24
25/* Maximum number of IFUNC implementations. */
26#define MAX_IFUNC 6
27
28size_t
29__libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
30 size_t max)
31{
32 assert (max >= MAX_IFUNC);
33
34 size_t i = 0;
35
36 unsigned long int hwcap = GLRO(dl_hwcap);
37 /* hwcap contains only the latest supported ISA, the code checks which is
38 and fills the previous supported ones. */
39 if (hwcap & PPC_FEATURE_ARCH_2_06)
40 hwcap |= PPC_FEATURE_ARCH_2_05 | PPC_FEATURE_POWER5_PLUS |
41 PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
42 else if (hwcap & PPC_FEATURE_ARCH_2_05)
43 hwcap |= PPC_FEATURE_POWER5_PLUS | PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
44 else if (hwcap & PPC_FEATURE_POWER5_PLUS)
45 hwcap |= PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
46 else if (hwcap & PPC_FEATURE_POWER5)
47 hwcap |= PPC_FEATURE_POWER4;
48
930de6f0
AZ
49#ifdef SHARED
50 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memcpy.c. */
51 IFUNC_IMPL (i, name, memcpy,
52 IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_HAS_VSX,
53 __memcpy_power7)
54 IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_ARCH_2_06,
55 __memcpy_a2)
56 IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_ARCH_2_05,
57 __memcpy_power6)
58 IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_CELL_BE,
59 __memcpy_cell)
60 IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ppc))
20ed4714
AZ
61
62 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memset.c. */
63 IFUNC_IMPL (i, name, memset,
64 IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_HAS_VSX,
65 __memset_power7)
66 IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_ARCH_2_05,
67 __memset_power6)
68 IFUNC_IMPL_ADD (array, i, memset, 1, __memset_ppc))
69
70 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c. */
71 IFUNC_IMPL (i, name, bzero,
72 IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_HAS_VSX,
73 __bzero_power7)
74 IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_ARCH_2_05,
75 __bzero_power6)
76 IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ppc))
77
3148bb7d
AZ
78 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strlen.c. */
79 IFUNC_IMPL (i, name, strlen,
80 IFUNC_IMPL_ADD (array, i, strlen, hwcap & PPC_FEATURE_HAS_VSX,
81 __strlen_power7)
82 IFUNC_IMPL_ADD (array, i, strlen, 1,
83 __strlen_ppc))
ae9cf7a2
AZ
84
85 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strnlen.c. */
86 IFUNC_IMPL (i, name, strnlen,
87 IFUNC_IMPL_ADD (array, i, strnlen, hwcap & PPC_FEATURE_HAS_VSX,
88 __strnlen_power7)
89 IFUNC_IMPL_ADD (array, i, strnlen, 1,
90 __strnlen_ppc))
a19e01a3
AZ
91
92 /* Support sysdeps/powerpc/powerpc32/multiarch/strncmp.c. */
93 IFUNC_IMPL (i, name, strncmp,
94 IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_HAS_VSX,
95 __strncmp_power7)
96 IFUNC_IMPL_ADD (array, i, strncmp, 1,
97 __strncmp_ppc))
930de6f0
AZ
98#endif
99
ab3e3a46
AZ
100 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memcmp.c. */
101 IFUNC_IMPL (i, name, memcmp,
102 IFUNC_IMPL_ADD (array, i, memcmp, hwcap & PPC_FEATURE_HAS_VSX,
103 __memcmp_power7)
104 IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_ppc))
105
87da8bdb
AZ
106 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c. */
107 IFUNC_IMPL (i, name, mempcpy,
108 IFUNC_IMPL_ADD (array, i, mempcpy,
109 hwcap & PPC_FEATURE_HAS_VSX,
110 __mempcpy_power7)
111 IFUNC_IMPL_ADD (array, i, mempcpy, 1,
112 __mempcpy_ppc))
113
1c62e6d9
AZ
114 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c. */
115 IFUNC_IMPL (i, name, memchr,
116 IFUNC_IMPL_ADD (array, i, memchr,
117 hwcap & PPC_FEATURE_HAS_VSX,
118 __memchr_power7)
119 IFUNC_IMPL_ADD (array, i, memchr, 1,
120 __memchr_ppc))
121
03a6aa6a
AZ
122 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c. */
123 IFUNC_IMPL (i, name, memrchr,
124 IFUNC_IMPL_ADD (array, i, memrchr,
125 hwcap & PPC_FEATURE_HAS_VSX,
126 __memrchr_power7)
127 IFUNC_IMPL_ADD (array, i, memrchr, 1,
128 __memrchr_ppc))
129
7af8b946
AZ
130 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr.c. */
131 IFUNC_IMPL (i, name, rawmemchr,
132 IFUNC_IMPL_ADD (array, i, rawmemchr,
133 hwcap & PPC_FEATURE_HAS_VSX,
134 __rawmemchr_power7)
135 IFUNC_IMPL_ADD (array, i, rawmemchr, 1,
136 __rawmemchr_ppc))
137
4dfd5c86
AZ
138 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp.c. */
139 IFUNC_IMPL (i, name, strcasecmp,
140 IFUNC_IMPL_ADD (array, i, strcasecmp,
141 hwcap & PPC_FEATURE_HAS_VSX,
142 __strcasecmp_power7)
143 IFUNC_IMPL_ADD (array, i, strcasecmp, 1, __strcasecmp_ppc))
144
145 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l.c. */
146 IFUNC_IMPL (i, name, strcasecmp_l,
147 IFUNC_IMPL_ADD (array, i, strcasecmp_l,
148 hwcap & PPC_FEATURE_HAS_VSX,
149 __strcasecmp_l_power7)
150 IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1,
151 __strcasecmp_l_ppc))
152
0d0607d9
AZ
153 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strncase.c. */
154 IFUNC_IMPL (i, name, strncasecmp,
155 IFUNC_IMPL_ADD (array, i, strncasecmp,
156 hwcap & PPC_FEATURE_HAS_VSX,
157 __strncasecmp_power7)
158 IFUNC_IMPL_ADD (array, i, strncasecmp, 1, __strncasecmp_ppc))
159
160 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l.c. */
161 IFUNC_IMPL (i, name, strncasecmp_l,
162 IFUNC_IMPL_ADD (array, i, strncasecmp_l,
163 hwcap & PPC_FEATURE_HAS_VSX,
164 __strncasecmp_l_power7)
165 IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1,
166 __strncasecmp_l_ppc))
167
31c81aaa
AZ
168 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c. */
169 IFUNC_IMPL (i, name, strchrnul,
170 IFUNC_IMPL_ADD (array, i, strchrnul,
171 hwcap & PPC_FEATURE_HAS_VSX,
172 __strchrnul_power7)
173 IFUNC_IMPL_ADD (array, i, strchrnul, 1,
174 __strchrnul_ppc))
175
ba964147
AZ
176 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strchr.c. */
177 IFUNC_IMPL (i, name, strchr,
178 IFUNC_IMPL_ADD (array, i, strchr,
179 hwcap & PPC_FEATURE_HAS_VSX,
180 __strchr_power7)
181 IFUNC_IMPL_ADD (array, i, strchr, 1,
182 __strchr_ppc))
183
05b5cd1c
AZ
184 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/wcschr.c. */
185 IFUNC_IMPL (i, name, wcschr,
186 IFUNC_IMPL_ADD (array, i, wcschr,
187 hwcap & PPC_FEATURE_HAS_VSX,
188 __wcschr_power7)
189 IFUNC_IMPL_ADD (array, i, wcschr,
190 hwcap & PPC_FEATURE_ARCH_2_05,
191 __wcschr_power6)
192 IFUNC_IMPL_ADD (array, i, wcschr, 1,
193 __wcschr_ppc))
194
bb04e529
AZ
195 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr.c. */
196 IFUNC_IMPL (i, name, wcsrchr,
197 IFUNC_IMPL_ADD (array, i, wcsrchr,
198 hwcap & PPC_FEATURE_HAS_VSX,
199 __wcsrchr_power7)
200 IFUNC_IMPL_ADD (array, i, wcsrchr,
201 hwcap & PPC_FEATURE_ARCH_2_05,
202 __wcsrchr_power6)
203 IFUNC_IMPL_ADD (array, i, wcsrchr, 1,
204 __wcsrchr_ppc))
205
93be09e7
AZ
206 /* Support sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c. */
207 IFUNC_IMPL (i, name, wcscpy,
208 IFUNC_IMPL_ADD (array, i, wcscpy,
209 hwcap & PPC_FEATURE_HAS_VSX,
210 __wcscpy_power7)
211 IFUNC_IMPL_ADD (array, i, wcscpy,
212 hwcap & PPC_FEATURE_ARCH_2_05,
213 __wcscpy_power6)
214 IFUNC_IMPL_ADD (array, i, wcscpy, 1,
215 __wcscpy_ppc))
216
4c628e00
AZ
217 return i;
218}