xref: /netbsd-src/external/gpl3/gcc.old/dist/libgcc/config/rx/rx-abi.h (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
1 /* Header file for RX ABI versions of libgcc functions.
2    Copyright (C) 2009-2020 Free Software Foundation, Inc.
3    Contributed by Red Hat.
4 
5    This file is part of GCC.
6 
7    GCC is free software; you can redistribute it and/or modify it
8    under the terms of the GNU General Public License as published
9    by the Free Software Foundation; either version 3, or (at your
10    option) any later 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
14    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15    License 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
22    along with GCC; see the file COPYING3.  If not see
23    <http://www.gnu.org/licenses/>.  */
24 
25 /* Make __COM_<RX_NAME> an alias for __<GCC_NAME>.  */
26 #define RENAME_LIBRARY(GCC_NAME, RX_NAME)		\
27   __asm__ (".globl\t__COM_" #RX_NAME "\n"		\
28 	   ".set\t__COM_" #RX_NAME ", ___" #GCC_NAME "\n");
29 
30 
31 /* The long-long aliases...  */
32 
33 #ifdef L_muldi3
34 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, MUL64)
35 #endif
36 
37 #ifdef L_divdi3
38 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdi3, DIV64s)
39 #endif
40 
41 #ifdef L_udivdi3
42 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (udivdi3, DIV64u)
43 #endif
44 
45 #ifdef L_ashldi3
46 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashldi3, SHLL64)
47 #endif
48 
49 #ifdef L_lshrdi3
50 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (lshrdi3, SHLR64)
51 #endif
52 
53 #ifdef L_ashrdi3
54 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashrdi3, SHAR64)
55 #endif
56 
57 #ifdef L_fixsfdi
58 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, CONVf64s)
59 #endif
60 
61 #ifdef L_fixunssfdi
62 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, CONVf64u)
63 #endif
64 
65 #ifdef L_floatdisf
66 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64sf)
67 #endif
68 
69 #ifdef L_floatundisf
70 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundisf, CONV64uf)
71 #endif
72 
73 #ifdef L_moddi3
74 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (moddi3, MOD64s)
75 #endif
76 
77 #ifdef L_umoddi3
78 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (umoddi3, MOD64u)
79 #endif
80 
81 
82 
83 #ifdef __RX_64BIT_DOUBLES__
84 
85 /* Float (32-bit) aliases...  */
86 
87 #ifdef L_sf_to_si
88 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfsi, CONVf32s)
89 #endif
90 
91 #ifdef L_fixunssfsi
92 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfsi, CONVf32u)
93 #endif
94 
95 #ifdef L_addsub_sf
96 #define DECLARE_LIBRARY_RENAMES \
97   RENAME_LIBRARY (addsf3, ADDf) \
98   RENAME_LIBRARY (subsf3, SUBf)
99 #endif
100 
101 #ifdef L_mul_sf
102 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (mulsf3, MULf)
103 #endif
104 
105 #ifdef L_div_sf
106 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divsf3, DIVf)
107 #endif
108 
109 /* Double (64-bit) aliases...  */
110 
111 #ifdef L_addsub_df
112 #define DECLARE_LIBRARY_RENAMES \
113   RENAME_LIBRARY (adddf3, ADDd) \
114   RENAME_LIBRARY (subdf3, SUBd)
115 #endif
116 
117 #ifdef L_mul_df
118 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldf3, MULd)
119 #endif
120 
121 #ifdef L_div_df
122 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdf3, DIVd)
123 #endif
124 
125 #ifdef L_fixdfdi
126 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, CONVd64s)
127 #endif
128 
129 #ifdef L_fixunsdfdi
130 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, CONVd64u)
131 #endif
132 
133 #ifdef L_floatdidf
134 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64sd)
135 #endif
136 
137 #ifdef L_floatundidf
138 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, CONV64ud)
139 #endif
140 
141 #ifdef L_df_to_si
142 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfsi, CONVd32s)
143 #endif
144 
145 #ifdef L_fixunsdfsi
146 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfsi, CONVd32u)
147 #endif
148 
149 #ifdef L_si_to_df
150 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatsidf, CONV32sd)
151 #endif
152 
153 #ifdef L_usi_to_df
154 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatunsidf, CONV32ud)
155 #endif
156 
157 #ifdef L_sf_to_df
158 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (extendsfdf2, CONVfd)
159 #endif
160 
161 #ifdef L_df_to_sf
162 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (truncdfsf2, CONVdf)
163 #endif
164 
165 #ifdef L_negate_df
166 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negdf2, NEGd)
167 #endif
168 
169 #ifdef L_si_to_sf
170 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatsisf, CONV32sf)
171 #endif
172 
173 #ifdef L_usi_to_sf
174 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatunsisf, CONV32uf)
175 #endif
176 
177 /* The 64-bit comparison functions do not have aliases because libgcc2
178    does not provide them.  Instead they have to be supplied in
179    rx-abi-functions.c.  */
180 
181 
182 #else /* 32-bit doubles.  */
183 
184 
185 #ifdef L_addsub_sf
186 #define DECLARE_LIBRARY_RENAMES \
187   RENAME_LIBRARY (addsf3, ADDd) \
188   RENAME_LIBRARY (subsf3, SUBd) \
189   RENAME_LIBRARY (addsf3, ADDf) \
190   RENAME_LIBRARY (subsf3, SUBf)
191 #endif
192 
193 #ifdef L_mul_sf
194 #define DECLARE_LIBRARY_RENAMES \
195   RENAME_LIBRARY (mulsf3, MULd) \
196   RENAME_LIBRARY (mulsf3, MULf)
197 #endif
198 
199 #ifdef L_div_sf
200 #define DECLARE_LIBRARY_RENAMES \
201   RENAME_LIBRARY (divsf3, DIVd) \
202   RENAME_LIBRARY (divsf3, DIVf)
203 #endif
204 
205 #ifdef L_sf_to_si
206 #define DECLARE_LIBRARY_RENAMES \
207   RENAME_LIBRARY (fixsfsi, CONVd32s) \
208   RENAME_LIBRARY (fixsfsi, CONVf32s)
209 #endif
210 
211 #ifdef L_fixunssfsi
212 #define DECLARE_LIBRARY_RENAMES \
213   RENAME_LIBRARY (fixunssfsi, CONVd32u) \
214   RENAME_LIBRARY (fixunssfsi, CONVf32u)
215 #endif
216 
217 #ifdef L_si_to_sf
218 #define DECLARE_LIBRARY_RENAMES \
219   RENAME_LIBRARY (floatsisf, CONV32sd) \
220   RENAME_LIBRARY (floatsisf, CONV32sf)
221 #endif
222 
223 #ifdef L_usi_to_sf
224 #define DECLARE_LIBRARY_RENAMES \
225   RENAME_LIBRARY (floatunsisf, CONV32ud) \
226   RENAME_LIBRARY (floatunsisf, CONV32uf)
227 #endif
228 
229 #ifdef L_negate_sf
230 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negsf2, NEGd)
231 #endif
232 
233 #endif /* 64-bit vs 32-bit doubles.  */
234