@@ -990,15 +990,21 @@ defset list<RuntimeLibcallImpl> LibmF128FiniteLibcalls = {
990
990
defvar AllDefaultLibCalls =
991
991
!foreach(entry, AllDefaultRuntimeLibcallImpls, entry.Provides);
992
992
993
- // These libcalls are only available in libgcc, not compiler-rt for
994
- // 32-bit arch. They are available on both for 64-bit .
995
- defvar LibCallsCompilerRT64OrLibGCC = [
993
+ // Exist in libgcc and compiler-rt for 64-bit targets, or if
994
+ // COMPILER_RT_ENABLE_SOFTWARE_INT128 .
995
+ defvar Int128RTLibcalls = [
996
996
__ashlti3, __lshrti3, __ashrti3, __multi3, __mulodi4
997
997
];
998
998
999
+ // Only available in compiler-rt
1000
+ defvar CompilerRTOnlyInt128Libcalls = [
1001
+ __mulodi4
1002
+ ];
1003
+
999
1004
defvar DefaultRuntimeLibcallImpls =
1000
- !listremove(AllDefaultRuntimeLibcallImpls,
1001
- LibCallsCompilerRT64OrLibGCC);
1005
+ !listremove(!listremove(AllDefaultRuntimeLibcallImpls,
1006
+ Int128RTLibcalls),
1007
+ CompilerRTOnlyInt128Libcalls);
1002
1008
1003
1009
defvar DefaultRuntimeLibcallImpls_f128 =
1004
1010
!filter(entry, DefaultRuntimeLibcallImpls,
@@ -1013,7 +1019,7 @@ defvar DefaultLibcallImpls32 = DefaultRuntimeLibcallImpls;
1013
1019
1014
1020
/// Default set of libcall impls for 64-bit architectures.
1015
1021
defvar DefaultLibcallImpls64 = !listconcat(DefaultRuntimeLibcallImpls,
1016
- LibCallsCompilerRT64OrLibGCC );
1022
+ Int128RTLibcalls );
1017
1023
1018
1024
defvar DarwinSinCosStret = LibcallImpls<(add __sincosf_stret, __sincos_stret),
1019
1025
darwinHasSinCosStret>;
@@ -1063,7 +1069,7 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
1063
1069
isAArch64_ExceptArm64EC,
1064
1070
(add DefaultRuntimeLibcallImpls,
1065
1071
AArch64LibcallImpls,
1066
- LibcallImpls<(add LibCallsCompilerRT64OrLibGCC ), isAArch64_ILP64>,
1072
+ LibcallImpls<(add Int128RTLibcalls ), isAArch64_ILP64>,
1067
1073
LibcallImpls<(add bzero), isOSDarwin>,
1068
1074
DarwinExp10, DarwinSinCosStret,
1069
1075
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128)
@@ -1644,8 +1650,7 @@ def PPCSystemLibrary
1644
1650
__extendkftf2, __trunctfkf2,
1645
1651
LibmF128Libcalls, AIX32Calls, AIX64Calls,
1646
1652
AvailableIf<memcpy, isNotAIX>,
1647
- LibcallImpls<(add LibCallsCompilerRT64OrLibGCC),
1648
- isPPC64/* or is libgcc*/>)>;
1653
+ LibcallImpls<(add Int128RTLibcalls), isPPC64>)>;
1649
1654
1650
1655
//===----------------------------------------------------------------------===//
1651
1656
// SPARC Runtime Libcalls
@@ -1831,5 +1836,6 @@ def isWasm : RuntimeLibcallPredicate<"TT.isWasm()">;
1831
1836
// this on emscripten depending on what they end up doing.
1832
1837
def WasmSystemLibrary
1833
1838
: SystemRuntimeLibrary<isWasm,
1834
- (add DefaultRuntimeLibcallImpls, LibCallsCompilerRT64OrLibGCC,
1839
+ (add DefaultRuntimeLibcallImpls, Int128RTLibcalls,
1840
+ CompilerRTOnlyInt128Libcalls,
1835
1841
emscripten_return_address)>;
0 commit comments