| /* Header file for RX ABI versions of libgcc functions. |
| Copyright (C) 2009-2023 Free Software Foundation, Inc. |
| Contributed by Red Hat. |
| |
| This file is part of GCC. |
| |
| GCC is free software; you can redistribute it and/or modify it |
| under the terms of the GNU General Public License as published |
| by the Free Software Foundation; either version 3, or (at your |
| option) any later version. |
| |
| GCC is distributed in the hope that it will be useful, but WITHOUT |
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public |
| License for more details. |
| |
| Under Section 7 of GPL version 3, you are granted additional |
| permissions described in the GCC Runtime Library Exception, version |
| 3.1, as published by the Free Software Foundation. |
| |
| You should have received a copy of the GNU General Public License |
| along with GCC; see the file COPYING3. If not see |
| <http://www.gnu.org/licenses/>. */ |
| |
| /* Make __COM_<RX_NAME> an alias for __<GCC_NAME>. */ |
| #define RENAME_LIBRARY(GCC_NAME, RX_NAME) \ |
| __asm__ (".globl\t__COM_" #RX_NAME "\n" \ |
| ".set\t__COM_" #RX_NAME ", ___" #GCC_NAME "\n"); |
| |
| |
| /* The long-long aliases... */ |
| |
| #ifdef L_muldi3 |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, MUL64) |
| #endif |
| |
| #ifdef L_divdi3 |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdi3, DIV64s) |
| #endif |
| |
| #ifdef L_udivdi3 |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (udivdi3, DIV64u) |
| #endif |
| |
| #ifdef L_ashldi3 |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashldi3, SHLL64) |
| #endif |
| |
| #ifdef L_lshrdi3 |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (lshrdi3, SHLR64) |
| #endif |
| |
| #ifdef L_ashrdi3 |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashrdi3, SHAR64) |
| #endif |
| |
| #ifdef L_fixsfdi |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, CONVf64s) |
| #endif |
| |
| #ifdef L_fixunssfdi |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, CONVf64u) |
| #endif |
| |
| #ifdef L_floatdisf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64sf) |
| #endif |
| |
| #ifdef L_floatundisf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundisf, CONV64uf) |
| #endif |
| |
| #ifdef L_moddi3 |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (moddi3, MOD64s) |
| #endif |
| |
| #ifdef L_umoddi3 |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (umoddi3, MOD64u) |
| #endif |
| |
| |
| |
| #ifdef __RX_64BIT_DOUBLES__ |
| |
| /* Float (32-bit) aliases... */ |
| |
| #ifdef L_sf_to_si |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfsi, CONVf32s) |
| #endif |
| |
| #ifdef L_fixunssfsi |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfsi, CONVf32u) |
| #endif |
| |
| #ifdef L_addsub_sf |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (addsf3, ADDf) \ |
| RENAME_LIBRARY (subsf3, SUBf) |
| #endif |
| |
| #ifdef L_mul_sf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (mulsf3, MULf) |
| #endif |
| |
| #ifdef L_div_sf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divsf3, DIVf) |
| #endif |
| |
| /* Double (64-bit) aliases... */ |
| |
| #ifdef L_addsub_df |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (adddf3, ADDd) \ |
| RENAME_LIBRARY (subdf3, SUBd) |
| #endif |
| |
| #ifdef L_mul_df |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldf3, MULd) |
| #endif |
| |
| #ifdef L_div_df |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdf3, DIVd) |
| #endif |
| |
| #ifdef L_fixdfdi |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, CONVd64s) |
| #endif |
| |
| #ifdef L_fixunsdfdi |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, CONVd64u) |
| #endif |
| |
| #ifdef L_floatdidf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64sd) |
| #endif |
| |
| #ifdef L_floatundidf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64ud) |
| #endif |
| |
| #ifdef L_df_to_si |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfsi, CONVd32s) |
| #endif |
| |
| #ifdef L_fixunsdfsi |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfsi, CONVd32u) |
| #endif |
| |
| #ifdef L_si_to_df |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatsidf, CONV32sd) |
| #endif |
| |
| #ifdef L_usi_to_df |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatunsidf, CONV32ud) |
| #endif |
| |
| #ifdef L_sf_to_df |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (extendsfdf2, CONVfd) |
| #endif |
| |
| #ifdef L_df_to_sf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (truncdfsf2, CONVdf) |
| #endif |
| |
| #ifdef L_negate_df |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negdf2, NEGd) |
| #endif |
| |
| #ifdef L_si_to_sf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatsisf, CONV32sf) |
| #endif |
| |
| #ifdef L_usi_to_sf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatunsisf, CONV32uf) |
| #endif |
| |
| /* The 64-bit comparison functions do not have aliases because libgcc2 |
| does not provide them. Instead they have to be supplied in |
| rx-abi-functions.c. */ |
| |
| |
| #else /* 32-bit doubles. */ |
| |
| |
| #ifdef L_addsub_sf |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (addsf3, ADDd) \ |
| RENAME_LIBRARY (subsf3, SUBd) \ |
| RENAME_LIBRARY (addsf3, ADDf) \ |
| RENAME_LIBRARY (subsf3, SUBf) |
| #endif |
| |
| #ifdef L_mul_sf |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (mulsf3, MULd) \ |
| RENAME_LIBRARY (mulsf3, MULf) |
| #endif |
| |
| #ifdef L_div_sf |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (divsf3, DIVd) \ |
| RENAME_LIBRARY (divsf3, DIVf) |
| #endif |
| |
| #ifdef L_sf_to_si |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (fixsfsi, CONVd32s) \ |
| RENAME_LIBRARY (fixsfsi, CONVf32s) |
| #endif |
| |
| #ifdef L_fixunssfsi |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (fixunssfsi, CONVd32u) \ |
| RENAME_LIBRARY (fixunssfsi, CONVf32u) |
| #endif |
| |
| #ifdef L_si_to_sf |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (floatsisf, CONV32sd) \ |
| RENAME_LIBRARY (floatsisf, CONV32sf) |
| #endif |
| |
| #ifdef L_usi_to_sf |
| #define DECLARE_LIBRARY_RENAMES \ |
| RENAME_LIBRARY (floatunsisf, CONV32ud) \ |
| RENAME_LIBRARY (floatunsisf, CONV32uf) |
| #endif |
| |
| #ifdef L_negate_sf |
| #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negsf2, NEGd) |
| #endif |
| |
| #endif /* 64-bit vs 32-bit doubles. */ |