Skip to content

Commit 5585852

Browse files
authored
PowerPC: Move runtime libcall configuration to RuntimeLibcallsInfo (#142542)
These should not be set in the TargetLowering constructor, RuntimeLibcalls needs to be accurate outside of codegen contexts.
1 parent f5e499a commit 5585852

File tree

2 files changed

+34
-33
lines changed

2 files changed

+34
-33
lines changed

llvm/lib/IR/RuntimeLibcalls.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,40 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT) {
129129
setLibcallName(RTLIB::OLE_F128, "__lekf2");
130130
setLibcallName(RTLIB::OGT_F128, "__gtkf2");
131131
setLibcallName(RTLIB::UO_F128, "__unordkf2");
132+
133+
setLibcallName(RTLIB::LOG_F128, "logf128");
134+
setLibcallName(RTLIB::LOG2_F128, "log2f128");
135+
setLibcallName(RTLIB::LOG10_F128, "log10f128");
136+
setLibcallName(RTLIB::EXP_F128, "expf128");
137+
setLibcallName(RTLIB::EXP2_F128, "exp2f128");
138+
setLibcallName(RTLIB::SIN_F128, "sinf128");
139+
setLibcallName(RTLIB::COS_F128, "cosf128");
140+
setLibcallName(RTLIB::SINCOS_F128, "sincosf128");
141+
setLibcallName(RTLIB::POW_F128, "powf128");
142+
setLibcallName(RTLIB::FMIN_F128, "fminf128");
143+
setLibcallName(RTLIB::FMAX_F128, "fmaxf128");
144+
setLibcallName(RTLIB::REM_F128, "fmodf128");
145+
setLibcallName(RTLIB::SQRT_F128, "sqrtf128");
146+
setLibcallName(RTLIB::CEIL_F128, "ceilf128");
147+
setLibcallName(RTLIB::FLOOR_F128, "floorf128");
148+
setLibcallName(RTLIB::TRUNC_F128, "truncf128");
149+
setLibcallName(RTLIB::ROUND_F128, "roundf128");
150+
setLibcallName(RTLIB::LROUND_F128, "lroundf128");
151+
setLibcallName(RTLIB::LLROUND_F128, "llroundf128");
152+
setLibcallName(RTLIB::RINT_F128, "rintf128");
153+
setLibcallName(RTLIB::LRINT_F128, "lrintf128");
154+
setLibcallName(RTLIB::LLRINT_F128, "llrintf128");
155+
setLibcallName(RTLIB::NEARBYINT_F128, "nearbyintf128");
156+
setLibcallName(RTLIB::FMA_F128, "fmaf128");
157+
setLibcallName(RTLIB::FREXP_F128, "frexpf128");
158+
159+
if (TT.isOSAIX()) {
160+
bool isPPC64 = TT.isPPC64();
161+
setLibcallName(RTLIB::MEMCPY, isPPC64 ? "___memmove64" : "___memmove");
162+
setLibcallName(RTLIB::MEMMOVE, isPPC64 ? "___memmove64" : "___memmove");
163+
setLibcallName(RTLIB::MEMSET, isPPC64 ? "___memset64" : "___memset");
164+
setLibcallName(RTLIB::BZERO, isPPC64 ? "___bzero64" : "___bzero");
165+
}
132166
}
133167

134168
// A few names are different on particular architectures or environments.

llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,39 +1428,6 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
14281428
setTargetDAGCombine({ISD::TRUNCATE, ISD::SETCC, ISD::SELECT_CC});
14291429
}
14301430

1431-
setLibcallName(RTLIB::LOG_F128, "logf128");
1432-
setLibcallName(RTLIB::LOG2_F128, "log2f128");
1433-
setLibcallName(RTLIB::LOG10_F128, "log10f128");
1434-
setLibcallName(RTLIB::EXP_F128, "expf128");
1435-
setLibcallName(RTLIB::EXP2_F128, "exp2f128");
1436-
setLibcallName(RTLIB::SIN_F128, "sinf128");
1437-
setLibcallName(RTLIB::COS_F128, "cosf128");
1438-
setLibcallName(RTLIB::SINCOS_F128, "sincosf128");
1439-
setLibcallName(RTLIB::POW_F128, "powf128");
1440-
setLibcallName(RTLIB::FMIN_F128, "fminf128");
1441-
setLibcallName(RTLIB::FMAX_F128, "fmaxf128");
1442-
setLibcallName(RTLIB::REM_F128, "fmodf128");
1443-
setLibcallName(RTLIB::SQRT_F128, "sqrtf128");
1444-
setLibcallName(RTLIB::CEIL_F128, "ceilf128");
1445-
setLibcallName(RTLIB::FLOOR_F128, "floorf128");
1446-
setLibcallName(RTLIB::TRUNC_F128, "truncf128");
1447-
setLibcallName(RTLIB::ROUND_F128, "roundf128");
1448-
setLibcallName(RTLIB::LROUND_F128, "lroundf128");
1449-
setLibcallName(RTLIB::LLROUND_F128, "llroundf128");
1450-
setLibcallName(RTLIB::RINT_F128, "rintf128");
1451-
setLibcallName(RTLIB::LRINT_F128, "lrintf128");
1452-
setLibcallName(RTLIB::LLRINT_F128, "llrintf128");
1453-
setLibcallName(RTLIB::NEARBYINT_F128, "nearbyintf128");
1454-
setLibcallName(RTLIB::FMA_F128, "fmaf128");
1455-
setLibcallName(RTLIB::FREXP_F128, "frexpf128");
1456-
1457-
if (Subtarget.isAIXABI()) {
1458-
setLibcallName(RTLIB::MEMCPY, isPPC64 ? "___memmove64" : "___memmove");
1459-
setLibcallName(RTLIB::MEMMOVE, isPPC64 ? "___memmove64" : "___memmove");
1460-
setLibcallName(RTLIB::MEMSET, isPPC64 ? "___memset64" : "___memset");
1461-
setLibcallName(RTLIB::BZERO, isPPC64 ? "___bzero64" : "___bzero");
1462-
}
1463-
14641431
// With 32 condition bits, we don't need to sink (and duplicate) compares
14651432
// aggressively in CodeGenPrep.
14661433
if (Subtarget.useCRBits()) {

0 commit comments

Comments
 (0)