rx-abi.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. /* Header file for RX ABI versions of libgcc functions.
  2. Copyright (C) 2009-2022 Free Software Foundation, Inc.
  3. Contributed by Red Hat.
  4. This file is part of GCC.
  5. GCC is free software; you can redistribute it and/or modify it
  6. under the terms of the GNU General Public License as published
  7. by the Free Software Foundation; either version 3, or (at your
  8. option) any later version.
  9. GCC is distributed in the hope that it will be useful, but WITHOUT
  10. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  11. or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
  12. License for more details.
  13. Under Section 7 of GPL version 3, you are granted additional
  14. permissions described in the GCC Runtime Library Exception, version
  15. 3.1, as published by the Free Software Foundation.
  16. You should have received a copy of the GNU General Public License
  17. along with GCC; see the file COPYING3. If not see
  18. <http://www.gnu.org/licenses/>. */
  19. /* Make __COM_<RX_NAME> an alias for __<GCC_NAME>. */
  20. #define RENAME_LIBRARY(GCC_NAME, RX_NAME) \
  21. __asm__ (".globl\t__COM_" #RX_NAME "\n" \
  22. ".set\t__COM_" #RX_NAME ", ___" #GCC_NAME "\n");
  23. /* The long-long aliases... */
  24. #ifdef L_muldi3
  25. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, MUL64)
  26. #endif
  27. #ifdef L_divdi3
  28. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdi3, DIV64s)
  29. #endif
  30. #ifdef L_udivdi3
  31. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (udivdi3, DIV64u)
  32. #endif
  33. #ifdef L_ashldi3
  34. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashldi3, SHLL64)
  35. #endif
  36. #ifdef L_lshrdi3
  37. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (lshrdi3, SHLR64)
  38. #endif
  39. #ifdef L_ashrdi3
  40. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashrdi3, SHAR64)
  41. #endif
  42. #ifdef L_fixsfdi
  43. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, CONVf64s)
  44. #endif
  45. #ifdef L_fixunssfdi
  46. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, CONVf64u)
  47. #endif
  48. #ifdef L_floatdisf
  49. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64sf)
  50. #endif
  51. #ifdef L_floatundisf
  52. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundisf, CONV64uf)
  53. #endif
  54. #ifdef L_moddi3
  55. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (moddi3, MOD64s)
  56. #endif
  57. #ifdef L_umoddi3
  58. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (umoddi3, MOD64u)
  59. #endif
  60. #ifdef __RX_64BIT_DOUBLES__
  61. /* Float (32-bit) aliases... */
  62. #ifdef L_sf_to_si
  63. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfsi, CONVf32s)
  64. #endif
  65. #ifdef L_fixunssfsi
  66. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfsi, CONVf32u)
  67. #endif
  68. #ifdef L_addsub_sf
  69. #define DECLARE_LIBRARY_RENAMES \
  70. RENAME_LIBRARY (addsf3, ADDf) \
  71. RENAME_LIBRARY (subsf3, SUBf)
  72. #endif
  73. #ifdef L_mul_sf
  74. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (mulsf3, MULf)
  75. #endif
  76. #ifdef L_div_sf
  77. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divsf3, DIVf)
  78. #endif
  79. /* Double (64-bit) aliases... */
  80. #ifdef L_addsub_df
  81. #define DECLARE_LIBRARY_RENAMES \
  82. RENAME_LIBRARY (adddf3, ADDd) \
  83. RENAME_LIBRARY (subdf3, SUBd)
  84. #endif
  85. #ifdef L_mul_df
  86. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldf3, MULd)
  87. #endif
  88. #ifdef L_div_df
  89. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdf3, DIVd)
  90. #endif
  91. #ifdef L_fixdfdi
  92. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, CONVd64s)
  93. #endif
  94. #ifdef L_fixunsdfdi
  95. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, CONVd64u)
  96. #endif
  97. #ifdef L_floatdidf
  98. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64sd)
  99. #endif
  100. #ifdef L_floatundidf
  101. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64ud)
  102. #endif
  103. #ifdef L_df_to_si
  104. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfsi, CONVd32s)
  105. #endif
  106. #ifdef L_fixunsdfsi
  107. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfsi, CONVd32u)
  108. #endif
  109. #ifdef L_si_to_df
  110. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatsidf, CONV32sd)
  111. #endif
  112. #ifdef L_usi_to_df
  113. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatunsidf, CONV32ud)
  114. #endif
  115. #ifdef L_sf_to_df
  116. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (extendsfdf2, CONVfd)
  117. #endif
  118. #ifdef L_df_to_sf
  119. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (truncdfsf2, CONVdf)
  120. #endif
  121. #ifdef L_negate_df
  122. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negdf2, NEGd)
  123. #endif
  124. #ifdef L_si_to_sf
  125. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatsisf, CONV32sf)
  126. #endif
  127. #ifdef L_usi_to_sf
  128. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatunsisf, CONV32uf)
  129. #endif
  130. /* The 64-bit comparison functions do not have aliases because libgcc2
  131. does not provide them. Instead they have to be supplied in
  132. rx-abi-functions.c. */
  133. #else /* 32-bit doubles. */
  134. #ifdef L_addsub_sf
  135. #define DECLARE_LIBRARY_RENAMES \
  136. RENAME_LIBRARY (addsf3, ADDd) \
  137. RENAME_LIBRARY (subsf3, SUBd) \
  138. RENAME_LIBRARY (addsf3, ADDf) \
  139. RENAME_LIBRARY (subsf3, SUBf)
  140. #endif
  141. #ifdef L_mul_sf
  142. #define DECLARE_LIBRARY_RENAMES \
  143. RENAME_LIBRARY (mulsf3, MULd) \
  144. RENAME_LIBRARY (mulsf3, MULf)
  145. #endif
  146. #ifdef L_div_sf
  147. #define DECLARE_LIBRARY_RENAMES \
  148. RENAME_LIBRARY (divsf3, DIVd) \
  149. RENAME_LIBRARY (divsf3, DIVf)
  150. #endif
  151. #ifdef L_sf_to_si
  152. #define DECLARE_LIBRARY_RENAMES \
  153. RENAME_LIBRARY (fixsfsi, CONVd32s) \
  154. RENAME_LIBRARY (fixsfsi, CONVf32s)
  155. #endif
  156. #ifdef L_fixunssfsi
  157. #define DECLARE_LIBRARY_RENAMES \
  158. RENAME_LIBRARY (fixunssfsi, CONVd32u) \
  159. RENAME_LIBRARY (fixunssfsi, CONVf32u)
  160. #endif
  161. #ifdef L_si_to_sf
  162. #define DECLARE_LIBRARY_RENAMES \
  163. RENAME_LIBRARY (floatsisf, CONV32sd) \
  164. RENAME_LIBRARY (floatsisf, CONV32sf)
  165. #endif
  166. #ifdef L_usi_to_sf
  167. #define DECLARE_LIBRARY_RENAMES \
  168. RENAME_LIBRARY (floatunsisf, CONV32ud) \
  169. RENAME_LIBRARY (floatunsisf, CONV32uf)
  170. #endif
  171. #ifdef L_negate_sf
  172. #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negsf2, NEGd)
  173. #endif
  174. #endif /* 64-bit vs 32-bit doubles. */