@@ -29,6 +29,9 @@ def isNotOSWindowsOrIsCygwinMinGW
29
29
def isGNUEnvironment : RuntimeLibcallPredicate<"TT.isGNUEnvironment()">;
30
30
def darwinHasSinCosStret : RuntimeLibcallPredicate<"darwinHasSinCosStret(TT)">;
31
31
def darwinHasExp10 : RuntimeLibcallPredicate<"darwinHasExp10(TT)">;
32
+
33
+ def hasExp10 : RuntimeLibcallPredicate<[{!TT.isOSDarwin()}]>;
34
+
32
35
def hasSinCos : RuntimeLibcallPredicate<"hasSinCos(TT)">;
33
36
34
37
// FIXME: Way to combine predicates
@@ -776,12 +779,6 @@ def __exp2l_finite_f80 : RuntimeLibcallImpl<EXP2_FINITE_F80, "__exp2l_finite">;
776
779
def __exp2l_finite_f128 : RuntimeLibcallImpl<EXP2_FINITE_F128, "__exp2l_finite">;
777
780
def __exp2l_finite_ppcf128 : RuntimeLibcallImpl<EXP2_FINITE_PPCF128, "__exp2l_finite">;
778
781
779
- def exp10f : RuntimeLibcallImpl<EXP10_F32>;
780
- def exp10 : RuntimeLibcallImpl<EXP10_F64>;
781
- def exp10l_f80 : RuntimeLibcallImpl<EXP10_F80, "exp10l">;
782
- def exp10l_f128 : RuntimeLibcallImpl<EXP10_F128, "exp10l">;
783
- def exp10l_ppcf128 : RuntimeLibcallImpl<EXP10_PPCF128, "exp10l">;
784
-
785
782
def sinf : RuntimeLibcallImpl<SIN_F32>;
786
783
def sin : RuntimeLibcallImpl<SIN_F64>;
787
784
defm sin : LibmLongDoubleLibCall;
@@ -942,6 +939,12 @@ def calloc : RuntimeLibcallImpl<CALLOC>;
942
939
943
940
} // End let IsDefault = true
944
941
942
+ def exp10f : RuntimeLibcallImpl<EXP10_F32>;
943
+ def exp10 : RuntimeLibcallImpl<EXP10_F64>;
944
+ def exp10l_f80 : RuntimeLibcallImpl<EXP10_F80, "exp10l">;
945
+ def exp10l_f128 : RuntimeLibcallImpl<EXP10_F128, "exp10l">;
946
+ def exp10l_ppcf128 : RuntimeLibcallImpl<EXP10_PPCF128, "exp10l">;
947
+
945
948
//--------------------------------------------------------------------
946
949
// compiler-rt/libgcc but 64-bit only, not available by default
947
950
//--------------------------------------------------------------------
@@ -1101,6 +1104,12 @@ defvar LibmHasSinCosF80 = LibcallImpls<(add sincos_f80), hasSinCos>;
1101
1104
defvar LibmHasSinCosF128 = LibcallImpls<(add sincos_f128), hasSinCos>;
1102
1105
defvar LibmHasSinCosPPCF128 = LibcallImpls<(add sincos_ppcf128), hasSinCos>;
1103
1106
1107
+ defvar LibmHasExp10F32 = LibcallImpls<(add exp10f), hasExp10>;
1108
+ defvar LibmHasExp10F64 = LibcallImpls<(add exp10), hasExp10>;
1109
+ defvar LibmHasExp10F80 = LibcallImpls<(add exp10l_f80), hasExp10>;
1110
+ defvar LibmHasExp10F128 = LibcallImpls<(add exp10l_f128), hasExp10>;
1111
+ defvar LibmHasExp10PPCF128 = LibcallImpls<(add exp10l_ppcf128), hasExp10>;
1112
+
1104
1113
defvar WindowsMathRemovals = [
1105
1114
ldexpf, ldexp_f80, ldexp_f128, ldexp_ppcf128,
1106
1115
frexpf, frexp_f80, frexp_f128, frexp_ppcf128
@@ -1199,7 +1208,8 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
1199
1208
LibcallImpls<(add Int128RTLibcalls), isAArch64_ILP64>,
1200
1209
LibcallImpls<(add bzero), isOSDarwin>,
1201
1210
DarwinExp10, DarwinSinCosStret,
1202
- LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128)
1211
+ LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1212
+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128)
1203
1213
>;
1204
1214
1205
1215
// Prepend a # to every name
@@ -1470,6 +1480,7 @@ def ARMSystemLibrary
1470
1480
AEABIDivRemCalls,
1471
1481
DarwinSinCosStret, DarwinExp10,
1472
1482
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1483
+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128,
1473
1484
1474
1485
// Use divmod compiler-rt calls for iOS 5.0 and later.
1475
1486
LibcallImpls<(add __divmodsi4, __udivmodsi4),
@@ -1962,6 +1973,7 @@ def PPCSystemLibrary
1962
1973
DefaultRuntimeLibcallImpls_f128),
1963
1974
__extendkftf2, __trunctfkf2,
1964
1975
DefaultRuntimeLibcallImpls_ppcf128,
1976
+ exp10f, exp10, exp10l_ppcf128,
1965
1977
LibmF128Libcalls, AIX32Calls, AIX64Calls,
1966
1978
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1967
1979
LibmHasSinCosPPCF128,
@@ -1977,7 +1989,9 @@ def isRISCV64 : RuntimeLibcallPredicate<"TT.isRISCV64()">;
1977
1989
1978
1990
def RISCVSystemLibrary
1979
1991
: SystemRuntimeLibrary<isRISCV,
1980
- (add DefaultRuntimeLibcallImpls, __riscv_flush_icache,
1992
+ (add DefaultRuntimeLibcallImpls,
1993
+ exp10f, exp10, exp10l_f128,
1994
+ __riscv_flush_icache,
1981
1995
LibcallImpls<(add Int128RTLibcalls), isRISCV64>)>;
1982
1996
1983
1997
//===----------------------------------------------------------------------===//
@@ -2086,6 +2100,10 @@ defvar X86CommonLibcalls =
2086
2100
LibmHasFrexpF32, LibmHasLdexpF32,
2087
2101
LibmHasFrexpF80, LibmHasLdexpF80,
2088
2102
DefaultRuntimeLibcallImpls_f80,
2103
+
2104
+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F80,
2105
+ LibmHasExp10F128,
2106
+
2089
2107
// MSVCRT doesn't have powi
2090
2108
// FIXME: It's almost certainly correct that MSVCRT has
2091
2109
// __powitf2_f128, but at least one test is relying on it.
@@ -2230,4 +2248,5 @@ def WasmSystemLibrary
2230
2248
: SystemRuntimeLibrary<isWasm,
2231
2249
(add DefaultRuntimeLibcallImpls, Int128RTLibcalls,
2232
2250
CompilerRTOnlyInt64Libcalls, CompilerRTOnlyInt128Libcalls,
2251
+ exp10f, exp10,
2233
2252
emscripten_return_address)>;
0 commit comments