1/*
2 * Copyright 2010, The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifdef USE_VFP_RUNTIME
18#   define DEF_GENERIC_OR_VFP_RUNTIME(func) DEF_VFP_RUNTIME(func)
19#   define DEF_LLVM_OR_VFP_RUNTIME(func) DEF_VFP_RUNTIME(func)
20#else
21#   undef DEF_VFP_RUNTIME
22#   define DEF_VFP_RUNTIME(func)
23#   define DEF_GENERIC_OR_VFP_RUNTIME(func) DEF_GENERIC_RUNTIME(func)
24#   define DEF_LLVM_OR_VFP_RUNTIME(func) DEF_LLVM_RUNTIME(func)
25#endif
26
27// Sorted
28DEF_LLVM_RUNTIME(__absvdi2)
29DEF_LLVM_RUNTIME(__absvsi2)
30
31DEF_GENERIC_OR_VFP_RUNTIME(__adddf3)
32DEF_GENERIC_OR_VFP_RUNTIME(__addsf3)
33
34DEF_LLVM_RUNTIME(__addvdi3)
35DEF_LLVM_RUNTIME(__addvsi3)
36
37#if defined(__arm__)
38  // ARM Runtime ABI:
39  // http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043c/IHI0043C_rtabi.pdf
40  // See also: external/llvm/lib/Target/ARM/ARMISelLowering.cpp
41
42  DEF_GENERIC_RUNTIME(__aeabi_d2f)
43  DEF_GENERIC_RUNTIME(__aeabi_d2iz)
44  DEF_GENERIC_RUNTIME(__aeabi_d2lz)
45  DEF_GENERIC_RUNTIME(__aeabi_d2uiz)
46  DEF_GENERIC_RUNTIME(__aeabi_d2ulz)
47  DEF_GENERIC_RUNTIME(__aeabi_dadd)
48  DEF_GENERIC_RUNTIME(__aeabi_dcmpeq)
49  DEF_GENERIC_RUNTIME(__aeabi_dcmpge)
50  DEF_GENERIC_RUNTIME(__aeabi_dcmpgt)
51  DEF_GENERIC_RUNTIME(__aeabi_dcmple)
52  DEF_GENERIC_RUNTIME(__aeabi_dcmplt)
53  DEF_GENERIC_RUNTIME(__aeabi_dcmpun)
54  DEF_GENERIC_RUNTIME(__aeabi_ddiv)
55  DEF_GENERIC_RUNTIME(__aeabi_dmul)
56  DEF_GENERIC_RUNTIME(__aeabi_dsub)
57  DEF_GENERIC_RUNTIME(__aeabi_f2d)
58  DEF_GENERIC_RUNTIME(__aeabi_f2iz)
59  DEF_GENERIC_RUNTIME(__aeabi_f2lz)
60  DEF_GENERIC_RUNTIME(__aeabi_f2uiz)
61  DEF_GENERIC_RUNTIME(__aeabi_f2ulz)
62  DEF_GENERIC_RUNTIME(__aeabi_fadd)
63  DEF_GENERIC_RUNTIME(__aeabi_fcmpeq)
64  DEF_GENERIC_RUNTIME(__aeabi_fcmpge)
65  DEF_GENERIC_RUNTIME(__aeabi_fcmpgt)
66  DEF_GENERIC_RUNTIME(__aeabi_fcmple)
67  DEF_GENERIC_RUNTIME(__aeabi_fcmplt)
68  DEF_GENERIC_RUNTIME(__aeabi_fcmpun)
69  DEF_GENERIC_RUNTIME(__aeabi_fdiv)
70  DEF_GENERIC_RUNTIME(__aeabi_fmul)
71  DEF_GENERIC_RUNTIME(__aeabi_fsub)
72  DEF_GENERIC_RUNTIME(__aeabi_i2d)
73  DEF_GENERIC_RUNTIME(__aeabi_i2f)
74  DEF_GENERIC_RUNTIME(__aeabi_idiv)
75  DEF_GENERIC_RUNTIME(__aeabi_l2d)
76  DEF_GENERIC_RUNTIME(__aeabi_l2f)
77  DEF_GENERIC_RUNTIME(__aeabi_lasr)
78  DEF_GENERIC_RUNTIME(__aeabi_ldivmod)
79  DEF_GENERIC_RUNTIME(__aeabi_llsl)
80  DEF_GENERIC_RUNTIME(__aeabi_llsr)
81  DEF_GENERIC_RUNTIME(__aeabi_lmul)
82  DEF_GENERIC_RUNTIME(__aeabi_memcpy)
83  DEF_GENERIC_RUNTIME(__aeabi_memmove)
84  DEF_GENERIC_RUNTIME(__aeabi_memset)
85  DEF_GENERIC_RUNTIME(__aeabi_ui2d)
86  DEF_GENERIC_RUNTIME(__aeabi_ui2f)
87  DEF_GENERIC_RUNTIME(__aeabi_uidiv)
88  DEF_GENERIC_RUNTIME(__aeabi_ul2d)
89  DEF_GENERIC_RUNTIME(__aeabi_ul2f)
90  DEF_GENERIC_RUNTIME(__aeabi_uldivmod)
91#endif // defined(__arm__)
92
93#if !defined(__i386__) && !defined(__SSE2__)
94    DEF_LLVM_RUNTIME(__ashldi3)
95#endif
96#if !defined(ANDROID) /* has one in bionic */
97    DEF_LLVM_RUNTIME(__ashrdi3)
98#endif
99#if defined(__mips__)
100    DEF_GENERIC_RUNTIME(__ashrdi3)
101#endif
102
103#ifdef USE_VFP_RUNTIME
104//    DEF_GENERIC_RUNTIME(__bswapdi2)
105//    DEF_GENERIC_RUNTIME(__bswapsi2)
106#endif
107
108DEF_LLVM_RUNTIME(__clzdi2)
109DEF_LLVM_RUNTIME(__clzsi2)
110DEF_LLVM_RUNTIME(__cmpdi2)
111DEF_LLVM_RUNTIME(__ctzdi2)
112DEF_LLVM_RUNTIME(__ctzsi2)
113
114#if !defined(ANDROID) /* no complex extension */
115    DEF_LLVM_RUNTIME(__divdc3)
116#endif
117
118DEF_GENERIC_OR_VFP_RUNTIME(__divdf3)
119
120DEF_LLVM_RUNTIME(__divdi3)
121DEF_LLVM_RUNTIME(__divsi3)
122
123#if !defined(ANDROID) /* no complex extension */
124    DEF_LLVM_RUNTIME(__divsc3)
125#endif
126
127DEF_GENERIC_OR_VFP_RUNTIME(__divsf3)
128
129DEF_LLVM_RUNTIME(__eprintf)
130
131DEF_GENERIC_OR_VFP_RUNTIME(__eqdf2)
132DEF_GENERIC_OR_VFP_RUNTIME(__eqsf2)
133DEF_GENERIC_OR_VFP_RUNTIME(__extendsfdf2)
134
135DEF_LLVM_RUNTIME(__ffsdi2)
136DEF_LLVM_RUNTIME(__fixdfdi)
137
138DEF_GENERIC_OR_VFP_RUNTIME(__fixdfsi)
139
140DEF_LLVM_RUNTIME(__fixsfdi)
141
142DEF_GENERIC_OR_VFP_RUNTIME(__fixsfsi)
143
144DEF_LLVM_RUNTIME(__fixunsdfdi)
145DEF_LLVM_OR_VFP_RUNTIME(__fixunsdfsi)
146DEF_LLVM_RUNTIME(__fixunssfdi)
147
148DEF_LLVM_OR_VFP_RUNTIME(__fixunssfsi)
149
150#if !defined(__i386__)
151    DEF_LLVM_RUNTIME(__floatdidf)
152    DEF_LLVM_RUNTIME(__floatdisf)
153#endif
154
155DEF_GENERIC_OR_VFP_RUNTIME(__floatsidf)
156DEF_GENERIC_OR_VFP_RUNTIME(__floatsisf)
157
158#if !defined(__i386__)
159    DEF_LLVM_RUNTIME(__floatundidf)
160    DEF_LLVM_RUNTIME(__floatundisf)
161#endif
162
163DEF_GENERIC_RUNTIME(__floatunsidf)
164DEF_GENERIC_RUNTIME(__floatunsisf)
165
166DEF_VFP_RUNTIME(__floatunssidf)
167DEF_VFP_RUNTIME(__floatunssisf)
168
169DEF_GENERIC_OR_VFP_RUNTIME(__gedf2)
170DEF_GENERIC_OR_VFP_RUNTIME(__gesf2)
171DEF_VFP_RUNTIME(__gtdf2)
172DEF_VFP_RUNTIME(__gtsf2)
173
174DEF_GENERIC_OR_VFP_RUNTIME(__ledf2)
175DEF_GENERIC_OR_VFP_RUNTIME(__lesf2)
176
177#if !defined(__i386__) && !defined(__SSE2__)
178    DEF_LLVM_RUNTIME(__lshrdi3)
179#endif
180
181DEF_VFP_RUNTIME(__ltdf2)
182DEF_VFP_RUNTIME(__ltsf2)
183
184DEF_LLVM_RUNTIME(__moddi3)
185DEF_LLVM_RUNTIME(__modsi3)
186
187#ifndef ANDROID // no complex extension
188    DEF_LLVM_RUNTIME(__muldc3)
189#endif
190
191DEF_GENERIC_OR_VFP_RUNTIME(__muldf3)
192#if !defined(__i386__)
193    DEF_LLVM_RUNTIME(__muldi3)
194#endif
195
196#ifndef ANDROID // no complex extension
197    DEF_LLVM_RUNTIME(__mulsc3)
198#endif
199
200DEF_GENERIC_OR_VFP_RUNTIME(__mulsf3)
201
202DEF_LLVM_RUNTIME(__mulvdi3)
203DEF_LLVM_RUNTIME(__mulvsi3)
204
205DEF_VFP_RUNTIME(__nedf2)
206
207DEF_GENERIC_OR_VFP_RUNTIME(__negdf2)
208
209DEF_LLVM_RUNTIME(__negdi2)
210
211DEF_GENERIC_OR_VFP_RUNTIME(__negsf2)
212
213DEF_LLVM_RUNTIME(__negvdi2)
214DEF_LLVM_RUNTIME(__negvsi2)
215
216DEF_VFP_RUNTIME(__nesf2)
217
218DEF_LLVM_RUNTIME(__paritydi2)
219DEF_LLVM_RUNTIME(__paritysi2)
220DEF_LLVM_RUNTIME(__popcountdi2)
221DEF_LLVM_RUNTIME(__popcountsi2)
222DEF_LLVM_RUNTIME(__powidf2)
223DEF_LLVM_RUNTIME(__powisf2)
224
225DEF_GENERIC_OR_VFP_RUNTIME(__subdf3)
226DEF_GENERIC_OR_VFP_RUNTIME(__subsf3)
227
228DEF_LLVM_RUNTIME(__subvdi3)
229DEF_LLVM_RUNTIME(__subvsi3)
230
231DEF_GENERIC_OR_VFP_RUNTIME(__truncdfsf2)
232
233DEF_LLVM_RUNTIME(__ucmpdi2)
234DEF_LLVM_RUNTIME(__udivdi3)
235DEF_LLVM_RUNTIME(__udivmoddi4)
236DEF_LLVM_RUNTIME(__udivsi3)
237DEF_LLVM_RUNTIME(__umoddi3)
238DEF_LLVM_RUNTIME(__umodsi3)
239
240DEF_GENERIC_OR_VFP_RUNTIME(__unorddf2)
241DEF_GENERIC_OR_VFP_RUNTIME(__unordsf2)
242
243#undef DEF_GENERIC_RUNTIME
244#undef DEF_LLVM_RUNTIME
245#undef DEF_VFP_RUNTIME
246#undef DEF_BCC_RUNTIME
247