blob: d5ae62a1cc7c948832fda6a10f446fd6c378123e [file] [log] [blame]
Zonr Chang932648d2010-10-13 22:23:56 +08001/*
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
Shih-wei Liao77ed6142010-04-07 12:21:42 -070017#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)
Logan7583c132011-02-27 08:22:46 +080036
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)
Logana6f41a72011-02-27 15:24:00 +080060 DEF_GENERIC_RUNTIME(__aeabi_f2uiz)
Logan7583c132011-02-27 08:22:46 +080061 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)
Shih-wei Liao2d4c5f62011-06-22 11:18:47 -070082 DEF_GENERIC_RUNTIME(__aeabi_memcpy)
83 DEF_GENERIC_RUNTIME(__aeabi_memmove)
84 DEF_GENERIC_RUNTIME(__aeabi_memset)
Logan7583c132011-02-27 08:22:46 +080085 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
Kenny Root34678ab2011-02-07 10:56:27 -080093#if !defined(__i386__) && !defined(__SSE2__)
94 DEF_LLVM_RUNTIME(__ashldi3)
95#endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -070096#ifndef ANDROID // has one in bionic
97 DEF_LLVM_RUNTIME(__ashrdi3)
98#endif
99
100#ifdef USE_VFP_RUNTIME
101// DEF_GENERIC_RUNTIME(__bswapdi2)
102// DEF_GENERIC_RUNTIME(__bswapsi2)
103#endif
104
105DEF_LLVM_RUNTIME(__clzdi2)
106DEF_LLVM_RUNTIME(__clzsi2)
107DEF_LLVM_RUNTIME(__cmpdi2)
108DEF_LLVM_RUNTIME(__ctzdi2)
109DEF_LLVM_RUNTIME(__ctzsi2)
110
111#ifndef ANDROID // no complex extension
112 DEF_LLVM_RUNTIME(__divdc3)
113#endif
114
115DEF_GENERIC_OR_VFP_RUNTIME(__divdf3)
116
Kenny Root34678ab2011-02-07 10:56:27 -0800117#if !defined(__i386__)
118 DEF_LLVM_RUNTIME(__divdi3)
119#endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700120
121#ifndef ANDROID // no complex extension
122 DEF_LLVM_RUNTIME(__divsc3)
123#endif
124
125DEF_GENERIC_OR_VFP_RUNTIME(__divsf3)
126
127DEF_LLVM_RUNTIME(__eprintf)
128
129DEF_GENERIC_OR_VFP_RUNTIME(__eqdf2)
130DEF_GENERIC_OR_VFP_RUNTIME(__eqsf2)
131DEF_GENERIC_OR_VFP_RUNTIME(__extendsfdf2)
132
133DEF_LLVM_RUNTIME(__ffsdi2)
134DEF_LLVM_RUNTIME(__fixdfdi)
135
136DEF_GENERIC_OR_VFP_RUNTIME(__fixdfsi)
137
138DEF_LLVM_RUNTIME(__fixsfdi)
139
140DEF_GENERIC_OR_VFP_RUNTIME(__fixsfsi)
141
142DEF_LLVM_RUNTIME(__fixunsdfdi)
143DEF_LLVM_OR_VFP_RUNTIME(__fixunsdfsi)
144DEF_LLVM_RUNTIME(__fixunssfdi)
145
146DEF_LLVM_OR_VFP_RUNTIME(__fixunssfsi)
147
Kenny Root34678ab2011-02-07 10:56:27 -0800148#if !defined(__i386__)
149 DEF_LLVM_RUNTIME(__floatdidf)
150 DEF_LLVM_RUNTIME(__floatdisf)
151#endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700152
153DEF_GENERIC_OR_VFP_RUNTIME(__floatsidf)
154DEF_GENERIC_OR_VFP_RUNTIME(__floatsisf)
155
Kenny Root34678ab2011-02-07 10:56:27 -0800156#if !defined(__i386__)
157 DEF_LLVM_RUNTIME(__floatundidf)
158 DEF_LLVM_RUNTIME(__floatundisf)
159#endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700160
161DEF_GENERIC_RUNTIME(__floatunsidf)
162DEF_GENERIC_RUNTIME(__floatunsisf)
163
164DEF_VFP_RUNTIME(__floatunssidf)
165DEF_VFP_RUNTIME(__floatunssisf)
166
167DEF_GENERIC_OR_VFP_RUNTIME(__gedf2)
168DEF_GENERIC_OR_VFP_RUNTIME(__gesf2)
169DEF_VFP_RUNTIME(__gtdf2)
170DEF_VFP_RUNTIME(__gtsf2)
171
172DEF_GENERIC_OR_VFP_RUNTIME(__ledf2)
173DEF_GENERIC_OR_VFP_RUNTIME(__lesf2)
174
Kenny Root34678ab2011-02-07 10:56:27 -0800175#if !defined(__i386__) && !defined(__SSE2__)
176 DEF_LLVM_RUNTIME(__lshrdi3)
177#endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700178
179DEF_VFP_RUNTIME(__ltdf2)
180DEF_VFP_RUNTIME(__ltsf2)
181
Kenny Root34678ab2011-02-07 10:56:27 -0800182#if !defined(__i386__)
183 DEF_LLVM_RUNTIME(__moddi3)
184#endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700185
186#ifndef ANDROID // no complex extension
187 DEF_LLVM_RUNTIME(__muldc3)
188#endif
189
190DEF_GENERIC_OR_VFP_RUNTIME(__muldf3)
Kenny Root34678ab2011-02-07 10:56:27 -0800191#if !defined(__i386__)
192 DEF_LLVM_RUNTIME(__muldi3)
Kenny Root34678ab2011-02-07 10:56:27 -0800193#endif
Shih-wei Liao210eb402010-08-26 08:55:40 -0700194
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700195#ifndef ANDROID // no complex extension
196 DEF_LLVM_RUNTIME(__mulsc3)
197#endif
198
199DEF_GENERIC_OR_VFP_RUNTIME(__mulsf3)
200
201DEF_LLVM_RUNTIME(__mulvdi3)
202DEF_LLVM_RUNTIME(__mulvsi3)
203
204DEF_VFP_RUNTIME(__nedf2)
205
206DEF_GENERIC_OR_VFP_RUNTIME(__negdf2)
207
208DEF_LLVM_RUNTIME(__negdi2)
209
210DEF_GENERIC_OR_VFP_RUNTIME(__negsf2)
211
212DEF_LLVM_RUNTIME(__negvdi2)
213DEF_LLVM_RUNTIME(__negvsi2)
214
215DEF_VFP_RUNTIME(__nesf2)
216
217DEF_LLVM_RUNTIME(__paritydi2)
218DEF_LLVM_RUNTIME(__paritysi2)
219DEF_LLVM_RUNTIME(__popcountdi2)
220DEF_LLVM_RUNTIME(__popcountsi2)
221DEF_LLVM_RUNTIME(__powidf2)
222DEF_LLVM_RUNTIME(__powisf2)
223
224DEF_GENERIC_OR_VFP_RUNTIME(__subdf3)
225DEF_GENERIC_OR_VFP_RUNTIME(__subsf3)
226
227DEF_LLVM_RUNTIME(__subvdi3)
228DEF_LLVM_RUNTIME(__subvsi3)
229
230DEF_GENERIC_OR_VFP_RUNTIME(__truncdfsf2)
231
232DEF_LLVM_RUNTIME(__ucmpdi2)
Kenny Root34678ab2011-02-07 10:56:27 -0800233#if !defined(__i386__)
234 DEF_LLVM_RUNTIME(__udivdi3)
235#endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700236DEF_LLVM_RUNTIME(__udivmoddi4)
Shih-wei Liao210eb402010-08-26 08:55:40 -0700237DEF_LLVM_RUNTIME(__udivsi3)
Kenny Root34678ab2011-02-07 10:56:27 -0800238#if !defined(__i386__)
239 DEF_LLVM_RUNTIME(__umoddi3)
240#endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700241
242DEF_GENERIC_OR_VFP_RUNTIME(__unorddf2)
243DEF_GENERIC_OR_VFP_RUNTIME(__unordsf2)
244
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700245#undef DEF_GENERIC_RUNTIME
246#undef DEF_LLVM_RUNTIME
247#undef DEF_VFP_RUNTIME
Shih-wei Liaoabd1e3d2010-04-28 01:47:00 -0700248#undef DEF_BCC_RUNTIME