1 /* Enumerate available IFUNC implementations of a function. s390/s390x version.
2 Copyright (C) 2015-2019 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
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.
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.
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/>. */
22 #include <ifunc-impl-list.h>
23 #include <ifunc-resolve.h>
24 #include <ifunc-memset.h>
25 #include <ifunc-memcmp.h>
26 #include <ifunc-memcpy.h>
27 #include <ifunc-strstr.h>
28 #include <ifunc-memmem.h>
29 #include <ifunc-strlen.h>
30 #include <ifunc-strnlen.h>
31 #include <ifunc-strcpy.h>
32 #include <ifunc-stpcpy.h>
33 #include <ifunc-strncpy.h>
34 #include <ifunc-stpncpy.h>
35 #include <ifunc-strcat.h>
36 #include <ifunc-strncat.h>
37 #include <ifunc-strcmp.h>
38 #include <ifunc-strncmp.h>
39 #include <ifunc-strchr.h>
40 #include <ifunc-strchrnul.h>
41 #include <ifunc-strrchr.h>
42 #include <ifunc-strspn.h>
43 #include <ifunc-strpbrk.h>
44 #include <ifunc-strcspn.h>
45 #include <ifunc-memchr.h>
46 #include <ifunc-rawmemchr.h>
47 #include <ifunc-memccpy.h>
48 #include <ifunc-memrchr.h>
49 #include <ifunc-wcslen.h>
50 #include <ifunc-wcsnlen.h>
51 #include <ifunc-wcscpy.h>
52 #include <ifunc-wcpcpy.h>
53 #include <ifunc-wcsncpy.h>
54 #include <ifunc-wcpncpy.h>
55 #include <ifunc-wcscat.h>
56 #include <ifunc-wcsncat.h>
57 #include <ifunc-wcscmp.h>
58 #include <ifunc-wcsncmp.h>
59 #include <ifunc-wcschr.h>
60 #include <ifunc-wcschrnul.h>
61 #include <ifunc-wcsrchr.h>
62 #include <ifunc-wcsspn.h>
63 #include <ifunc-wcspbrk.h>
64 #include <ifunc-wcscspn.h>
65 #include <ifunc-wmemchr.h>
66 #include <ifunc-wmemset.h>
67 #include <ifunc-wmemcmp.h>
69 /* Maximum number of IFUNC implementations. */
72 /* Fill ARRAY of MAX elements with IFUNC implementations for function
73 NAME supported on target machine and return the number of valid
76 __libc_ifunc_impl_list (const char *name
, struct libc_ifunc_impl
*array
,
79 assert (max
>= MAX_IFUNC
);
83 /* Get hardware information. */
84 unsigned long int dl_hwcap
= GLRO (dl_hwcap
);
85 unsigned long long stfle_bits
= 0ULL;
86 if ((dl_hwcap
& HWCAP_S390_STFLE
)
87 && (dl_hwcap
& HWCAP_S390_ZARCH
)
88 && (dl_hwcap
& HWCAP_S390_HIGH_GPRS
))
90 S390_STORE_STFLE (stfle_bits
);
94 IFUNC_IMPL (i
, name
, memset
,
96 IFUNC_IMPL_ADD (array
, i
, memset
,
97 S390_IS_Z196 (stfle_bits
), MEMSET_Z196
)
100 IFUNC_IMPL_ADD (array
, i
, memset
,
101 S390_IS_Z10 (stfle_bits
), MEMSET_Z10
)
103 # if HAVE_MEMSET_Z900_G5
104 IFUNC_IMPL_ADD (array
, i
, memset
, 1, MEMSET_Z900_G5
)
108 /* Note: bzero is implemented in memset. */
109 IFUNC_IMPL (i
, name
, bzero
,
110 # if HAVE_MEMSET_Z196
111 IFUNC_IMPL_ADD (array
, i
, bzero
,
112 S390_IS_Z196 (stfle_bits
), BZERO_Z196
)
115 IFUNC_IMPL_ADD (array
, i
, bzero
,
116 S390_IS_Z10 (stfle_bits
), BZERO_Z10
)
118 # if HAVE_MEMSET_Z900_G5
119 IFUNC_IMPL_ADD (array
, i
, bzero
, 1, BZERO_Z900_G5
)
122 #endif /* HAVE_MEMSET_IFUNC */
124 #if HAVE_MEMCMP_IFUNC
125 IFUNC_IMPL (i
, name
, memcmp
,
126 # if HAVE_MEMCMP_Z196
127 IFUNC_IMPL_ADD (array
, i
, memcmp
,
128 S390_IS_Z196 (stfle_bits
), MEMCMP_Z196
)
131 IFUNC_IMPL_ADD (array
, i
, memcmp
,
132 S390_IS_Z10 (stfle_bits
), MEMCMP_Z10
)
134 # if HAVE_MEMCMP_Z900_G5
135 IFUNC_IMPL_ADD (array
, i
, memcmp
, 1, MEMCMP_Z900_G5
)
138 #endif /* HAVE_MEMCMP_IFUNC */
140 #if HAVE_MEMCPY_IFUNC
141 IFUNC_IMPL (i
, name
, memcpy
,
142 # if HAVE_MEMCPY_Z196
143 IFUNC_IMPL_ADD (array
, i
, memcpy
,
144 S390_IS_Z196 (stfle_bits
), MEMCPY_Z196
)
147 IFUNC_IMPL_ADD (array
, i
, memcpy
,
148 S390_IS_Z10 (stfle_bits
), MEMCPY_Z10
)
150 # if HAVE_MEMCPY_Z900_G5
151 IFUNC_IMPL_ADD (array
, i
, memcpy
, 1, MEMCPY_Z900_G5
)
155 IFUNC_IMPL (i
, name
, mempcpy
,
156 # if HAVE_MEMCPY_Z196
157 IFUNC_IMPL_ADD (array
, i
, mempcpy
,
158 S390_IS_Z196 (stfle_bits
), MEMPCPY_Z196
)
161 IFUNC_IMPL_ADD (array
, i
, mempcpy
,
162 S390_IS_Z10 (stfle_bits
), MEMPCPY_Z10
)
164 # if HAVE_MEMCPY_Z900_G5
165 IFUNC_IMPL_ADD (array
, i
, mempcpy
, 1, MEMPCPY_Z900_G5
)
168 #endif /* HAVE_MEMCPY_IFUNC */
170 #if HAVE_MEMMOVE_IFUNC
171 IFUNC_IMPL (i
, name
, memmove
,
172 # if HAVE_MEMMOVE_ARCH13
173 IFUNC_IMPL_ADD (array
, i
, memmove
,
174 S390_IS_ARCH13_MIE3 (stfle_bits
),
177 # if HAVE_MEMMOVE_Z13
178 IFUNC_IMPL_ADD (array
, i
, memmove
,
179 dl_hwcap
& HWCAP_S390_VX
, MEMMOVE_Z13
)
182 IFUNC_IMPL_ADD (array
, i
, memmove
, 1, MEMMOVE_C
)
185 #endif /* HAVE_MEMMOVE_IFUNC */
187 #if HAVE_STRSTR_IFUNC
188 IFUNC_IMPL (i
, name
, strstr
,
189 # if HAVE_STRSTR_ARCH13
190 IFUNC_IMPL_ADD (array
, i
, strstr
,
191 dl_hwcap
& HWCAP_S390_VXRS_EXT2
, STRSTR_ARCH13
)
194 IFUNC_IMPL_ADD (array
, i
, strstr
,
195 dl_hwcap
& HWCAP_S390_VX
, STRSTR_Z13
)
198 IFUNC_IMPL_ADD (array
, i
, strstr
, 1, STRSTR_C
)
201 #endif /* HAVE_STRSTR_IFUNC */
203 #if HAVE_MEMMEM_IFUNC
204 IFUNC_IMPL (i
, name
, memmem
,
205 # if HAVE_MEMMEM_ARCH13
206 IFUNC_IMPL_ADD (array
, i
, memmem
,
207 dl_hwcap
& HWCAP_S390_VXRS_EXT2
, MEMMEM_ARCH13
)
210 IFUNC_IMPL_ADD (array
, i
, memmem
,
211 dl_hwcap
& HWCAP_S390_VX
, MEMMEM_Z13
)
214 IFUNC_IMPL_ADD (array
, i
, memmem
, 1, MEMMEM_C
)
217 #endif /* HAVE_MEMMEM_IFUNC */
219 #if HAVE_STRLEN_IFUNC
220 IFUNC_IMPL (i
, name
, strlen
,
222 IFUNC_IMPL_ADD (array
, i
, strlen
,
223 dl_hwcap
& HWCAP_S390_VX
, STRLEN_Z13
)
226 IFUNC_IMPL_ADD (array
, i
, strlen
, 1, STRLEN_C
)
229 #endif /* HAVE_STRLEN_IFUNC */
231 #if HAVE_STRNLEN_IFUNC
232 IFUNC_IMPL (i
, name
, strnlen
,
233 # if HAVE_STRNLEN_Z13
234 IFUNC_IMPL_ADD (array
, i
, strnlen
,
235 dl_hwcap
& HWCAP_S390_VX
, STRNLEN_Z13
)
238 IFUNC_IMPL_ADD (array
, i
, strnlen
, 1, STRNLEN_C
)
241 #endif /* HAVE_STRNLEN_IFUNC */
243 #if HAVE_STRCPY_IFUNC
244 IFUNC_IMPL (i
, name
, strcpy
,
246 IFUNC_IMPL_ADD (array
, i
, strcpy
,
247 dl_hwcap
& HWCAP_S390_VX
, STRCPY_Z13
)
249 # if HAVE_STRCPY_Z900_G5
250 IFUNC_IMPL_ADD (array
, i
, strcpy
, 1, STRCPY_Z900_G5
)
253 #endif /* HAVE_STRCPY_IFUNC */
255 #if HAVE_STPCPY_IFUNC
256 IFUNC_IMPL (i
, name
, stpcpy
,
258 IFUNC_IMPL_ADD (array
, i
, stpcpy
,
259 dl_hwcap
& HWCAP_S390_VX
, STPCPY_Z13
)
262 IFUNC_IMPL_ADD (array
, i
, stpcpy
, 1, STPCPY_C
)
265 #endif /* HAVE_STPCPY_IFUNC */
267 #if HAVE_STRNCPY_IFUNC
268 IFUNC_IMPL (i
, name
, strncpy
,
269 # if HAVE_STRNCPY_Z13
270 IFUNC_IMPL_ADD (array
, i
, strncpy
,
271 dl_hwcap
& HWCAP_S390_VX
, STRNCPY_Z13
)
273 # if HAVE_STRNCPY_Z900_G5
274 IFUNC_IMPL_ADD (array
, i
, strncpy
, 1, STRNCPY_Z900_G5
)
277 #endif /* HAVE_STRNCPY_IFUNC */
279 #if HAVE_STPNCPY_IFUNC
280 IFUNC_IMPL (i
, name
, stpncpy
,
281 # if HAVE_STPNCPY_Z13
282 IFUNC_IMPL_ADD (array
, i
, stpncpy
,
283 dl_hwcap
& HWCAP_S390_VX
, STPNCPY_Z13
)
286 IFUNC_IMPL_ADD (array
, i
, stpncpy
, 1, STPNCPY_C
)
289 #endif /* HAVE_STPNCPY_IFUNC */
291 #if HAVE_STRCAT_IFUNC
292 IFUNC_IMPL (i
, name
, strcat
,
294 IFUNC_IMPL_ADD (array
, i
, strcat
,
295 dl_hwcap
& HWCAP_S390_VX
, STRCAT_Z13
)
298 IFUNC_IMPL_ADD (array
, i
, strcat
, 1, STRCAT_C
)
301 #endif /* HAVE_STRCAT_IFUNC */
303 #if HAVE_STRNCAT_IFUNC
304 IFUNC_IMPL (i
, name
, strncat
,
305 # if HAVE_STRNCAT_Z13
306 IFUNC_IMPL_ADD (array
, i
, strncat
,
307 dl_hwcap
& HWCAP_S390_VX
, STRNCAT_Z13
)
310 IFUNC_IMPL_ADD (array
, i
, strncat
, 1, STRNCAT_C
)
313 #endif /* HAVE_STRNCAT_IFUNC */
315 #if HAVE_STRCMP_IFUNC
316 IFUNC_IMPL (i
, name
, strcmp
,
318 IFUNC_IMPL_ADD (array
, i
, strcmp
,
319 dl_hwcap
& HWCAP_S390_VX
, STRCMP_Z13
)
321 # if HAVE_STRCMP_Z900_G5
322 IFUNC_IMPL_ADD (array
, i
, strcmp
, 1, STRCMP_Z900_G5
)
325 #endif /* HAVE_STRCMP_IFUNC */
327 #if HAVE_STRNCMP_IFUNC
328 IFUNC_IMPL (i
, name
, strncmp
,
329 # if HAVE_STRNCMP_Z13
330 IFUNC_IMPL_ADD (array
, i
, strncmp
,
331 dl_hwcap
& HWCAP_S390_VX
, STRNCMP_Z13
)
334 IFUNC_IMPL_ADD (array
, i
, strncmp
, 1, STRNCMP_C
)
337 #endif /* HAVE_STRNCMP_IFUNC */
339 #if HAVE_STRCHR_IFUNC
340 IFUNC_IMPL (i
, name
, strchr
,
342 IFUNC_IMPL_ADD (array
, i
, strchr
,
343 dl_hwcap
& HWCAP_S390_VX
, STRCHR_Z13
)
346 IFUNC_IMPL_ADD (array
, i
, strchr
, 1, STRCHR_C
)
349 #endif /* HAVE_STRCHR_IFUNC */
351 #if HAVE_STRCHRNUL_IFUNC
352 IFUNC_IMPL (i
, name
, strchrnul
,
353 # if HAVE_STRCHRNUL_Z13
354 IFUNC_IMPL_ADD (array
, i
, strchrnul
,
355 dl_hwcap
& HWCAP_S390_VX
, STRCHRNUL_Z13
)
357 # if HAVE_STRCHRNUL_C
358 IFUNC_IMPL_ADD (array
, i
, strchrnul
, 1, STRCHRNUL_C
)
361 #endif /* HAVE_STRCHRNUL_IFUNC */
363 #if HAVE_STRRCHR_IFUNC
364 IFUNC_IMPL (i
, name
, strrchr
,
365 # if HAVE_STRRCHR_Z13
366 IFUNC_IMPL_ADD (array
, i
, strrchr
,
367 dl_hwcap
& HWCAP_S390_VX
, STRRCHR_Z13
)
370 IFUNC_IMPL_ADD (array
, i
, strrchr
, 1, STRRCHR_C
)
373 #endif /* HAVE_STRRCHR_IFUNC */
375 #if HAVE_STRSPN_IFUNC
376 IFUNC_IMPL (i
, name
, strspn
,
378 IFUNC_IMPL_ADD (array
, i
, strspn
,
379 dl_hwcap
& HWCAP_S390_VX
, STRSPN_Z13
)
382 IFUNC_IMPL_ADD (array
, i
, strspn
, 1, STRSPN_C
)
385 #endif /* HAVE_STRSPN_IFUNC */
387 #if HAVE_STRPBRK_IFUNC
388 IFUNC_IMPL (i
, name
, strpbrk
,
389 # if HAVE_STRPBRK_Z13
390 IFUNC_IMPL_ADD (array
, i
, strpbrk
,
391 dl_hwcap
& HWCAP_S390_VX
, STRPBRK_Z13
)
394 IFUNC_IMPL_ADD (array
, i
, strpbrk
, 1, STRPBRK_C
)
397 #endif /* HAVE_STRPBRK_IFUNC */
399 #if HAVE_STRCSPN_IFUNC
400 IFUNC_IMPL (i
, name
, strcspn
,
401 # if HAVE_STRCSPN_Z13
402 IFUNC_IMPL_ADD (array
, i
, strcspn
,
403 dl_hwcap
& HWCAP_S390_VX
, STRCSPN_Z13
)
406 IFUNC_IMPL_ADD (array
, i
, strcspn
, 1, STRCSPN_C
)
409 #endif /* HAVE_STRCSPN_IFUNC */
411 #if HAVE_MEMCHR_IFUNC
412 IFUNC_IMPL (i
, name
, memchr
,
414 IFUNC_IMPL_ADD (array
, i
, memchr
,
415 dl_hwcap
& HWCAP_S390_VX
, MEMCHR_Z13
)
417 # if HAVE_MEMCHR_Z900_G5
418 IFUNC_IMPL_ADD (array
, i
, memchr
, 1, MEMCHR_Z900_G5
)
421 #endif /* HAVE_MEMCHR_IFUNC */
423 #if HAVE_RAWMEMCHR_IFUNC
424 IFUNC_IMPL (i
, name
, rawmemchr
,
425 # if HAVE_RAWMEMCHR_Z13
426 IFUNC_IMPL_ADD (array
, i
, rawmemchr
,
427 dl_hwcap
& HWCAP_S390_VX
, RAWMEMCHR_Z13
)
429 # if HAVE_RAWMEMCHR_C
430 IFUNC_IMPL_ADD (array
, i
, rawmemchr
, 1, RAWMEMCHR_C
)
433 #endif /* HAVE_RAWMEMCHR_IFUNC */
435 #if HAVE_MEMCCPY_IFUNC
436 IFUNC_IMPL (i
, name
, memccpy
,
437 # if HAVE_MEMCCPY_Z13
438 IFUNC_IMPL_ADD (array
, i
, memccpy
,
439 dl_hwcap
& HWCAP_S390_VX
, MEMCCPY_Z13
)
442 IFUNC_IMPL_ADD (array
, i
, memccpy
, 1, MEMCCPY_C
)
445 #endif /* HAVE_MEMCCPY_IFUNC */
447 #if HAVE_MEMRCHR_IFUNC
448 IFUNC_IMPL (i
, name
, memrchr
,
449 # if HAVE_MEMRCHR_Z13
450 IFUNC_IMPL_ADD (array
, i
, memrchr
,
451 dl_hwcap
& HWCAP_S390_VX
, MEMRCHR_Z13
)
454 IFUNC_IMPL_ADD (array
, i
, memrchr
, 1, MEMRCHR_C
)
457 #endif /* HAVE_MEMRCHR_IFUNC */
459 #if HAVE_WCSLEN_IFUNC
460 IFUNC_IMPL (i
, name
, wcslen
,
462 IFUNC_IMPL_ADD (array
, i
, wcslen
,
463 dl_hwcap
& HWCAP_S390_VX
, WCSLEN_Z13
)
466 IFUNC_IMPL_ADD (array
, i
, wcslen
, 1, WCSLEN_C
)
469 #endif /* HAVE_WCSLEN_IFUNC */
471 #if HAVE_WCSNLEN_IFUNC
472 IFUNC_IMPL (i
, name
, wcsnlen
,
473 # if HAVE_WCSNLEN_Z13
474 IFUNC_IMPL_ADD (array
, i
, wcsnlen
,
475 dl_hwcap
& HWCAP_S390_VX
, WCSNLEN_Z13
)
478 IFUNC_IMPL_ADD (array
, i
, wcsnlen
, 1, WCSNLEN_C
)
481 #endif /* HAVE_WCSNLEN_IFUNC */
483 #if HAVE_WCSCPY_IFUNC
484 IFUNC_IMPL (i
, name
, wcscpy
,
486 IFUNC_IMPL_ADD (array
, i
, wcscpy
,
487 dl_hwcap
& HWCAP_S390_VX
, WCSCPY_Z13
)
490 IFUNC_IMPL_ADD (array
, i
, wcscpy
, 1, WCSCPY_C
)
493 #endif /* HAVE_WCSCPY_IFUNC */
495 #if HAVE_WCPCPY_IFUNC
496 IFUNC_IMPL (i
, name
, wcpcpy
,
498 IFUNC_IMPL_ADD (array
, i
, wcpcpy
,
499 dl_hwcap
& HWCAP_S390_VX
, WCPCPY_Z13
)
502 IFUNC_IMPL_ADD (array
, i
, wcpcpy
, 1, WCPCPY_C
)
505 #endif /* HAVE_WCPCPY_IFUNC */
507 #if HAVE_WCSNCPY_IFUNC
508 IFUNC_IMPL (i
, name
, wcsncpy
,
509 # if HAVE_WCSNCPY_Z13
510 IFUNC_IMPL_ADD (array
, i
, wcsncpy
,
511 dl_hwcap
& HWCAP_S390_VX
, WCSNCPY_Z13
)
514 IFUNC_IMPL_ADD (array
, i
, wcsncpy
, 1, WCSNCPY_C
)
517 #endif /* HAVE_WCSNCPY_IFUNC */
519 #if HAVE_WCPNCPY_IFUNC
520 IFUNC_IMPL (i
, name
, wcpncpy
,
521 # if HAVE_WCPNCPY_Z13
522 IFUNC_IMPL_ADD (array
, i
, wcpncpy
,
523 dl_hwcap
& HWCAP_S390_VX
, WCPNCPY_Z13
)
526 IFUNC_IMPL_ADD (array
, i
, wcpncpy
, 1, WCPNCPY_C
)
529 #endif /* HAVE_WCPNCPY_IFUNC */
531 #if HAVE_WCSCAT_IFUNC
532 IFUNC_IMPL (i
, name
, wcscat
,
534 IFUNC_IMPL_ADD (array
, i
, wcscat
,
535 dl_hwcap
& HWCAP_S390_VX
, WCSCAT_Z13
)
538 IFUNC_IMPL_ADD (array
, i
, wcscat
, 1, WCSCAT_C
)
541 #endif /* HAVE_WCSCAT_IFUNC */
543 #if HAVE_WCSNCAT_IFUNC
544 IFUNC_IMPL (i
, name
, wcsncat
,
545 # if HAVE_WCSNCAT_Z13
546 IFUNC_IMPL_ADD (array
, i
, wcsncat
,
547 dl_hwcap
& HWCAP_S390_VX
, WCSNCAT_Z13
)
550 IFUNC_IMPL_ADD (array
, i
, wcsncat
, 1, WCSNCAT_C
)
553 #endif /* HAVE_WCSNCAT_IFUNC */
555 #if HAVE_WCSCMP_IFUNC
556 IFUNC_IMPL (i
, name
, wcscmp
,
558 IFUNC_IMPL_ADD (array
, i
, wcscmp
,
559 dl_hwcap
& HWCAP_S390_VX
, WCSCMP_Z13
)
562 IFUNC_IMPL_ADD (array
, i
, wcscmp
, 1, WCSCMP_C
)
565 #endif /* HAVE_WCSCMP_IFUNC */
567 #if HAVE_WCSNCMP_IFUNC
568 IFUNC_IMPL (i
, name
, wcsncmp
,
569 # if HAVE_WCSNCMP_Z13
570 IFUNC_IMPL_ADD (array
, i
, wcsncmp
,
571 dl_hwcap
& HWCAP_S390_VX
, WCSNCMP_Z13
)
574 IFUNC_IMPL_ADD (array
, i
, wcsncmp
, 1, WCSNCMP_C
)
577 #endif /* HAVE_WCSNCMP_IFUNC */
579 #if HAVE_WCSCHR_IFUNC
580 IFUNC_IMPL (i
, name
, wcschr
,
582 IFUNC_IMPL_ADD (array
, i
, wcschr
,
583 dl_hwcap
& HWCAP_S390_VX
, WCSCHR_Z13
)
586 IFUNC_IMPL_ADD (array
, i
, wcschr
, 1, WCSCHR_C
)
589 #endif /* HAVE_WCSCHR_IFUNC */
591 #if HAVE_WCSCHRNUL_IFUNC
592 IFUNC_IMPL (i
, name
, wcschrnul
,
593 # if HAVE_WCSCHRNUL_Z13
594 IFUNC_IMPL_ADD (array
, i
, wcschrnul
,
595 dl_hwcap
& HWCAP_S390_VX
, WCSCHRNUL_Z13
)
597 # if HAVE_WCSCHRNUL_C
598 IFUNC_IMPL_ADD (array
, i
, wcschrnul
, 1, WCSCHRNUL_C
)
601 #endif /* HAVE_WCSCHRNUL_IFUNC */
603 #if HAVE_WCSRCHR_IFUNC
604 IFUNC_IMPL (i
, name
, wcsrchr
,
605 # if HAVE_WCSRCHR_Z13
606 IFUNC_IMPL_ADD (array
, i
, wcsrchr
,
607 dl_hwcap
& HWCAP_S390_VX
, WCSRCHR_Z13
)
610 IFUNC_IMPL_ADD (array
, i
, wcsrchr
, 1, WCSRCHR_C
)
613 #endif /* HAVE_WCSRCHR_IFUNC */
615 #if HAVE_WCSSPN_IFUNC
616 IFUNC_IMPL (i
, name
, wcsspn
,
618 IFUNC_IMPL_ADD (array
, i
, wcsspn
,
619 dl_hwcap
& HWCAP_S390_VX
, WCSSPN_Z13
)
622 IFUNC_IMPL_ADD (array
, i
, wcsspn
, 1, WCSSPN_C
)
625 #endif /* HAVE_WCSSPN_IFUNC */
627 #if HAVE_WCSPBRK_IFUNC
628 IFUNC_IMPL (i
, name
, wcspbrk
,
629 # if HAVE_WCSPBRK_Z13
630 IFUNC_IMPL_ADD (array
, i
, wcspbrk
,
631 dl_hwcap
& HWCAP_S390_VX
, WCSPBRK_Z13
)
634 IFUNC_IMPL_ADD (array
, i
, wcspbrk
, 1, WCSPBRK_C
)
637 #endif /* HAVE_WCSPBRK_IFUNC */
639 #if HAVE_WCSCSPN_IFUNC
640 IFUNC_IMPL (i
, name
, wcscspn
,
641 # if HAVE_WCSCSPN_Z13
642 IFUNC_IMPL_ADD (array
, i
, wcscspn
,
643 dl_hwcap
& HWCAP_S390_VX
, WCSCSPN_Z13
)
646 IFUNC_IMPL_ADD (array
, i
, wcscspn
, 1, WCSCSPN_C
)
649 #endif /* HAVE_WCSCSPN_IFUNC */
651 #if HAVE_WMEMCHR_IFUNC
652 IFUNC_IMPL (i
, name
, wmemchr
,
653 # if HAVE_WMEMCHR_Z13
654 IFUNC_IMPL_ADD (array
, i
, wmemchr
,
655 dl_hwcap
& HWCAP_S390_VX
, WMEMCHR_Z13
)
658 IFUNC_IMPL_ADD (array
, i
, wmemchr
, 1, WMEMCHR_C
)
661 #endif /* HAVE_WMEMCHR_IFUNC */
663 #if HAVE_WMEMSET_IFUNC
664 IFUNC_IMPL (i
, name
, wmemset
,
665 # if HAVE_WMEMSET_Z13
666 IFUNC_IMPL_ADD (array
, i
, wmemset
,
667 dl_hwcap
& HWCAP_S390_VX
, WMEMSET_Z13
)
670 IFUNC_IMPL_ADD (array
, i
, wmemset
, 1, WMEMSET_C
)
673 #endif /* HAVE_WMEMSET_IFUNC */
675 #if HAVE_WMEMCMP_IFUNC
676 IFUNC_IMPL (i
, name
, wmemcmp
,
677 # if HAVE_WMEMCMP_Z13
678 IFUNC_IMPL_ADD (array
, i
, wmemcmp
,
679 dl_hwcap
& HWCAP_S390_VX
, WMEMCMP_Z13
)
682 IFUNC_IMPL_ADD (array
, i
, wmemcmp
, 1, WMEMCMP_C
)
685 #endif /* HAVE_WMEMCMP_IFUNC */