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