(root)/
gcc-13.2.0/
libgcc/
config/
frv/
frv-abi.h
       1  /* Frv map GCC names to FR-V ABI.
       2     Copyright (C) 2000-2023 Free Software Foundation, Inc.
       3     Contributed by Red Hat, Inc.
       4  
       5     This file is part of GCC.
       6  
       7     GCC is free software; you can redistribute it and/or modify it under
       8     the terms of the GNU General Public License as published by the Free
       9     Software Foundation; either version 3, or (at your option) any later
      10     version.
      11  
      12     GCC is distributed in the hope that it will be useful, but WITHOUT
      13     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      14     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      15     for more details.
      16  
      17     Under Section 7 of GPL version 3, you are granted additional
      18     permissions described in the GCC Runtime Library Exception, version
      19     3.1, as published by the Free Software Foundation.
      20  
      21     You should have received a copy of the GNU General Public License and
      22     a copy of the GCC Runtime Library Exception along with this program;
      23     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      24     <http://www.gnu.org/licenses/>.  */
      25  
      26  /* For each of the functions in the library that has a corresponding name in
      27     the ABI, add an equivalence between the GCC name and the ABI name.  This is
      28     in a separate file from frv.h so that fp-bit.c can be made to include it.  */
      29  
      30  #ifdef __GNUC__
      31  #ifdef __FRV_UNDERSCORE__
      32  #define RENAME_LIBRARY(OLD,NEW)						\
      33  __asm__ (".globl\t_" #NEW "\n"						\
      34  	 "_" #NEW "=_" #OLD "\n"					\
      35  	 "\t.type\t_" #NEW ",@function\n");
      36  
      37  #else
      38  #define RENAME_LIBRARY(OLD,NEW)						\
      39  __asm__ (".globl\t" #NEW "\n"						\
      40  	 #NEW "=" #OLD "\n"						\
      41  	 "\t.type\t" #NEW ",@function\n");
      42  #endif
      43  
      44  #define CREATE_DOUBLE_SHIFT(OLD,NEW)					\
      45  __asm__ (".text\n"							\
      46  	 "\t.globl\t" #NEW "\n"						\
      47  	 "\t.type\t" #NEW ",@function\n"				\
      48  	 #NEW ":\n"							\
      49  	 "\tor\tgr11, gr0, gr10\n"					\
      50  	 ".L" #OLD " = " #OLD "\n"					\
      51  	 "\tbra\t.L" #OLD "\n");
      52  
      53  #ifdef L_sf_to_df
      54  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__extendsfdf2,__ftod)
      55  #endif
      56  
      57  #ifdef L_sf_to_si
      58  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixsfsi,__ftoi)
      59  #endif
      60  
      61  #ifdef L_sf_to_usi
      62  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixunssfsi,__ftoui)
      63  #endif
      64  
      65  #ifdef L_df_to_si
      66  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixdfsi,__dtoi)
      67  #endif
      68  
      69  #ifdef L_fixunssfsi
      70  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixunssfsi,__ftoui)
      71  #endif
      72  
      73  #ifdef L_fixunsdfsi
      74  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixunsdfsi,__dtoui)
      75  #endif
      76  
      77  #ifdef L_fixsfdi
      78  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixsfdi,__ftoll)
      79  #endif
      80  
      81  #ifdef L_fixdfdi
      82  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixdfdi,__dtoll)
      83  #endif
      84  
      85  #ifdef L_fixunssfdi
      86  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixunssfdi,__ftoull)
      87  #endif
      88  
      89  #ifdef L_fixunsdfdi
      90  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__fixunsdfdi,__dtoull)
      91  #endif
      92  
      93  #ifdef L_si_to_sf
      94  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__floatsisf,__itof)
      95  #endif
      96  
      97  #ifdef L_di_to_sf
      98  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__floatdisf,__lltof)
      99  #endif
     100  
     101  #ifdef L_df_to_sf
     102  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__truncdfsf2,__dtof)
     103  #endif
     104  
     105  #ifdef L_si_to_df
     106  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__floatsidf,__itod)
     107  #endif
     108  
     109  #ifdef L_floatdisf
     110  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__floatdisf,__lltof)
     111  #endif
     112  
     113  #ifdef L_floatdidf
     114  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__floatdidf,__lltod)
     115  #endif
     116  
     117  #ifdef L_addsub_df
     118  #define DECLARE_LIBRARY_RENAMES \
     119  	RENAME_LIBRARY(__adddf3,__addd)
     120  	RENAME_LIBRARY(__subdf3,__subd)
     121  #endif
     122  
     123  #ifdef L_mul_df
     124  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__muldf3,__muld)
     125  #endif
     126  
     127  #ifdef L_div_df
     128  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__divdf3,__divd)
     129  #endif
     130  
     131  #ifdef L_addsub_sf
     132  #define DECLARE_LIBRARY_RENAMES \
     133  	RENAME_LIBRARY(__addsf3,__addf) \
     134  	RENAME_LIBRARY(__subsf3,__subf)
     135  #endif
     136  
     137  #ifdef L_mul_sf
     138  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__mulsf3,__mulf)
     139  #endif
     140  
     141  #ifdef L_div_sf
     142  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__divsf3,__divf)
     143  #endif
     144  
     145  #ifdef L_ashldi3
     146  #define DECLARE_LIBRARY_RENAMES CREATE_DOUBLE_SHIFT (__ashldi3,__sllll)
     147  #endif
     148  
     149  #ifdef L_lshrdi3
     150  #define DECLARE_LIBRARY_RENAMES CREATE_DOUBLE_SHIFT (__lshrdi3,__srlll)
     151  #endif
     152  
     153  #ifdef L_ashrdi3
     154  #define DECLARE_LIBRARY_RENAMES CREATE_DOUBLE_SHIFT (__ashrdi3,__srall)
     155  #endif
     156  
     157  #ifdef L_adddi3
     158  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__adddi3,__addll)
     159  #endif
     160  
     161  #ifdef L_subdi3
     162  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__subdi3,__subll)
     163  #endif
     164  
     165  #ifdef L_muldi3
     166  #define DECLARE_LIBRARY_RENAMES \
     167  	RENAME_LIBRARY(__muldi3,__mulll)
     168  	RENAME_LIBRARY(__muldi3,__umulll)
     169  #endif
     170  
     171  #ifdef L_divdi3
     172  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__divdi3,__divll)
     173  #endif
     174  
     175  #ifdef L_udivdi3
     176  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__udivdi3,__udivll)
     177  #endif
     178  
     179  #ifdef L_moddi3
     180  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__moddi3,__modll)
     181  #endif
     182  
     183  #ifdef L_umoddi3
     184  #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY(__umoddi3,__umodll)
     185  #endif
     186  #endif /* __GNUC__ */