]>
Commit | Line | Data |
---|---|---|
b090e8ea | 1 | /* Enumerate available IFUNC implementations of a function. i686 version. |
d614a753 | 2 | Copyright (C) 2012-2020 Free Software Foundation, Inc. |
b090e8ea L |
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 | |
5a82c748 | 17 | <https://www.gnu.org/licenses/>. */ |
b090e8ea L |
18 | |
19 | #include <assert.h> | |
20 | #include <string.h> | |
21 | #include <wchar.h> | |
22 | #include <ifunc-impl-list.h> | |
23 | #include "init-arch.h" | |
24 | ||
25 | /* Maximum number of IFUNC implementations. */ | |
8b4416d8 | 26 | #define MAX_IFUNC 4 |
b090e8ea L |
27 | |
28 | /* Fill ARRAY of MAX elements with IFUNC implementations for function | |
29 | NAME and return the number of valid entries. */ | |
30 | ||
31 | size_t | |
32 | __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, | |
33 | size_t max) | |
34 | { | |
35 | assert (max >= MAX_IFUNC); | |
36 | ||
37 | size_t i = 0; | |
38 | ||
39 | /* Support sysdeps/i386/i686/multiarch/bcopy.S. */ | |
40 | IFUNC_IMPL (i, name, bcopy, | |
1aee37a2 | 41 | IFUNC_IMPL_ADD (array, i, bcopy, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 42 | __bcopy_ssse3_rep) |
1aee37a2 L |
43 | IFUNC_IMPL_ADD (array, i, bcopy, HAS_CPU_FEATURE (SSSE3), |
44 | __bcopy_ssse3) | |
45 | IFUNC_IMPL_ADD (array, i, bcopy, HAS_CPU_FEATURE (SSE2), | |
8b4416d8 | 46 | __bcopy_sse2_unaligned) |
b090e8ea L |
47 | IFUNC_IMPL_ADD (array, i, bcopy, 1, __bcopy_ia32)) |
48 | ||
49 | /* Support sysdeps/i386/i686/multiarch/bzero.S. */ | |
50 | IFUNC_IMPL (i, name, bzero, | |
1aee37a2 L |
51 | IFUNC_IMPL_ADD (array, i, bzero, HAS_CPU_FEATURE (SSE2), |
52 | __bzero_sse2_rep) | |
53 | IFUNC_IMPL_ADD (array, i, bzero, HAS_CPU_FEATURE (SSE2), | |
54 | __bzero_sse2) | |
b090e8ea L |
55 | IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ia32)) |
56 | ||
57 | /* Support sysdeps/i386/i686/multiarch/memchr.S. */ | |
58 | IFUNC_IMPL (i, name, memchr, | |
1aee37a2 | 59 | IFUNC_IMPL_ADD (array, i, memchr, HAS_CPU_FEATURE (SSE2), |
b090e8ea | 60 | __memchr_sse2_bsf) |
1aee37a2 L |
61 | IFUNC_IMPL_ADD (array, i, memchr, HAS_CPU_FEATURE (SSE2), |
62 | __memchr_sse2) | |
b090e8ea L |
63 | IFUNC_IMPL_ADD (array, i, memchr, 1, __memchr_ia32)) |
64 | ||
65 | /* Support sysdeps/i386/i686/multiarch/memcmp.S. */ | |
66 | IFUNC_IMPL (i, name, memcmp, | |
1aee37a2 | 67 | IFUNC_IMPL_ADD (array, i, memcmp, HAS_CPU_FEATURE (SSE4_2), |
b090e8ea | 68 | __memcmp_sse4_2) |
1aee37a2 L |
69 | IFUNC_IMPL_ADD (array, i, memcmp, HAS_CPU_FEATURE (SSSE3), |
70 | __memcmp_ssse3) | |
b090e8ea L |
71 | IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_ia32)) |
72 | ||
47f27396 | 73 | #ifdef SHARED |
b090e8ea L |
74 | /* Support sysdeps/i386/i686/multiarch/memmove_chk.S. */ |
75 | IFUNC_IMPL (i, name, __memmove_chk, | |
1aee37a2 L |
76 | IFUNC_IMPL_ADD (array, i, __memmove_chk, |
77 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea | 78 | __memmove_chk_ssse3_rep) |
1aee37a2 L |
79 | IFUNC_IMPL_ADD (array, i, __memmove_chk, |
80 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea | 81 | __memmove_chk_ssse3) |
1aee37a2 L |
82 | IFUNC_IMPL_ADD (array, i, __memmove_chk, |
83 | HAS_CPU_FEATURE (SSE2), | |
8b4416d8 | 84 | __memmove_chk_sse2_unaligned) |
b090e8ea L |
85 | IFUNC_IMPL_ADD (array, i, __memmove_chk, 1, |
86 | __memmove_chk_ia32)) | |
47f27396 | 87 | #endif |
b090e8ea L |
88 | |
89 | /* Support sysdeps/i386/i686/multiarch/memmove.S. */ | |
90 | IFUNC_IMPL (i, name, memmove, | |
1aee37a2 | 91 | IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 92 | __memmove_ssse3_rep) |
1aee37a2 | 93 | IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 94 | __memmove_ssse3) |
1aee37a2 | 95 | IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSE2), |
8b4416d8 | 96 | __memmove_sse2_unaligned) |
b090e8ea L |
97 | IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ia32)) |
98 | ||
99 | /* Support sysdeps/i386/i686/multiarch/memrchr.S. */ | |
100 | IFUNC_IMPL (i, name, memrchr, | |
1aee37a2 | 101 | IFUNC_IMPL_ADD (array, i, memrchr, HAS_CPU_FEATURE (SSE2), |
b090e8ea | 102 | __memrchr_sse2_bsf) |
1aee37a2 L |
103 | IFUNC_IMPL_ADD (array, i, memrchr, HAS_CPU_FEATURE (SSE2), |
104 | __memrchr_sse2) | |
b090e8ea L |
105 | IFUNC_IMPL_ADD (array, i, memrchr, 1, __memrchr_ia32)) |
106 | ||
47f27396 | 107 | #ifdef SHARED |
b090e8ea L |
108 | /* Support sysdeps/i386/i686/multiarch/memset_chk.S. */ |
109 | IFUNC_IMPL (i, name, __memset_chk, | |
1aee37a2 L |
110 | IFUNC_IMPL_ADD (array, i, __memset_chk, |
111 | HAS_CPU_FEATURE (SSE2), | |
b090e8ea | 112 | __memset_chk_sse2_rep) |
1aee37a2 L |
113 | IFUNC_IMPL_ADD (array, i, __memset_chk, |
114 | HAS_CPU_FEATURE (SSE2), | |
b090e8ea L |
115 | __memset_chk_sse2) |
116 | IFUNC_IMPL_ADD (array, i, __memset_chk, 1, | |
117 | __memset_chk_ia32)) | |
47f27396 | 118 | #endif |
b090e8ea L |
119 | |
120 | /* Support sysdeps/i386/i686/multiarch/memset.S. */ | |
121 | IFUNC_IMPL (i, name, memset, | |
1aee37a2 | 122 | IFUNC_IMPL_ADD (array, i, memset, HAS_CPU_FEATURE (SSE2), |
b090e8ea | 123 | __memset_sse2_rep) |
1aee37a2 L |
124 | IFUNC_IMPL_ADD (array, i, memset, HAS_CPU_FEATURE (SSE2), |
125 | __memset_sse2) | |
b090e8ea L |
126 | IFUNC_IMPL_ADD (array, i, memset, 1, __memset_ia32)) |
127 | ||
128 | /* Support sysdeps/i386/i686/multiarch/rawmemchr.S. */ | |
129 | IFUNC_IMPL (i, name, rawmemchr, | |
1aee37a2 | 130 | IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_CPU_FEATURE (SSE2), |
b090e8ea | 131 | __rawmemchr_sse2_bsf) |
1aee37a2 | 132 | IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_CPU_FEATURE (SSE2), |
b090e8ea L |
133 | __rawmemchr_sse2) |
134 | IFUNC_IMPL_ADD (array, i, rawmemchr, 1, __rawmemchr_ia32)) | |
135 | ||
136 | /* Support sysdeps/i386/i686/multiarch/stpncpy.S. */ | |
137 | IFUNC_IMPL (i, name, stpncpy, | |
1aee37a2 | 138 | IFUNC_IMPL_ADD (array, i, stpncpy, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 139 | __stpncpy_ssse3) |
1aee37a2 L |
140 | IFUNC_IMPL_ADD (array, i, stpncpy, HAS_CPU_FEATURE (SSE2), |
141 | __stpncpy_sse2) | |
b090e8ea L |
142 | IFUNC_IMPL_ADD (array, i, stpncpy, 1, __stpncpy_ia32)) |
143 | ||
144 | /* Support sysdeps/i386/i686/multiarch/stpcpy.S. */ | |
145 | IFUNC_IMPL (i, name, stpcpy, | |
1aee37a2 L |
146 | IFUNC_IMPL_ADD (array, i, stpcpy, HAS_CPU_FEATURE (SSSE3), |
147 | __stpcpy_ssse3) | |
148 | IFUNC_IMPL_ADD (array, i, stpcpy, HAS_CPU_FEATURE (SSE2), | |
149 | __stpcpy_sse2) | |
b090e8ea L |
150 | IFUNC_IMPL_ADD (array, i, stpcpy, 1, __stpcpy_ia32)) |
151 | ||
152 | /* Support sysdeps/i386/i686/multiarch/strcasecmp.S. */ | |
153 | IFUNC_IMPL (i, name, strcasecmp, | |
1aee37a2 L |
154 | IFUNC_IMPL_ADD (array, i, strcasecmp, |
155 | HAS_CPU_FEATURE (SSE4_2), | |
b090e8ea | 156 | __strcasecmp_sse4_2) |
1aee37a2 L |
157 | IFUNC_IMPL_ADD (array, i, strcasecmp, |
158 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea L |
159 | __strcasecmp_ssse3) |
160 | IFUNC_IMPL_ADD (array, i, strcasecmp, 1, __strcasecmp_ia32)) | |
161 | ||
162 | /* Support sysdeps/i386/i686/multiarch/strcasecmp_l.S. */ | |
163 | IFUNC_IMPL (i, name, strcasecmp_l, | |
1aee37a2 L |
164 | IFUNC_IMPL_ADD (array, i, strcasecmp_l, |
165 | HAS_CPU_FEATURE (SSE4_2), | |
b090e8ea | 166 | __strcasecmp_l_sse4_2) |
1aee37a2 L |
167 | IFUNC_IMPL_ADD (array, i, strcasecmp_l, |
168 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea L |
169 | __strcasecmp_l_ssse3) |
170 | IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1, | |
171 | __strcasecmp_l_ia32)) | |
172 | ||
b090e8ea L |
173 | /* Support sysdeps/i386/i686/multiarch/strcat.S. */ |
174 | IFUNC_IMPL (i, name, strcat, | |
1aee37a2 L |
175 | IFUNC_IMPL_ADD (array, i, strcat, HAS_CPU_FEATURE (SSSE3), |
176 | __strcat_ssse3) | |
177 | IFUNC_IMPL_ADD (array, i, strcat, HAS_CPU_FEATURE (SSE2), | |
178 | __strcat_sse2) | |
b090e8ea L |
179 | IFUNC_IMPL_ADD (array, i, strcat, 1, __strcat_ia32)) |
180 | ||
181 | /* Support sysdeps/i386/i686/multiarch/strchr.S. */ | |
182 | IFUNC_IMPL (i, name, strchr, | |
1aee37a2 | 183 | IFUNC_IMPL_ADD (array, i, strchr, HAS_CPU_FEATURE (SSE2), |
b090e8ea | 184 | __strchr_sse2_bsf) |
1aee37a2 L |
185 | IFUNC_IMPL_ADD (array, i, strchr, HAS_CPU_FEATURE (SSE2), |
186 | __strchr_sse2) | |
b090e8ea L |
187 | IFUNC_IMPL_ADD (array, i, strchr, 1, __strchr_ia32)) |
188 | ||
189 | /* Support sysdeps/i386/i686/multiarch/strcmp.S. */ | |
190 | IFUNC_IMPL (i, name, strcmp, | |
1aee37a2 | 191 | IFUNC_IMPL_ADD (array, i, strcmp, HAS_CPU_FEATURE (SSE4_2), |
b090e8ea | 192 | __strcmp_sse4_2) |
1aee37a2 L |
193 | IFUNC_IMPL_ADD (array, i, strcmp, HAS_CPU_FEATURE (SSSE3), |
194 | __strcmp_ssse3) | |
b090e8ea L |
195 | IFUNC_IMPL_ADD (array, i, strcmp, 1, __strcmp_ia32)) |
196 | ||
197 | /* Support sysdeps/i386/i686/multiarch/strcpy.S. */ | |
198 | IFUNC_IMPL (i, name, strcpy, | |
1aee37a2 L |
199 | IFUNC_IMPL_ADD (array, i, strcpy, HAS_CPU_FEATURE (SSSE3), |
200 | __strcpy_ssse3) | |
201 | IFUNC_IMPL_ADD (array, i, strcpy, HAS_CPU_FEATURE (SSE2), | |
202 | __strcpy_sse2) | |
b090e8ea L |
203 | IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_ia32)) |
204 | ||
205 | /* Support sysdeps/i386/i686/multiarch/strcspn.S. */ | |
206 | IFUNC_IMPL (i, name, strcspn, | |
1aee37a2 | 207 | IFUNC_IMPL_ADD (array, i, strcspn, HAS_CPU_FEATURE (SSE4_2), |
b090e8ea L |
208 | __strcspn_sse42) |
209 | IFUNC_IMPL_ADD (array, i, strcspn, 1, __strcspn_ia32)) | |
210 | ||
211 | /* Support sysdeps/i386/i686/multiarch/strncase.S. */ | |
212 | IFUNC_IMPL (i, name, strncasecmp, | |
1aee37a2 L |
213 | IFUNC_IMPL_ADD (array, i, strncasecmp, |
214 | HAS_CPU_FEATURE (SSE4_2), | |
b090e8ea | 215 | __strncasecmp_sse4_2) |
1aee37a2 L |
216 | IFUNC_IMPL_ADD (array, i, strncasecmp, |
217 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea L |
218 | __strncasecmp_ssse3) |
219 | IFUNC_IMPL_ADD (array, i, strncasecmp, 1, | |
220 | __strncasecmp_ia32)) | |
221 | ||
222 | /* Support sysdeps/i386/i686/multiarch/strncase_l.S. */ | |
223 | IFUNC_IMPL (i, name, strncasecmp_l, | |
224 | IFUNC_IMPL_ADD (array, i, strncasecmp_l, | |
1aee37a2 L |
225 | HAS_CPU_FEATURE (SSE4_2), |
226 | __strncasecmp_l_sse4_2) | |
b090e8ea | 227 | IFUNC_IMPL_ADD (array, i, strncasecmp_l, |
1aee37a2 L |
228 | HAS_CPU_FEATURE (SSSE3), |
229 | __strncasecmp_l_ssse3) | |
b090e8ea L |
230 | IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1, |
231 | __strncasecmp_l_ia32)) | |
232 | ||
233 | /* Support sysdeps/i386/i686/multiarch/strncat.S. */ | |
234 | IFUNC_IMPL (i, name, strncat, | |
1aee37a2 | 235 | IFUNC_IMPL_ADD (array, i, strncat, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 236 | __strncat_ssse3) |
1aee37a2 L |
237 | IFUNC_IMPL_ADD (array, i, strncat, HAS_CPU_FEATURE (SSE2), |
238 | __strncat_sse2) | |
b090e8ea L |
239 | IFUNC_IMPL_ADD (array, i, strncat, 1, __strncat_ia32)) |
240 | ||
241 | /* Support sysdeps/i386/i686/multiarch/strncpy.S. */ | |
242 | IFUNC_IMPL (i, name, strncpy, | |
1aee37a2 | 243 | IFUNC_IMPL_ADD (array, i, strncpy, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 244 | __strncpy_ssse3) |
1aee37a2 L |
245 | IFUNC_IMPL_ADD (array, i, strncpy, HAS_CPU_FEATURE (SSE2), |
246 | __strncpy_sse2) | |
b090e8ea L |
247 | IFUNC_IMPL_ADD (array, i, strncpy, 1, __strncpy_ia32)) |
248 | ||
249 | /* Support sysdeps/i386/i686/multiarch/strnlen.S. */ | |
250 | IFUNC_IMPL (i, name, strnlen, | |
1aee37a2 L |
251 | IFUNC_IMPL_ADD (array, i, strnlen, HAS_CPU_FEATURE (SSE2), |
252 | __strnlen_sse2) | |
b090e8ea L |
253 | IFUNC_IMPL_ADD (array, i, strnlen, 1, __strnlen_ia32)) |
254 | ||
255 | /* Support sysdeps/i386/i686/multiarch/strpbrk.S. */ | |
256 | IFUNC_IMPL (i, name, strpbrk, | |
1aee37a2 | 257 | IFUNC_IMPL_ADD (array, i, strpbrk, HAS_CPU_FEATURE (SSE4_2), |
b090e8ea L |
258 | __strpbrk_sse42) |
259 | IFUNC_IMPL_ADD (array, i, strpbrk, 1, __strpbrk_ia32)) | |
260 | ||
261 | /* Support sysdeps/i386/i686/multiarch/strrchr.S. */ | |
262 | IFUNC_IMPL (i, name, strrchr, | |
1aee37a2 | 263 | IFUNC_IMPL_ADD (array, i, strrchr, HAS_CPU_FEATURE (SSE2), |
b090e8ea | 264 | __strrchr_sse2_bsf) |
1aee37a2 L |
265 | IFUNC_IMPL_ADD (array, i, strrchr, HAS_CPU_FEATURE (SSE2), |
266 | __strrchr_sse2) | |
b090e8ea L |
267 | IFUNC_IMPL_ADD (array, i, strrchr, 1, __strrchr_ia32)) |
268 | ||
269 | /* Support sysdeps/i386/i686/multiarch/strspn.S. */ | |
270 | IFUNC_IMPL (i, name, strspn, | |
1aee37a2 L |
271 | IFUNC_IMPL_ADD (array, i, strspn, HAS_CPU_FEATURE (SSE4_2), |
272 | __strspn_sse42) | |
b090e8ea L |
273 | IFUNC_IMPL_ADD (array, i, strspn, 1, __strspn_ia32)) |
274 | ||
b090e8ea L |
275 | /* Support sysdeps/i386/i686/multiarch/wcschr.S. */ |
276 | IFUNC_IMPL (i, name, wcschr, | |
1aee37a2 L |
277 | IFUNC_IMPL_ADD (array, i, wcschr, HAS_CPU_FEATURE (SSE2), |
278 | __wcschr_sse2) | |
b090e8ea L |
279 | IFUNC_IMPL_ADD (array, i, wcschr, 1, __wcschr_ia32)) |
280 | ||
281 | /* Support sysdeps/i386/i686/multiarch/wcscmp.S. */ | |
282 | IFUNC_IMPL (i, name, wcscmp, | |
1aee37a2 L |
283 | IFUNC_IMPL_ADD (array, i, wcscmp, HAS_CPU_FEATURE (SSE2), |
284 | __wcscmp_sse2) | |
b090e8ea L |
285 | IFUNC_IMPL_ADD (array, i, wcscmp, 1, __wcscmp_ia32)) |
286 | ||
287 | /* Support sysdeps/i386/i686/multiarch/wcscpy.S. */ | |
288 | IFUNC_IMPL (i, name, wcscpy, | |
1aee37a2 L |
289 | IFUNC_IMPL_ADD (array, i, wcscpy, HAS_CPU_FEATURE (SSSE3), |
290 | __wcscpy_ssse3) | |
b090e8ea L |
291 | IFUNC_IMPL_ADD (array, i, wcscpy, 1, __wcscpy_ia32)) |
292 | ||
293 | /* Support sysdeps/i386/i686/multiarch/wcslen.S. */ | |
294 | IFUNC_IMPL (i, name, wcslen, | |
1aee37a2 L |
295 | IFUNC_IMPL_ADD (array, i, wcslen, HAS_CPU_FEATURE (SSE2), |
296 | __wcslen_sse2) | |
b090e8ea L |
297 | IFUNC_IMPL_ADD (array, i, wcslen, 1, __wcslen_ia32)) |
298 | ||
299 | /* Support sysdeps/i386/i686/multiarch/wcsrchr.S. */ | |
300 | IFUNC_IMPL (i, name, wcsrchr, | |
1aee37a2 L |
301 | IFUNC_IMPL_ADD (array, i, wcsrchr, HAS_CPU_FEATURE (SSE2), |
302 | __wcsrchr_sse2) | |
b090e8ea L |
303 | IFUNC_IMPL_ADD (array, i, wcsrchr, 1, __wcsrchr_ia32)) |
304 | ||
305 | /* Support sysdeps/i386/i686/multiarch/wmemcmp.S. */ | |
306 | IFUNC_IMPL (i, name, wmemcmp, | |
1aee37a2 | 307 | IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_CPU_FEATURE (SSE4_2), |
b090e8ea | 308 | __wmemcmp_sse4_2) |
1aee37a2 | 309 | IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_CPU_FEATURE (SSSE3), |
b090e8ea L |
310 | __wmemcmp_ssse3) |
311 | IFUNC_IMPL_ADD (array, i, wmemcmp, 1, __wmemcmp_ia32)) | |
312 | ||
313 | #ifdef SHARED | |
314 | /* Support sysdeps/i386/i686/multiarch/memcpy_chk.S. */ | |
315 | IFUNC_IMPL (i, name, __memcpy_chk, | |
1aee37a2 L |
316 | IFUNC_IMPL_ADD (array, i, __memcpy_chk, |
317 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea | 318 | __memcpy_chk_ssse3_rep) |
1aee37a2 L |
319 | IFUNC_IMPL_ADD (array, i, __memcpy_chk, |
320 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea | 321 | __memcpy_chk_ssse3) |
1aee37a2 L |
322 | IFUNC_IMPL_ADD (array, i, __memcpy_chk, |
323 | HAS_CPU_FEATURE (SSE2), | |
8b4416d8 | 324 | __memcpy_chk_sse2_unaligned) |
b090e8ea L |
325 | IFUNC_IMPL_ADD (array, i, __memcpy_chk, 1, |
326 | __memcpy_chk_ia32)) | |
327 | ||
328 | /* Support sysdeps/i386/i686/multiarch/memcpy.S. */ | |
329 | IFUNC_IMPL (i, name, memcpy, | |
1aee37a2 | 330 | IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 331 | __memcpy_ssse3_rep) |
1aee37a2 L |
332 | IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3), |
333 | __memcpy_ssse3) | |
334 | IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSE2), | |
8b4416d8 | 335 | __memcpy_sse2_unaligned) |
b090e8ea L |
336 | IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ia32)) |
337 | ||
338 | /* Support sysdeps/i386/i686/multiarch/mempcpy_chk.S. */ | |
339 | IFUNC_IMPL (i, name, __mempcpy_chk, | |
1aee37a2 L |
340 | IFUNC_IMPL_ADD (array, i, __mempcpy_chk, |
341 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea | 342 | __mempcpy_chk_ssse3_rep) |
1aee37a2 L |
343 | IFUNC_IMPL_ADD (array, i, __mempcpy_chk, |
344 | HAS_CPU_FEATURE (SSSE3), | |
b090e8ea | 345 | __mempcpy_chk_ssse3) |
1aee37a2 L |
346 | IFUNC_IMPL_ADD (array, i, __mempcpy_chk, |
347 | HAS_CPU_FEATURE (SSE2), | |
8b4416d8 | 348 | __mempcpy_chk_sse2_unaligned) |
b090e8ea L |
349 | IFUNC_IMPL_ADD (array, i, __mempcpy_chk, 1, |
350 | __mempcpy_chk_ia32)) | |
351 | ||
352 | /* Support sysdeps/i386/i686/multiarch/mempcpy.S. */ | |
353 | IFUNC_IMPL (i, name, mempcpy, | |
1aee37a2 | 354 | IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 355 | __mempcpy_ssse3_rep) |
1aee37a2 | 356 | IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3), |
b090e8ea | 357 | __mempcpy_ssse3) |
1aee37a2 | 358 | IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSE2), |
8b4416d8 | 359 | __mempcpy_sse2_unaligned) |
b090e8ea L |
360 | IFUNC_IMPL_ADD (array, i, mempcpy, 1, __mempcpy_ia32)) |
361 | ||
362 | /* Support sysdeps/i386/i686/multiarch/strlen.S. */ | |
363 | IFUNC_IMPL (i, name, strlen, | |
1aee37a2 | 364 | IFUNC_IMPL_ADD (array, i, strlen, HAS_CPU_FEATURE (SSE2), |
b090e8ea | 365 | __strlen_sse2_bsf) |
1aee37a2 L |
366 | IFUNC_IMPL_ADD (array, i, strlen, HAS_CPU_FEATURE (SSE2), |
367 | __strlen_sse2) | |
b090e8ea L |
368 | IFUNC_IMPL_ADD (array, i, strlen, 1, __strlen_ia32)) |
369 | ||
370 | /* Support sysdeps/i386/i686/multiarch/strncmp.S. */ | |
371 | IFUNC_IMPL (i, name, strncmp, | |
1aee37a2 | 372 | IFUNC_IMPL_ADD (array, i, strncmp, HAS_CPU_FEATURE (SSE4_2), |
b090e8ea | 373 | __strncmp_sse4_2) |
1aee37a2 | 374 | IFUNC_IMPL_ADD (array, i, strncmp, HAS_CPU_FEATURE (SSSE3), |
b090e8ea L |
375 | __strncmp_ssse3) |
376 | IFUNC_IMPL_ADD (array, i, strncmp, 1, __strncmp_ia32)) | |
377 | #endif | |
378 | ||
379 | return i; | |
380 | } |