@@ -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
//--------------------------------------------------------------------
@@ -1097,6 +1100,12 @@ defvar LibmHasSinCosF80 = LibcallImpls<(add sincos_f80), hasSinCos>;
1097
1100
defvar LibmHasSinCosF128 = LibcallImpls<(add sincos_f128), hasSinCos>;
1098
1101
defvar LibmHasSinCosPPCF128 = LibcallImpls<(add sincos_ppcf128), hasSinCos>;
1099
1102
1103
+ defvar LibmHasExp10F32 = LibcallImpls<(add exp10f), hasExp10>;
1104
+ defvar LibmHasExp10F64 = LibcallImpls<(add exp10), hasExp10>;
1105
+ defvar LibmHasExp10F80 = LibcallImpls<(add exp10l_f80), hasExp10>;
1106
+ defvar LibmHasExp10F128 = LibcallImpls<(add exp10l_f128), hasExp10>;
1107
+ defvar LibmHasExp10PPCF128 = LibcallImpls<(add exp10l_ppcf128), hasExp10>;
1108
+
1100
1109
defvar WindowsMathRemovals = [
1101
1110
ldexpf, ldexp_f80, ldexp_f128, ldexp_ppcf128,
1102
1111
frexpf, frexp_f80, frexp_f128, frexp_ppcf128
@@ -1195,7 +1204,8 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
1195
1204
LibcallImpls<(add Int128RTLibcalls), isAArch64_ILP64>,
1196
1205
LibcallImpls<(add bzero), isOSDarwin>,
1197
1206
DarwinExp10, DarwinSinCosStret,
1198
- LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128)
1207
+ LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1208
+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128)
1199
1209
>;
1200
1210
1201
1211
// Prepend a # to every name
@@ -1466,6 +1476,7 @@ def ARMSystemLibrary
1466
1476
AEABIDivRemCalls,
1467
1477
DarwinSinCosStret, DarwinExp10,
1468
1478
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1479
+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128,
1469
1480
1470
1481
// Use divmod compiler-rt calls for iOS 5.0 and later.
1471
1482
LibcallImpls<(add __divmodsi4, __udivmodsi4),
@@ -1958,6 +1969,7 @@ def PPCSystemLibrary
1958
1969
DefaultRuntimeLibcallImpls_f128),
1959
1970
__extendkftf2, __trunctfkf2,
1960
1971
DefaultRuntimeLibcallImpls_ppcf128,
1972
+ exp10f, exp10, exp10l_ppcf128,
1961
1973
LibmF128Libcalls, AIX32Calls, AIX64Calls,
1962
1974
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1963
1975
LibmHasSinCosPPCF128,
@@ -1973,7 +1985,9 @@ def isRISCV64 : RuntimeLibcallPredicate<"TT.isRISCV64()">;
1973
1985
1974
1986
def RISCVSystemLibrary
1975
1987
: SystemRuntimeLibrary<isRISCV,
1976
- (add DefaultRuntimeLibcallImpls, __riscv_flush_icache,
1988
+ (add DefaultRuntimeLibcallImpls,
1989
+ exp10f, exp10, exp10l_f128,
1990
+ __riscv_flush_icache,
1977
1991
LibcallImpls<(add Int128RTLibcalls), isRISCV64>)>;
1978
1992
1979
1993
//===----------------------------------------------------------------------===//
@@ -2068,7 +2082,7 @@ def isX86 : RuntimeLibcallPredicate<"TT.isX86()">;
2068
2082
def darwinHas__bzero : RuntimeLibcallPredicate<"TT.isMacOSX() && !TT.isMacOSXVersionLT(10, 6)">;
2069
2083
2070
2084
// FIXME: This is has ldexpl/frexpl plus use f128 for long double.
2071
- def hasFrexplLdexplF128
2085
+ def hasExpFrexplLdexplF128
2072
2086
: RuntimeLibcallPredicate<[{(!TT.isOSWindows() || TT.isOSCygMing()) && !TT.isGNUEnvironment()}]>;
2073
2087
2074
2088
// Use the f128 variants of math functions on x86
@@ -2084,12 +2098,13 @@ defvar X86CommonLibcalls =
2084
2098
LibcallImpls<(add __bzero), darwinHas__bzero>,
2085
2099
LibmHasFrexpF32, LibmHasLdexpF32,
2086
2100
LibmHasFrexpF80, LibmHasLdexpF80,
2087
- LibcallImpls<(add frexp_f128, ldexp_f128), hasFrexplLdexplF128 >,
2101
+ LibcallImpls<(add frexp_f128, ldexp_f128, exp10l_f128 ), hasExpFrexplLdexplF128 >,
2088
2102
DefaultRuntimeLibcallImpls_f80,
2103
+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F80,
2104
+ LibcallImpls<(add MostPowI), isNotOSMSVCRT>,
2089
2105
// FIXME: MSVCRT doesn't have powi. The f128 case is added as a
2090
2106
// hack for one test relying on it.
2091
- __powitf2_f128,
2092
- LibcallImpls<(add MostPowI), isNotOSMSVCRT>
2107
+ __powitf2_f128
2093
2108
);
2094
2109
2095
2110
defvar Windows32DivRemMulCalls =
@@ -2229,4 +2244,5 @@ def WasmSystemLibrary
2229
2244
: SystemRuntimeLibrary<isWasm,
2230
2245
(add DefaultRuntimeLibcallImpls, Int128RTLibcalls,
2231
2246
CompilerRTOnlyInt64Libcalls, CompilerRTOnlyInt128Libcalls,
2247
+ exp10f, exp10,
2232
2248
emscripten_return_address)>;
0 commit comments