1 /* memcpy variant information on S/390 version. 2 Copyright (C) 2018-2021 Free Software Foundation, Inc. 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 <https://www.gnu.org/licenses/>. */ 18 19 #if defined SHARED && defined USE_MULTIARCH && IS_IN (libc) \ 20 && ! defined HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT 21 # define HAVE_MEMCPY_IFUNC 1 22 #else 23 # define HAVE_MEMCPY_IFUNC 0 24 #endif 25 26 #if defined HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT 27 # define MEMCPY_DEFAULT MEMCPY_Z196 28 # define MEMPCPY_DEFAULT MEMPCPY_Z196 29 # define HAVE_MEMCPY_Z900_G5 0 30 # define HAVE_MEMCPY_Z10 0 31 # define HAVE_MEMCPY_Z196 1 32 #elif defined HAVE_S390_MIN_Z10_ZARCH_ASM_SUPPORT 33 # define MEMCPY_DEFAULT MEMCPY_Z10 34 # define MEMPCPY_DEFAULT MEMPCPY_Z10 35 # define HAVE_MEMCPY_Z900_G5 0 36 # define HAVE_MEMCPY_Z10 1 37 # define HAVE_MEMCPY_Z196 HAVE_MEMCPY_IFUNC 38 #else 39 # define MEMCPY_DEFAULT MEMCPY_Z900_G5 40 # define MEMPCPY_DEFAULT MEMPCPY_Z900_G5 41 # define HAVE_MEMCPY_Z900_G5 1 42 # define HAVE_MEMCPY_Z10 HAVE_MEMCPY_IFUNC 43 # define HAVE_MEMCPY_Z196 HAVE_MEMCPY_IFUNC 44 #endif 45 46 #if defined SHARED && defined USE_MULTIARCH && IS_IN (libc) \ 47 && ! defined HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT 48 # define HAVE_MEMMOVE_IFUNC 1 49 #else 50 # define HAVE_MEMMOVE_IFUNC 0 51 #endif 52 53 #ifdef HAVE_S390_VX_ASM_SUPPORT 54 # define HAVE_MEMMOVE_IFUNC_AND_VX_SUPPORT HAVE_MEMMOVE_IFUNC 55 #else 56 # define HAVE_MEMMOVE_IFUNC_AND_VX_SUPPORT 0 57 #endif 58 59 #ifdef HAVE_S390_ARCH13_ASM_SUPPORT 60 # define HAVE_MEMMOVE_IFUNC_AND_ARCH13_SUPPORT HAVE_MEMMOVE_IFUNC 61 #else 62 # define HAVE_MEMMOVE_IFUNC_AND_ARCH13_SUPPORT 0 63 #endif 64 65 #if defined HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT 66 # define MEMMOVE_DEFAULT MEMMOVE_ARCH13 67 # define HAVE_MEMMOVE_C 0 68 # define HAVE_MEMMOVE_Z13 0 69 # define HAVE_MEMMOVE_ARCH13 1 70 #elif defined HAVE_S390_MIN_Z13_ZARCH_ASM_SUPPORT 71 # define MEMMOVE_DEFAULT MEMMOVE_Z13 72 # define HAVE_MEMMOVE_C 0 73 # define HAVE_MEMMOVE_Z13 1 74 # define HAVE_MEMMOVE_ARCH13 HAVE_MEMMOVE_IFUNC_AND_ARCH13_SUPPORT 75 #else 76 # define MEMMOVE_DEFAULT MEMMOVE_C 77 # define HAVE_MEMMOVE_C 1 78 # define HAVE_MEMMOVE_Z13 HAVE_MEMMOVE_IFUNC_AND_VX_SUPPORT 79 # define HAVE_MEMMOVE_ARCH13 HAVE_MEMMOVE_IFUNC_AND_ARCH13_SUPPORT 80 #endif 81 82 #if HAVE_MEMCPY_Z900_G5 83 # define MEMCPY_Z900_G5 __memcpy_default 84 # define MEMPCPY_Z900_G5 __mempcpy_default 85 #else 86 # define MEMCPY_Z900_G5 NULL 87 # define MEMPCPY_Z900_G5 NULL 88 #endif 89 90 #if HAVE_MEMCPY_Z10 91 # define MEMCPY_Z10 __memcpy_z10 92 # define MEMPCPY_Z10 __mempcpy_z10 93 #else 94 # define MEMCPY_Z10 NULL 95 # define MEMPCPY_Z10 NULL 96 #endif 97 98 #if HAVE_MEMCPY_Z196 99 # define MEMCPY_Z196 __memcpy_z196 100 # define MEMPCPY_Z196 __mempcpy_z196 101 #else 102 # define MEMCPY_Z196 NULL 103 # define MEMPCPY_Z196 NULL 104 #endif 105 106 #if HAVE_MEMMOVE_C 107 # define MEMMOVE_C __memmove_c 108 #else 109 # define MEMMOVE_C NULL 110 #endif 111 112 #if HAVE_MEMMOVE_Z13 113 # define MEMMOVE_Z13 __memmove_z13 114 #else 115 # define MEMMOVE_Z13 NULL 116 #endif 117 118 #if HAVE_MEMMOVE_ARCH13 119 # define MEMMOVE_ARCH13 __memmove_arch13 120 #else 121 # define MEMMOVE_ARCH13 NULL 122 #endif 123