]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/s390/multiarch/ifunc-impl-list.c
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / s390 / multiarch / ifunc-impl-list.c
index c33090412f784f4b8b8b0dd38a051e10a0a523dc..6210f50acbd990637f478fd4c6fb3a0adced9572 100644 (file)
@@ -1,5 +1,5 @@
 /* Enumerate available IFUNC implementations of a function. s390/s390x version.
-   Copyright (C) 2015 Free Software Foundation, Inc.
+   Copyright (C) 2015-2017 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -18,6 +18,7 @@
 
 #include <assert.h>
 #include <string.h>
+#include <wchar.h>
 #include <ifunc-impl-list.h>
 #include <ifunc-resolve.h>
 
@@ -68,7 +69,84 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
                              S390_IS_Z10 (stfle_bits), __memcpy_z10)
              IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_default))
 
+  IFUNC_IMPL (i, name, mempcpy,
+             IFUNC_IMPL_ADD (array, i, mempcpy,
+                             S390_IS_Z196 (stfle_bits), ____mempcpy_z196)
+             IFUNC_IMPL_ADD (array, i, mempcpy,
+                             S390_IS_Z10 (stfle_bits), ____mempcpy_z10)
+             IFUNC_IMPL_ADD (array, i, mempcpy, 1, ____mempcpy_default))
+
 #endif /* SHARED */
 
+#ifdef HAVE_S390_VX_ASM_SUPPORT
+
+# define IFUNC_VX_IMPL(FUNC)                                           \
+  IFUNC_IMPL (i, name, FUNC,                                           \
+             IFUNC_IMPL_ADD (array, i, FUNC, dl_hwcap & HWCAP_S390_VX, \
+                             __##FUNC##_vx)                            \
+             IFUNC_IMPL_ADD (array, i, FUNC, 1, __##FUNC##_c))
+
+  IFUNC_VX_IMPL (strlen);
+  IFUNC_VX_IMPL (wcslen);
+
+  IFUNC_VX_IMPL (strnlen);
+  IFUNC_VX_IMPL (wcsnlen);
+
+  IFUNC_VX_IMPL (strcpy);
+  IFUNC_VX_IMPL (wcscpy);
+
+  IFUNC_VX_IMPL (stpcpy);
+  IFUNC_VX_IMPL (wcpcpy);
+
+  IFUNC_VX_IMPL (strncpy);
+  IFUNC_VX_IMPL (wcsncpy);
+
+  IFUNC_VX_IMPL (stpncpy);
+  IFUNC_VX_IMPL (wcpncpy);
+
+  IFUNC_VX_IMPL (strcat);
+  IFUNC_VX_IMPL (wcscat);
+
+  IFUNC_VX_IMPL (strncat);
+  IFUNC_VX_IMPL (wcsncat);
+
+  IFUNC_VX_IMPL (strcmp);
+  IFUNC_VX_IMPL (wcscmp);
+
+  IFUNC_VX_IMPL (strncmp);
+  IFUNC_VX_IMPL (wcsncmp);
+
+  IFUNC_VX_IMPL (strchr);
+  IFUNC_VX_IMPL (wcschr);
+
+  IFUNC_VX_IMPL (strchrnul);
+  IFUNC_VX_IMPL (wcschrnul);
+
+  IFUNC_VX_IMPL (strrchr);
+  IFUNC_VX_IMPL (wcsrchr);
+
+  IFUNC_VX_IMPL (strspn);
+  IFUNC_VX_IMPL (wcsspn);
+
+  IFUNC_VX_IMPL (strpbrk);
+  IFUNC_VX_IMPL (wcspbrk);
+
+  IFUNC_VX_IMPL (strcspn);
+  IFUNC_VX_IMPL (wcscspn);
+
+  IFUNC_VX_IMPL (memchr);
+  IFUNC_VX_IMPL (wmemchr);
+  IFUNC_VX_IMPL (rawmemchr);
+
+  IFUNC_VX_IMPL (memccpy);
+
+  IFUNC_VX_IMPL (wmemset);
+
+  IFUNC_VX_IMPL (wmemcmp);
+
+  IFUNC_VX_IMPL (memrchr);
+
+#endif /* HAVE_S390_VX_ASM_SUPPORT */
+
   return i;
 }