(root)/
glibc-2.38/
sysdeps/
s390/
ifunc-memcpy.h
       1  /* memcpy variant information on S/390 version.
       2     Copyright (C) 2018-2023 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