blob: 7e279f23ade7a917c43f6998ff3dedae0ca6fedc [file] [log] [blame]
Alexey Samsonova6b264b2014-02-14 09:20:33 +00001# This directory contains a large amount of C code which provides
2# generic implementations of the core runtime library along with optimized
3# architecture-specific code in various subdirectories.
4
5set(GENERIC_SOURCES
6 absvdi2.c
7 absvsi2.c
8 absvti2.c
9 adddf3.c
10 addsf3.c
Joerg Sonnenberger361519f2014-06-19 20:24:49 +000011 addtf3.c
Alexey Samsonova6b264b2014-02-14 09:20:33 +000012 addvdi3.c
13 addvsi3.c
14 addvti3.c
15 apple_versioning.c
16 ashldi3.c
17 ashlti3.c
18 ashrdi3.c
19 ashrti3.c
20 # FIXME: atomic.c may only be compiled if host compiler understands _Atomic
21 # atomic.c
22 clear_cache.c
23 clzdi2.c
24 clzsi2.c
25 clzti2.c
26 cmpdi2.c
27 cmpti2.c
28 comparedf2.c
29 comparesf2.c
30 ctzdi2.c
31 ctzsi2.c
32 ctzti2.c
33 divdc3.c
34 divdf3.c
35 divdi3.c
36 divmoddi4.c
37 divmodsi4.c
38 divsc3.c
39 divsf3.c
40 divsi3.c
41 divti3.c
Joerg Sonnenberger361519f2014-06-19 20:24:49 +000042 divtf3.c
Alexey Samsonova6b264b2014-02-14 09:20:33 +000043 divxc3.c
44 enable_execute_stack.c
45 eprintf.c
46 extendsfdf2.c
47 ffsdi2.c
48 ffsti2.c
49 fixdfdi.c
50 fixdfsi.c
51 fixdfti.c
52 fixsfdi.c
53 fixsfsi.c
54 fixsfti.c
55 fixunsdfdi.c
56 fixunsdfsi.c
57 fixunsdfti.c
58 fixunssfdi.c
59 fixunssfsi.c
60 fixunssfti.c
61 fixunsxfdi.c
62 fixunsxfsi.c
63 fixunsxfti.c
64 fixxfdi.c
65 fixxfti.c
66 floatdidf.c
67 floatdisf.c
68 floatdixf.c
69 floatsidf.c
70 floatsisf.c
71 floattidf.c
72 floattisf.c
73 floattixf.c
74 floatundidf.c
75 floatundisf.c
76 floatundixf.c
77 floatunsidf.c
78 floatunsisf.c
79 floatuntidf.c
80 floatuntisf.c
81 floatuntixf.c
82 gcc_personality_v0.c
83 int_util.c
84 lshrdi3.c
85 lshrti3.c
86 moddi3.c
87 modsi3.c
88 modti3.c
89 muldc3.c
90 muldf3.c
91 muldi3.c
92 mulodi4.c
93 mulosi4.c
94 muloti4.c
95 mulsc3.c
96 mulsf3.c
97 multi3.c
98 mulvdi3.c
99 mulvsi3.c
100 mulvti3.c
101 mulxc3.c
102 negdf2.c
103 negdi2.c
104 negsf2.c
105 negti2.c
106 negvdi2.c
107 negvsi2.c
108 negvti2.c
109 paritydi2.c
110 paritysi2.c
111 parityti2.c
112 popcountdi2.c
113 popcountsi2.c
114 popcountti2.c
115 powidf2.c
116 powisf2.c
117 powitf2.c
118 powixf2.c
119 subdf3.c
120 subsf3.c
121 subvdi3.c
122 subvsi3.c
123 subvti3.c
Joerg Sonnenberger361519f2014-06-19 20:24:49 +0000124 subtf3.c
Alexey Samsonova6b264b2014-02-14 09:20:33 +0000125 trampoline_setup.c
126 truncdfsf2.c
127 ucmpdi2.c
128 ucmpti2.c
129 udivdi3.c
130 udivmoddi4.c
131 udivmodsi4.c
132 udivmodti4.c
133 udivsi3.c
134 udivti3.c
135 umoddi3.c
136 umodsi3.c
137 umodti3.c)
138
139set(x86_64_SOURCES
140 x86_64/floatdidf.c
141 x86_64/floatdisf.c
142 x86_64/floatdixf.c
143 x86_64/floatundidf.S
144 x86_64/floatundisf.S
145 x86_64/floatundixf.S
146 ${GENERIC_SOURCES})
147
148set(i386_SOURCES
149 i386/ashldi3.S
150 i386/ashrdi3.S
151 i386/divdi3.S
152 i386/floatdidf.S
153 i386/floatdisf.S
154 i386/floatdixf.S
155 i386/floatundidf.S
156 i386/floatundisf.S
157 i386/floatundixf.S
158 i386/lshrdi3.S
159 i386/moddi3.S
160 i386/muldi3.S
161 i386/udivdi3.S
162 i386/umoddi3.S
163 ${GENERIC_SOURCES})
164
165set(arm_SOURCES
166 arm/adddf3vfp.S
167 arm/addsf3vfp.S
168 arm/aeabi_dcmp.S
169 arm/aeabi_fcmp.S
170 arm/aeabi_idivmod.S
171 arm/aeabi_ldivmod.S
172 arm/aeabi_memcmp.S
173 arm/aeabi_memcpy.S
174 arm/aeabi_memmove.S
175 arm/aeabi_memset.S
176 arm/aeabi_uidivmod.S
177 arm/aeabi_uldivmod.S
178 arm/bswapdi2.S
179 arm/bswapsi2.S
180 arm/comparesf2.S
181 arm/divdf3vfp.S
182 arm/divmodsi4.S
183 arm/divsf3vfp.S
184 arm/divsi3.S
185 arm/eqdf2vfp.S
186 arm/eqsf2vfp.S
187 arm/extendsfdf2vfp.S
188 arm/fixdfsivfp.S
189 arm/fixsfsivfp.S
190 arm/fixunsdfsivfp.S
191 arm/fixunssfsivfp.S
192 arm/floatsidfvfp.S
193 arm/floatsisfvfp.S
194 arm/floatunssidfvfp.S
195 arm/floatunssisfvfp.S
196 arm/gedf2vfp.S
197 arm/gesf2vfp.S
198 arm/gtdf2vfp.S
199 arm/gtsf2vfp.S
200 arm/ledf2vfp.S
201 arm/lesf2vfp.S
202 arm/ltdf2vfp.S
203 arm/ltsf2vfp.S
204 arm/modsi3.S
205 arm/muldf3vfp.S
206 arm/mulsf3vfp.S
207 arm/nedf2vfp.S
208 arm/negdf2vfp.S
209 arm/negsf2vfp.S
210 arm/nesf2vfp.S
211 arm/restore_vfp_d8_d15_regs.S
212 arm/save_vfp_d8_d15_regs.S
213 arm/subdf3vfp.S
214 arm/subsf3vfp.S
215 arm/switch16.S
216 arm/switch32.S
217 arm/switch8.S
218 arm/switchu8.S
Tim Northover1683caa2014-03-04 10:10:17 +0000219 arm/sync_fetch_and_add_4.S
220 arm/sync_fetch_and_add_8.S
221 arm/sync_fetch_and_and_4.S
222 arm/sync_fetch_and_and_8.S
223 arm/sync_fetch_and_max_4.S
224 arm/sync_fetch_and_max_8.S
225 arm/sync_fetch_and_min_4.S
226 arm/sync_fetch_and_min_8.S
227 arm/sync_fetch_and_nand_4.S
228 arm/sync_fetch_and_nand_8.S
229 arm/sync_fetch_and_or_4.S
230 arm/sync_fetch_and_or_8.S
231 arm/sync_fetch_and_sub_4.S
232 arm/sync_fetch_and_sub_8.S
233 arm/sync_fetch_and_umax_4.S
234 arm/sync_fetch_and_umax_8.S
235 arm/sync_fetch_and_umin_4.S
236 arm/sync_fetch_and_umin_8.S
237 arm/sync_fetch_and_xor_4.S
238 arm/sync_fetch_and_xor_8.S
Alexey Samsonova6b264b2014-02-14 09:20:33 +0000239 arm/sync_synchronize.S
240 arm/truncdfsf2vfp.S
241 arm/udivmodsi4.S
242 arm/udivsi3.S
243 arm/umodsi3.S
244 arm/unorddf2vfp.S
245 arm/unordsf2vfp.S
246 ${GENERIC_SOURCES})
247
Alexey Samsonov63a4af72014-02-18 09:33:45 +0000248add_custom_target(builtins)
249
Alexey Samsonova6b264b2014-02-14 09:20:33 +0000250if (NOT WIN32)
251 foreach(arch x86_64 i386 arm)
252 if(CAN_TARGET_${arch})
Alexey Samsonov00997e22014-05-22 21:12:43 +0000253 add_compiler_rt_runtime(clang_rt.builtins-${arch} ${arch} STATIC
Alexey Samsonova6b264b2014-02-14 09:20:33 +0000254 SOURCES ${${arch}_SOURCES}
255 CFLAGS "-std=c99")
Alexey Samsonov00997e22014-05-22 21:12:43 +0000256 add_dependencies(builtins clang_rt.builtins-${arch})
Alexey Samsonova6b264b2014-02-14 09:20:33 +0000257 endif()
258 endforeach()
259endif()
Alexey Samsonov63a4af72014-02-18 09:33:45 +0000260
261add_dependencies(compiler-rt builtins)