Line data Source code
1 : //===-- llvm/RuntimeLibcalls.def - File that describes libcalls -*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 : //
10 : // This file defines all of the runtime library calls the backend can emit.
11 : // The various long double types cannot be merged, because 80-bit library
12 : // functions use "xf" and 128-bit use "tf".
13 : //
14 : // When adding PPCF128 functions here, note that their names generally need
15 : // to be overridden for Darwin with the xxx$LDBL128 form. See
16 : // PPCISelLowering.cpp.
17 : //
18 : //===----------------------------------------------------------------------===//
19 :
20 : // NOTE: NO INCLUDE GUARD DESIRED!
21 :
22 : // Provide definitions of macros so that users of this file do not have to
23 : // define everything to use it...
24 :
25 : // Declare the enumerator for each libcall, along with its default name. Some
26 : // libcalls have different names on particular OSes or architectures. These
27 : // are set in InitLibcallNames() in TargetLoweringBase.cpp and/or by targets
28 : // using TargetLoweringBase::setLibcallName()
29 : #ifndef HANDLE_LIBCALL
30 : #error "HANDLE_LIBCALL must be defined"
31 : #endif
32 :
33 : // Integer
34 28520 : HANDLE_LIBCALL(SHL_I16, "__ashlhi3")
35 28520 : HANDLE_LIBCALL(SHL_I32, "__ashlsi3")
36 28520 : HANDLE_LIBCALL(SHL_I64, "__ashldi3")
37 28520 : HANDLE_LIBCALL(SHL_I128, "__ashlti3")
38 28520 : HANDLE_LIBCALL(SRL_I16, "__lshrhi3")
39 28520 : HANDLE_LIBCALL(SRL_I32, "__lshrsi3")
40 28520 : HANDLE_LIBCALL(SRL_I64, "__lshrdi3")
41 28520 : HANDLE_LIBCALL(SRL_I128, "__lshrti3")
42 28520 : HANDLE_LIBCALL(SRA_I16, "__ashrhi3")
43 28520 : HANDLE_LIBCALL(SRA_I32, "__ashrsi3")
44 28520 : HANDLE_LIBCALL(SRA_I64, "__ashrdi3")
45 28520 : HANDLE_LIBCALL(SRA_I128, "__ashrti3")
46 28520 : HANDLE_LIBCALL(MUL_I8, "__mulqi3")
47 28520 : HANDLE_LIBCALL(MUL_I16, "__mulhi3")
48 28520 : HANDLE_LIBCALL(MUL_I32, "__mulsi3")
49 28520 : HANDLE_LIBCALL(MUL_I64, "__muldi3")
50 28520 : HANDLE_LIBCALL(MUL_I128, "__multi3")
51 28520 : HANDLE_LIBCALL(MULO_I32, "__mulosi4")
52 28520 : HANDLE_LIBCALL(MULO_I64, "__mulodi4")
53 28520 : HANDLE_LIBCALL(MULO_I128, "__muloti4")
54 28520 : HANDLE_LIBCALL(SDIV_I8, "__divqi3")
55 28520 : HANDLE_LIBCALL(SDIV_I16, "__divhi3")
56 28520 : HANDLE_LIBCALL(SDIV_I32, "__divsi3")
57 28520 : HANDLE_LIBCALL(SDIV_I64, "__divdi3")
58 28520 : HANDLE_LIBCALL(SDIV_I128, "__divti3")
59 28520 : HANDLE_LIBCALL(UDIV_I8, "__udivqi3")
60 28520 : HANDLE_LIBCALL(UDIV_I16, "__udivhi3")
61 28520 : HANDLE_LIBCALL(UDIV_I32, "__udivsi3")
62 28520 : HANDLE_LIBCALL(UDIV_I64, "__udivdi3")
63 28520 : HANDLE_LIBCALL(UDIV_I128, "__udivti3")
64 28520 : HANDLE_LIBCALL(SREM_I8, "__modqi3")
65 28520 : HANDLE_LIBCALL(SREM_I16, "__modhi3")
66 28520 : HANDLE_LIBCALL(SREM_I32, "__modsi3")
67 28520 : HANDLE_LIBCALL(SREM_I64, "__moddi3")
68 28520 : HANDLE_LIBCALL(SREM_I128, "__modti3")
69 28520 : HANDLE_LIBCALL(UREM_I8, "__umodqi3")
70 28520 : HANDLE_LIBCALL(UREM_I16, "__umodhi3")
71 28520 : HANDLE_LIBCALL(UREM_I32, "__umodsi3")
72 28520 : HANDLE_LIBCALL(UREM_I64, "__umoddi3")
73 28520 : HANDLE_LIBCALL(UREM_I128, "__umodti3")
74 28520 : HANDLE_LIBCALL(SDIVREM_I8, nullptr)
75 28520 : HANDLE_LIBCALL(SDIVREM_I16, nullptr)
76 28520 : HANDLE_LIBCALL(SDIVREM_I32, nullptr)
77 28520 : HANDLE_LIBCALL(SDIVREM_I64, nullptr)
78 28520 : HANDLE_LIBCALL(SDIVREM_I128, nullptr)
79 28520 : HANDLE_LIBCALL(UDIVREM_I8, nullptr)
80 28520 : HANDLE_LIBCALL(UDIVREM_I16, nullptr)
81 28520 : HANDLE_LIBCALL(UDIVREM_I32, nullptr)
82 28520 : HANDLE_LIBCALL(UDIVREM_I64, nullptr)
83 28520 : HANDLE_LIBCALL(UDIVREM_I128, nullptr)
84 28520 : HANDLE_LIBCALL(NEG_I32, "__negsi2")
85 28520 : HANDLE_LIBCALL(NEG_I64, "__negdi2")
86 :
87 : // Floating-point
88 28520 : HANDLE_LIBCALL(ADD_F32, "__addsf3")
89 28520 : HANDLE_LIBCALL(ADD_F64, "__adddf3")
90 28520 : HANDLE_LIBCALL(ADD_F80, "__addxf3")
91 28520 : HANDLE_LIBCALL(ADD_F128, "__addtf3")
92 28520 : HANDLE_LIBCALL(ADD_PPCF128, "__gcc_qadd")
93 28520 : HANDLE_LIBCALL(SUB_F32, "__subsf3")
94 28520 : HANDLE_LIBCALL(SUB_F64, "__subdf3")
95 28520 : HANDLE_LIBCALL(SUB_F80, "__subxf3")
96 28520 : HANDLE_LIBCALL(SUB_F128, "__subtf3")
97 28520 : HANDLE_LIBCALL(SUB_PPCF128, "__gcc_qsub")
98 28520 : HANDLE_LIBCALL(MUL_F32, "__mulsf3")
99 28520 : HANDLE_LIBCALL(MUL_F64, "__muldf3")
100 28520 : HANDLE_LIBCALL(MUL_F80, "__mulxf3")
101 28520 : HANDLE_LIBCALL(MUL_F128, "__multf3")
102 28520 : HANDLE_LIBCALL(MUL_PPCF128, "__gcc_qmul")
103 28520 : HANDLE_LIBCALL(DIV_F32, "__divsf3")
104 28520 : HANDLE_LIBCALL(DIV_F64, "__divdf3")
105 28520 : HANDLE_LIBCALL(DIV_F80, "__divxf3")
106 28520 : HANDLE_LIBCALL(DIV_F128, "__divtf3")
107 28520 : HANDLE_LIBCALL(DIV_PPCF128, "__gcc_qdiv")
108 28520 : HANDLE_LIBCALL(REM_F32, "fmodf")
109 28520 : HANDLE_LIBCALL(REM_F64, "fmod")
110 28520 : HANDLE_LIBCALL(REM_F80, "fmodl")
111 28520 : HANDLE_LIBCALL(REM_F128, "fmodl")
112 28520 : HANDLE_LIBCALL(REM_PPCF128, "fmodl")
113 28520 : HANDLE_LIBCALL(FMA_F32, "fmaf")
114 28520 : HANDLE_LIBCALL(FMA_F64, "fma")
115 28520 : HANDLE_LIBCALL(FMA_F80, "fmal")
116 28520 : HANDLE_LIBCALL(FMA_F128, "fmal")
117 28520 : HANDLE_LIBCALL(FMA_PPCF128, "fmal")
118 28520 : HANDLE_LIBCALL(POWI_F32, "__powisf2")
119 28520 : HANDLE_LIBCALL(POWI_F64, "__powidf2")
120 28520 : HANDLE_LIBCALL(POWI_F80, "__powixf2")
121 28520 : HANDLE_LIBCALL(POWI_F128, "__powitf2")
122 28520 : HANDLE_LIBCALL(POWI_PPCF128, "__powitf2")
123 28520 : HANDLE_LIBCALL(SQRT_F32, "sqrtf")
124 28520 : HANDLE_LIBCALL(SQRT_F64, "sqrt")
125 28520 : HANDLE_LIBCALL(SQRT_F80, "sqrtl")
126 28520 : HANDLE_LIBCALL(SQRT_F128, "sqrtl")
127 28520 : HANDLE_LIBCALL(SQRT_PPCF128, "sqrtl")
128 28520 : HANDLE_LIBCALL(LOG_F32, "logf")
129 28520 : HANDLE_LIBCALL(LOG_F64, "log")
130 28520 : HANDLE_LIBCALL(LOG_F80, "logl")
131 28520 : HANDLE_LIBCALL(LOG_F128, "logl")
132 28520 : HANDLE_LIBCALL(LOG_PPCF128, "logl")
133 28520 : HANDLE_LIBCALL(LOG2_F32, "log2f")
134 28520 : HANDLE_LIBCALL(LOG2_F64, "log2")
135 28520 : HANDLE_LIBCALL(LOG2_F80, "log2l")
136 28520 : HANDLE_LIBCALL(LOG2_F128, "log2l")
137 28520 : HANDLE_LIBCALL(LOG2_PPCF128, "log2l")
138 28520 : HANDLE_LIBCALL(LOG10_F32, "log10f")
139 28520 : HANDLE_LIBCALL(LOG10_F64, "log10")
140 28520 : HANDLE_LIBCALL(LOG10_F80, "log10l")
141 28520 : HANDLE_LIBCALL(LOG10_F128, "log10l")
142 28520 : HANDLE_LIBCALL(LOG10_PPCF128, "log10l")
143 28520 : HANDLE_LIBCALL(EXP_F32, "expf")
144 28520 : HANDLE_LIBCALL(EXP_F64, "exp")
145 28520 : HANDLE_LIBCALL(EXP_F80, "expl")
146 28520 : HANDLE_LIBCALL(EXP_F128, "expl")
147 28520 : HANDLE_LIBCALL(EXP_PPCF128, "expl")
148 28520 : HANDLE_LIBCALL(EXP2_F32, "exp2f")
149 28520 : HANDLE_LIBCALL(EXP2_F64, "exp2")
150 28520 : HANDLE_LIBCALL(EXP2_F80, "exp2l")
151 28520 : HANDLE_LIBCALL(EXP2_F128, "exp2l")
152 28520 : HANDLE_LIBCALL(EXP2_PPCF128, "exp2l")
153 28520 : HANDLE_LIBCALL(SIN_F32, "sinf")
154 28520 : HANDLE_LIBCALL(SIN_F64, "sin")
155 28520 : HANDLE_LIBCALL(SIN_F80, "sinl")
156 28520 : HANDLE_LIBCALL(SIN_F128, "sinl")
157 28520 : HANDLE_LIBCALL(SIN_PPCF128, "sinl")
158 28520 : HANDLE_LIBCALL(COS_F32, "cosf")
159 28520 : HANDLE_LIBCALL(COS_F64, "cos")
160 28520 : HANDLE_LIBCALL(COS_F80, "cosl")
161 28520 : HANDLE_LIBCALL(COS_F128, "cosl")
162 28520 : HANDLE_LIBCALL(COS_PPCF128, "cosl")
163 28520 : HANDLE_LIBCALL(SINCOS_F32, nullptr)
164 28520 : HANDLE_LIBCALL(SINCOS_F64, nullptr)
165 28520 : HANDLE_LIBCALL(SINCOS_F80, nullptr)
166 28520 : HANDLE_LIBCALL(SINCOS_F128, nullptr)
167 28520 : HANDLE_LIBCALL(SINCOS_PPCF128, nullptr)
168 28520 : HANDLE_LIBCALL(POW_F32, "powf")
169 28520 : HANDLE_LIBCALL(POW_F64, "pow")
170 28520 : HANDLE_LIBCALL(POW_F80, "powl")
171 28520 : HANDLE_LIBCALL(POW_F128, "powl")
172 28520 : HANDLE_LIBCALL(POW_PPCF128, "powl")
173 28520 : HANDLE_LIBCALL(CEIL_F32, "ceilf")
174 28520 : HANDLE_LIBCALL(CEIL_F64, "ceil")
175 28520 : HANDLE_LIBCALL(CEIL_F80, "ceill")
176 28520 : HANDLE_LIBCALL(CEIL_F128, "ceill")
177 28520 : HANDLE_LIBCALL(CEIL_PPCF128, "ceill")
178 28520 : HANDLE_LIBCALL(TRUNC_F32, "truncf")
179 28520 : HANDLE_LIBCALL(TRUNC_F64, "trunc")
180 28520 : HANDLE_LIBCALL(TRUNC_F80, "truncl")
181 28520 : HANDLE_LIBCALL(TRUNC_F128, "truncl")
182 28520 : HANDLE_LIBCALL(TRUNC_PPCF128, "truncl")
183 28520 : HANDLE_LIBCALL(RINT_F32, "rintf")
184 28520 : HANDLE_LIBCALL(RINT_F64, "rint")
185 28520 : HANDLE_LIBCALL(RINT_F80, "rintl")
186 28520 : HANDLE_LIBCALL(RINT_F128, "rintl")
187 28520 : HANDLE_LIBCALL(RINT_PPCF128, "rintl")
188 28520 : HANDLE_LIBCALL(NEARBYINT_F32, "nearbyintf")
189 28520 : HANDLE_LIBCALL(NEARBYINT_F64, "nearbyint")
190 28520 : HANDLE_LIBCALL(NEARBYINT_F80, "nearbyintl")
191 28520 : HANDLE_LIBCALL(NEARBYINT_F128, "nearbyintl")
192 28520 : HANDLE_LIBCALL(NEARBYINT_PPCF128, "nearbyintl")
193 28520 : HANDLE_LIBCALL(ROUND_F32, "roundf")
194 28520 : HANDLE_LIBCALL(ROUND_F64, "round")
195 28520 : HANDLE_LIBCALL(ROUND_F80, "roundl")
196 28520 : HANDLE_LIBCALL(ROUND_F128, "roundl")
197 28520 : HANDLE_LIBCALL(ROUND_PPCF128, "roundl")
198 28520 : HANDLE_LIBCALL(FLOOR_F32, "floorf")
199 28520 : HANDLE_LIBCALL(FLOOR_F64, "floor")
200 28520 : HANDLE_LIBCALL(FLOOR_F80, "floorl")
201 28520 : HANDLE_LIBCALL(FLOOR_F128, "floorl")
202 28520 : HANDLE_LIBCALL(FLOOR_PPCF128, "floorl")
203 28520 : HANDLE_LIBCALL(COPYSIGN_F32, "copysignf")
204 28520 : HANDLE_LIBCALL(COPYSIGN_F64, "copysign")
205 28520 : HANDLE_LIBCALL(COPYSIGN_F80, "copysignl")
206 28520 : HANDLE_LIBCALL(COPYSIGN_F128, "copysignl")
207 28520 : HANDLE_LIBCALL(COPYSIGN_PPCF128, "copysignl")
208 28520 : HANDLE_LIBCALL(FMIN_F32, "fminf")
209 28520 : HANDLE_LIBCALL(FMIN_F64, "fmin")
210 28520 : HANDLE_LIBCALL(FMIN_F80, "fminl")
211 28520 : HANDLE_LIBCALL(FMIN_F128, "fminl")
212 28520 : HANDLE_LIBCALL(FMIN_PPCF128, "fminl")
213 28520 : HANDLE_LIBCALL(FMAX_F32, "fmaxf")
214 28520 : HANDLE_LIBCALL(FMAX_F64, "fmax")
215 28520 : HANDLE_LIBCALL(FMAX_F80, "fmaxl")
216 28520 : HANDLE_LIBCALL(FMAX_F128, "fmaxl")
217 28520 : HANDLE_LIBCALL(FMAX_PPCF128, "fmaxl")
218 :
219 : // Conversion
220 28520 : HANDLE_LIBCALL(FPEXT_F32_PPCF128, "__gcc_stoq")
221 28520 : HANDLE_LIBCALL(FPEXT_F64_PPCF128, "__gcc_dtoq")
222 28520 : HANDLE_LIBCALL(FPEXT_F64_F128, "__extenddftf2")
223 28520 : HANDLE_LIBCALL(FPEXT_F32_F128, "__extendsftf2")
224 28520 : HANDLE_LIBCALL(FPEXT_F32_F64, "__extendsfdf2")
225 28520 : HANDLE_LIBCALL(FPEXT_F16_F32, "__gnu_h2f_ieee")
226 28520 : HANDLE_LIBCALL(FPROUND_F32_F16, "__gnu_f2h_ieee")
227 28520 : HANDLE_LIBCALL(FPROUND_F64_F16, "__truncdfhf2")
228 28520 : HANDLE_LIBCALL(FPROUND_F80_F16, "__truncxfhf2")
229 28520 : HANDLE_LIBCALL(FPROUND_F128_F16, "__trunctfhf2")
230 28520 : HANDLE_LIBCALL(FPROUND_PPCF128_F16, "__trunctfhf2")
231 28520 : HANDLE_LIBCALL(FPROUND_F64_F32, "__truncdfsf2")
232 28520 : HANDLE_LIBCALL(FPROUND_F80_F32, "__truncxfsf2")
233 28520 : HANDLE_LIBCALL(FPROUND_F128_F32, "__trunctfsf2")
234 28520 : HANDLE_LIBCALL(FPROUND_PPCF128_F32, "__gcc_qtos")
235 28520 : HANDLE_LIBCALL(FPROUND_F80_F64, "__truncxfdf2")
236 28520 : HANDLE_LIBCALL(FPROUND_F128_F64, "__trunctfdf2")
237 28520 : HANDLE_LIBCALL(FPROUND_PPCF128_F64, "__gcc_qtod")
238 28520 : HANDLE_LIBCALL(FPTOSINT_F32_I32, "__fixsfsi")
239 28520 : HANDLE_LIBCALL(FPTOSINT_F32_I64, "__fixsfdi")
240 28520 : HANDLE_LIBCALL(FPTOSINT_F32_I128, "__fixsfti")
241 28520 : HANDLE_LIBCALL(FPTOSINT_F64_I32, "__fixdfsi")
242 28520 : HANDLE_LIBCALL(FPTOSINT_F64_I64, "__fixdfdi")
243 28520 : HANDLE_LIBCALL(FPTOSINT_F64_I128, "__fixdfti")
244 28520 : HANDLE_LIBCALL(FPTOSINT_F80_I32, "__fixxfsi")
245 28520 : HANDLE_LIBCALL(FPTOSINT_F80_I64, "__fixxfdi")
246 28520 : HANDLE_LIBCALL(FPTOSINT_F80_I128, "__fixxfti")
247 28520 : HANDLE_LIBCALL(FPTOSINT_F128_I32, "__fixtfsi")
248 28520 : HANDLE_LIBCALL(FPTOSINT_F128_I64, "__fixtfdi")
249 28520 : HANDLE_LIBCALL(FPTOSINT_F128_I128, "__fixtfti")
250 28520 : HANDLE_LIBCALL(FPTOSINT_PPCF128_I32, "__gcc_qtou")
251 28520 : HANDLE_LIBCALL(FPTOSINT_PPCF128_I64, "__fixtfdi")
252 28520 : HANDLE_LIBCALL(FPTOSINT_PPCF128_I128, "__fixtfti")
253 28520 : HANDLE_LIBCALL(FPTOUINT_F32_I32, "__fixunssfsi")
254 28520 : HANDLE_LIBCALL(FPTOUINT_F32_I64, "__fixunssfdi")
255 28520 : HANDLE_LIBCALL(FPTOUINT_F32_I128, "__fixunssfti")
256 28520 : HANDLE_LIBCALL(FPTOUINT_F64_I32, "__fixunsdfsi")
257 28520 : HANDLE_LIBCALL(FPTOUINT_F64_I64, "__fixunsdfdi")
258 28520 : HANDLE_LIBCALL(FPTOUINT_F64_I128, "__fixunsdfti")
259 28520 : HANDLE_LIBCALL(FPTOUINT_F80_I32, "__fixunsxfsi")
260 28520 : HANDLE_LIBCALL(FPTOUINT_F80_I64, "__fixunsxfdi")
261 28520 : HANDLE_LIBCALL(FPTOUINT_F80_I128, "__fixunsxfti")
262 28520 : HANDLE_LIBCALL(FPTOUINT_F128_I32, "__fixunstfsi")
263 28520 : HANDLE_LIBCALL(FPTOUINT_F128_I64, "__fixunstfdi")
264 28520 : HANDLE_LIBCALL(FPTOUINT_F128_I128, "__fixunstfti")
265 28520 : HANDLE_LIBCALL(FPTOUINT_PPCF128_I32, "__fixunstfsi")
266 28520 : HANDLE_LIBCALL(FPTOUINT_PPCF128_I64, "__fixunstfdi")
267 28520 : HANDLE_LIBCALL(FPTOUINT_PPCF128_I128, "__fixunstfti")
268 28520 : HANDLE_LIBCALL(SINTTOFP_I32_F32, "__floatsisf")
269 28520 : HANDLE_LIBCALL(SINTTOFP_I32_F64, "__floatsidf")
270 28520 : HANDLE_LIBCALL(SINTTOFP_I32_F80, "__floatsixf")
271 28520 : HANDLE_LIBCALL(SINTTOFP_I32_F128, "__floatsitf")
272 28520 : HANDLE_LIBCALL(SINTTOFP_I32_PPCF128, "__gcc_itoq")
273 28520 : HANDLE_LIBCALL(SINTTOFP_I64_F32, "__floatdisf")
274 28520 : HANDLE_LIBCALL(SINTTOFP_I64_F64, "__floatdidf")
275 28520 : HANDLE_LIBCALL(SINTTOFP_I64_F80, "__floatdixf")
276 28520 : HANDLE_LIBCALL(SINTTOFP_I64_F128, "__floatditf")
277 28520 : HANDLE_LIBCALL(SINTTOFP_I64_PPCF128, "__floatditf")
278 28520 : HANDLE_LIBCALL(SINTTOFP_I128_F32, "__floattisf")
279 28520 : HANDLE_LIBCALL(SINTTOFP_I128_F64, "__floattidf")
280 28520 : HANDLE_LIBCALL(SINTTOFP_I128_F80, "__floattixf")
281 28520 : HANDLE_LIBCALL(SINTTOFP_I128_F128, "__floattitf")
282 28520 : HANDLE_LIBCALL(SINTTOFP_I128_PPCF128, "__floattitf")
283 28520 : HANDLE_LIBCALL(UINTTOFP_I32_F32, "__floatunsisf")
284 28520 : HANDLE_LIBCALL(UINTTOFP_I32_F64, "__floatunsidf")
285 28520 : HANDLE_LIBCALL(UINTTOFP_I32_F80, "__floatunsixf")
286 28520 : HANDLE_LIBCALL(UINTTOFP_I32_F128, "__floatunsitf")
287 28520 : HANDLE_LIBCALL(UINTTOFP_I32_PPCF128, "__gcc_utoq")
288 28520 : HANDLE_LIBCALL(UINTTOFP_I64_F32, "__floatundisf")
289 28520 : HANDLE_LIBCALL(UINTTOFP_I64_F64, "__floatundidf")
290 28520 : HANDLE_LIBCALL(UINTTOFP_I64_F80, "__floatundixf")
291 28520 : HANDLE_LIBCALL(UINTTOFP_I64_F128, "__floatunditf")
292 28520 : HANDLE_LIBCALL(UINTTOFP_I64_PPCF128, "__floatunditf")
293 28520 : HANDLE_LIBCALL(UINTTOFP_I128_F32, "__floatuntisf")
294 28520 : HANDLE_LIBCALL(UINTTOFP_I128_F64, "__floatuntidf")
295 28520 : HANDLE_LIBCALL(UINTTOFP_I128_F80, "__floatuntixf")
296 28520 : HANDLE_LIBCALL(UINTTOFP_I128_F128, "__floatuntitf")
297 28520 : HANDLE_LIBCALL(UINTTOFP_I128_PPCF128, "__floatuntitf")
298 :
299 : // Comparison
300 28520 : HANDLE_LIBCALL(OEQ_F32, "__eqsf2")
301 28520 : HANDLE_LIBCALL(OEQ_F64, "__eqdf2")
302 28520 : HANDLE_LIBCALL(OEQ_F128, "__eqtf2")
303 28520 : HANDLE_LIBCALL(OEQ_PPCF128, "__gcc_qeq")
304 28520 : HANDLE_LIBCALL(UNE_F32, "__nesf2")
305 28520 : HANDLE_LIBCALL(UNE_F64, "__nedf2")
306 28520 : HANDLE_LIBCALL(UNE_F128, "__netf2")
307 28520 : HANDLE_LIBCALL(UNE_PPCF128, "__gcc_qne")
308 28520 : HANDLE_LIBCALL(OGE_F32, "__gesf2")
309 28520 : HANDLE_LIBCALL(OGE_F64, "__gedf2")
310 28520 : HANDLE_LIBCALL(OGE_F128, "__getf2")
311 28520 : HANDLE_LIBCALL(OGE_PPCF128, "__gcc_qge")
312 28520 : HANDLE_LIBCALL(OLT_F32, "__ltsf2")
313 28520 : HANDLE_LIBCALL(OLT_F64, "__ltdf2")
314 28520 : HANDLE_LIBCALL(OLT_F128, "__lttf2")
315 28520 : HANDLE_LIBCALL(OLT_PPCF128, "__gcc_qlt")
316 28520 : HANDLE_LIBCALL(OLE_F32, "__lesf2")
317 28520 : HANDLE_LIBCALL(OLE_F64, "__ledf2")
318 28520 : HANDLE_LIBCALL(OLE_F128, "__letf2")
319 28520 : HANDLE_LIBCALL(OLE_PPCF128, "__gcc_qle")
320 28520 : HANDLE_LIBCALL(OGT_F32, "__gtsf2")
321 28520 : HANDLE_LIBCALL(OGT_F64, "__gtdf2")
322 28520 : HANDLE_LIBCALL(OGT_F128, "__gttf2")
323 28520 : HANDLE_LIBCALL(OGT_PPCF128, "__gcc_qgt")
324 28520 : HANDLE_LIBCALL(UO_F32, "__unordsf2")
325 28520 : HANDLE_LIBCALL(UO_F64, "__unorddf2")
326 28520 : HANDLE_LIBCALL(UO_F128, "__unordtf2")
327 28520 : HANDLE_LIBCALL(UO_PPCF128, "__gcc_qunord")
328 28520 : HANDLE_LIBCALL(O_F32, "__unordsf2")
329 28520 : HANDLE_LIBCALL(O_F64, "__unorddf2")
330 28520 : HANDLE_LIBCALL(O_F128, "__unordtf2")
331 28520 : HANDLE_LIBCALL(O_PPCF128, "__gcc_qunord")
332 :
333 : // Memory
334 28520 : HANDLE_LIBCALL(MEMCPY, "memcpy")
335 28520 : HANDLE_LIBCALL(MEMMOVE, "memmove")
336 28520 : HANDLE_LIBCALL(MEMSET, "memset")
337 :
338 : // Element-wise unordered-atomic memory of different sizes
339 28520 : HANDLE_LIBCALL(MEMCPY_ELEMENT_UNORDERED_ATOMIC_1, "__llvm_memcpy_element_unordered_atomic_1")
340 28520 : HANDLE_LIBCALL(MEMCPY_ELEMENT_UNORDERED_ATOMIC_2, "__llvm_memcpy_element_unordered_atomic_2")
341 28520 : HANDLE_LIBCALL(MEMCPY_ELEMENT_UNORDERED_ATOMIC_4, "__llvm_memcpy_element_unordered_atomic_4")
342 28520 : HANDLE_LIBCALL(MEMCPY_ELEMENT_UNORDERED_ATOMIC_8, "__llvm_memcpy_element_unordered_atomic_8")
343 28520 : HANDLE_LIBCALL(MEMCPY_ELEMENT_UNORDERED_ATOMIC_16, "__llvm_memcpy_element_unordered_atomic_16")
344 28520 : HANDLE_LIBCALL(MEMMOVE_ELEMENT_UNORDERED_ATOMIC_1, "__llvm_memmove_element_unordered_atomic_1")
345 28520 : HANDLE_LIBCALL(MEMMOVE_ELEMENT_UNORDERED_ATOMIC_2, "__llvm_memmove_element_unordered_atomic_2")
346 28520 : HANDLE_LIBCALL(MEMMOVE_ELEMENT_UNORDERED_ATOMIC_4, "__llvm_memmove_element_unordered_atomic_4")
347 28520 : HANDLE_LIBCALL(MEMMOVE_ELEMENT_UNORDERED_ATOMIC_8, "__llvm_memmove_element_unordered_atomic_8")
348 28520 : HANDLE_LIBCALL(MEMMOVE_ELEMENT_UNORDERED_ATOMIC_16, "__llvm_memmove_element_unordered_atomic_16")
349 28520 : HANDLE_LIBCALL(MEMSET_ELEMENT_UNORDERED_ATOMIC_1, "__llvm_memset_element_unordered_atomic_1")
350 28520 : HANDLE_LIBCALL(MEMSET_ELEMENT_UNORDERED_ATOMIC_2, "__llvm_memset_element_unordered_atomic_2")
351 28520 : HANDLE_LIBCALL(MEMSET_ELEMENT_UNORDERED_ATOMIC_4, "__llvm_memset_element_unordered_atomic_4")
352 28520 : HANDLE_LIBCALL(MEMSET_ELEMENT_UNORDERED_ATOMIC_8, "__llvm_memset_element_unordered_atomic_8")
353 28520 : HANDLE_LIBCALL(MEMSET_ELEMENT_UNORDERED_ATOMIC_16, "__llvm_memset_element_unordered_atomic_16")
354 :
355 : // Exception handling
356 28520 : HANDLE_LIBCALL(UNWIND_RESUME, "_Unwind_Resume")
357 :
358 : // Note: there are two sets of atomics libcalls; see
359 : // <https://llvm.org/docs/Atomics.html> for more info on the
360 : // difference between them.
361 :
362 : // Atomic '__sync_*' libcalls.
363 28520 : HANDLE_LIBCALL(SYNC_VAL_COMPARE_AND_SWAP_1, "__sync_val_compare_and_swap_1")
364 28520 : HANDLE_LIBCALL(SYNC_VAL_COMPARE_AND_SWAP_2, "__sync_val_compare_and_swap_2")
365 28520 : HANDLE_LIBCALL(SYNC_VAL_COMPARE_AND_SWAP_4, "__sync_val_compare_and_swap_4")
366 28520 : HANDLE_LIBCALL(SYNC_VAL_COMPARE_AND_SWAP_8, "__sync_val_compare_and_swap_8")
367 28520 : HANDLE_LIBCALL(SYNC_VAL_COMPARE_AND_SWAP_16, "__sync_val_compare_and_swap_16")
368 28520 : HANDLE_LIBCALL(SYNC_LOCK_TEST_AND_SET_1, "__sync_lock_test_and_set_1")
369 28520 : HANDLE_LIBCALL(SYNC_LOCK_TEST_AND_SET_2, "__sync_lock_test_and_set_2")
370 28520 : HANDLE_LIBCALL(SYNC_LOCK_TEST_AND_SET_4, "__sync_lock_test_and_set_4")
371 28520 : HANDLE_LIBCALL(SYNC_LOCK_TEST_AND_SET_8, "__sync_lock_test_and_set_8")
372 28520 : HANDLE_LIBCALL(SYNC_LOCK_TEST_AND_SET_16, "__sync_lock_test_and_set_16")
373 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_ADD_1, "__sync_fetch_and_add_1")
374 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_ADD_2, "__sync_fetch_and_add_2")
375 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_ADD_4, "__sync_fetch_and_add_4")
376 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_ADD_8, "__sync_fetch_and_add_8")
377 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_ADD_16, "__sync_fetch_and_add_16")
378 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_SUB_1, "__sync_fetch_and_sub_1")
379 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_SUB_2, "__sync_fetch_and_sub_2")
380 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_SUB_4, "__sync_fetch_and_sub_4")
381 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_SUB_8, "__sync_fetch_and_sub_8")
382 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_SUB_16, "__sync_fetch_and_sub_16")
383 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_AND_1, "__sync_fetch_and_and_1")
384 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_AND_2, "__sync_fetch_and_and_2")
385 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_AND_4, "__sync_fetch_and_and_4")
386 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_AND_8, "__sync_fetch_and_and_8")
387 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_AND_16, "__sync_fetch_and_and_16")
388 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_OR_1, "__sync_fetch_and_or_1")
389 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_OR_2, "__sync_fetch_and_or_2")
390 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_OR_4, "__sync_fetch_and_or_4")
391 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_OR_8, "__sync_fetch_and_or_8")
392 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_OR_16, "__sync_fetch_and_or_16")
393 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_XOR_1, "__sync_fetch_and_xor_1")
394 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_XOR_2, "__sync_fetch_and_xor_2")
395 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_XOR_4, "__sync_fetch_and_xor_4")
396 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_XOR_8, "__sync_fetch_and_xor_8")
397 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_XOR_16, "__sync_fetch_and_xor_16")
398 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_NAND_1, "__sync_fetch_and_nand_1")
399 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_NAND_2, "__sync_fetch_and_nand_2")
400 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_NAND_4, "__sync_fetch_and_nand_4")
401 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_NAND_8, "__sync_fetch_and_nand_8")
402 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_NAND_16, "__sync_fetch_and_nand_16")
403 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MAX_1, "__sync_fetch_and_max_1")
404 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MAX_2, "__sync_fetch_and_max_2")
405 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MAX_4, "__sync_fetch_and_max_4")
406 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MAX_8, "__sync_fetch_and_max_8")
407 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MAX_16, "__sync_fetch_and_max_16")
408 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMAX_1, "__sync_fetch_and_umax_1")
409 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMAX_2, "__sync_fetch_and_umax_2")
410 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMAX_4, "__sync_fetch_and_umax_4")
411 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMAX_8, "__sync_fetch_and_umax_8")
412 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMAX_16, "__sync_fetch_and_umax_16")
413 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MIN_1, "__sync_fetch_and_min_1")
414 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MIN_2, "__sync_fetch_and_min_2")
415 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MIN_4, "__sync_fetch_and_min_4")
416 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MIN_8, "__sync_fetch_and_min_8")
417 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_MIN_16, "__sync_fetch_and_min_16")
418 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMIN_1, "__sync_fetch_and_umin_1")
419 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMIN_2, "__sync_fetch_and_umin_2")
420 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMIN_4, "__sync_fetch_and_umin_4")
421 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMIN_8, "__sync_fetch_and_umin_8")
422 28520 : HANDLE_LIBCALL(SYNC_FETCH_AND_UMIN_16, "__sync_fetch_and_umin_16")
423 :
424 : // Atomic `__atomic_*' libcalls.
425 28520 : HANDLE_LIBCALL(ATOMIC_LOAD, "__atomic_load")
426 28520 : HANDLE_LIBCALL(ATOMIC_LOAD_1, "__atomic_load_1")
427 28520 : HANDLE_LIBCALL(ATOMIC_LOAD_2, "__atomic_load_2")
428 28520 : HANDLE_LIBCALL(ATOMIC_LOAD_4, "__atomic_load_4")
429 28520 : HANDLE_LIBCALL(ATOMIC_LOAD_8, "__atomic_load_8")
430 28520 : HANDLE_LIBCALL(ATOMIC_LOAD_16, "__atomic_load_16")
431 :
432 28520 : HANDLE_LIBCALL(ATOMIC_STORE, "__atomic_store")
433 28520 : HANDLE_LIBCALL(ATOMIC_STORE_1, "__atomic_store_1")
434 28520 : HANDLE_LIBCALL(ATOMIC_STORE_2, "__atomic_store_2")
435 28520 : HANDLE_LIBCALL(ATOMIC_STORE_4, "__atomic_store_4")
436 28520 : HANDLE_LIBCALL(ATOMIC_STORE_8, "__atomic_store_8")
437 28520 : HANDLE_LIBCALL(ATOMIC_STORE_16, "__atomic_store_16")
438 :
439 28520 : HANDLE_LIBCALL(ATOMIC_EXCHANGE, "__atomic_exchange")
440 28520 : HANDLE_LIBCALL(ATOMIC_EXCHANGE_1, "__atomic_exchange_1")
441 28520 : HANDLE_LIBCALL(ATOMIC_EXCHANGE_2, "__atomic_exchange_2")
442 28520 : HANDLE_LIBCALL(ATOMIC_EXCHANGE_4, "__atomic_exchange_4")
443 28520 : HANDLE_LIBCALL(ATOMIC_EXCHANGE_8, "__atomic_exchange_8")
444 28520 : HANDLE_LIBCALL(ATOMIC_EXCHANGE_16, "__atomic_exchange_16")
445 :
446 28520 : HANDLE_LIBCALL(ATOMIC_COMPARE_EXCHANGE, "__atomic_compare_exchange")
447 28520 : HANDLE_LIBCALL(ATOMIC_COMPARE_EXCHANGE_1, "__atomic_compare_exchange_1")
448 28520 : HANDLE_LIBCALL(ATOMIC_COMPARE_EXCHANGE_2, "__atomic_compare_exchange_2")
449 28520 : HANDLE_LIBCALL(ATOMIC_COMPARE_EXCHANGE_4, "__atomic_compare_exchange_4")
450 28520 : HANDLE_LIBCALL(ATOMIC_COMPARE_EXCHANGE_8, "__atomic_compare_exchange_8")
451 28520 : HANDLE_LIBCALL(ATOMIC_COMPARE_EXCHANGE_16, "__atomic_compare_exchange_16")
452 :
453 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_ADD_1, "__atomic_fetch_add_1")
454 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_ADD_2, "__atomic_fetch_add_2")
455 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_ADD_4, "__atomic_fetch_add_4")
456 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_ADD_8, "__atomic_fetch_add_8")
457 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_ADD_16, "__atomic_fetch_add_16")
458 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_SUB_1, "__atomic_fetch_sub_1")
459 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_SUB_2, "__atomic_fetch_sub_2")
460 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_SUB_4, "__atomic_fetch_sub_4")
461 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_SUB_8, "__atomic_fetch_sub_8")
462 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_SUB_16, "__atomic_fetch_sub_16")
463 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_AND_1, "__atomic_fetch_and_1")
464 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_AND_2, "__atomic_fetch_and_2")
465 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_AND_4, "__atomic_fetch_and_4")
466 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_AND_8, "__atomic_fetch_and_8")
467 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_AND_16, "__atomic_fetch_and_16")
468 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_OR_1, "__atomic_fetch_or_1")
469 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_OR_2, "__atomic_fetch_or_2")
470 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_OR_4, "__atomic_fetch_or_4")
471 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_OR_8, "__atomic_fetch_or_8")
472 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_OR_16, "__atomic_fetch_or_16")
473 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_XOR_1, "__atomic_fetch_xor_1")
474 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_XOR_2, "__atomic_fetch_xor_2")
475 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_XOR_4, "__atomic_fetch_xor_4")
476 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_XOR_8, "__atomic_fetch_xor_8")
477 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_XOR_16, "__atomic_fetch_xor_16")
478 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_NAND_1, "__atomic_fetch_nand_1")
479 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_NAND_2, "__atomic_fetch_nand_2")
480 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_NAND_4, "__atomic_fetch_nand_4")
481 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_NAND_8, "__atomic_fetch_nand_8")
482 28520 : HANDLE_LIBCALL(ATOMIC_FETCH_NAND_16, "__atomic_fetch_nand_16")
483 :
484 : // Stack Protector Fail
485 28520 : HANDLE_LIBCALL(STACKPROTECTOR_CHECK_FAIL, "__stack_chk_fail")
486 :
487 : // Deoptimization
488 28520 : HANDLE_LIBCALL(DEOPTIMIZE, "__llvm_deoptimize")
489 :
490 28520 : HANDLE_LIBCALL(UNKNOWN_LIBCALL, nullptr)
491 :
492 : #undef HANDLE_LIBCALL
|