xref: /netbsd-src/external/gpl3/gcc.old/dist/libgcc/config/frv/frv-abi.h (revision 7bdf38e5b7a28439665f2fdeff81e36913eef7dd)
1 /* Frv map GCC names to FR-V ABI.
2    Copyright (C) 2000-2020 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__ */
187