Skip to content

Commit 48350d5

Browse files
committed
Hexagon: Move runtime libcall configuration to tablegen
1 parent 83257ed commit 48350d5

File tree

2 files changed

+11
-35
lines changed

2 files changed

+11
-35
lines changed

llvm/include/llvm/IR/RuntimeLibcalls.td

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,6 +1413,7 @@ def AVRSystemLibrary
14131413
// Hexagon Runtime Libcalls
14141414
//===----------------------------------------------------------------------===//
14151415

1416+
defset list<RuntimeLibcallImpl> HexagonLibcalls = {
14161417
def __hexagon_divsi3 : RuntimeLibcallImpl<SDIV_I32>;
14171418
def __hexagon_divdi3 : RuntimeLibcallImpl<SDIV_I64>;
14181419
def __hexagon_udivsi3 : RuntimeLibcallImpl<UDIV_I32>;
@@ -1445,6 +1446,16 @@ def __hexagon_fast2_sqrtdf2 : RuntimeLibcallImpl<FAST_SQRT_F64>;
14451446

14461447
def __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes
14471448
: RuntimeLibcallImpl<HEXAGON_MEMCPY_LIKELY_ALIGNED_MIN32BYTES_MULT8BYTES>;
1449+
}
1450+
1451+
def isHexagon : RuntimeLibcallPredicate<"TT.getArch() == Triple::hexagon">;
1452+
1453+
def HexagonSystemLibrary
1454+
: SystemRuntimeLibrary<isHexagon,
1455+
(add (sub DefaultLibcallImpls32,
1456+
__adddf3, __divsf3, __udivsi3, __udivdi3,
1457+
__umoddi3, __divdf3, __muldf3, __divsi3, __subdf3, sqrtf,
1458+
__divdi3, __umodsi3, __moddi3, __modsi3), HexagonLibcalls)>;
14481459

14491460
//===----------------------------------------------------------------------===//
14501461
// Lanai Runtime Libcalls

llvm/lib/IR/RuntimeLibcalls.cpp

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -254,41 +254,6 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT,
254254
setLibcallImpl(RTLIB::MULO_I128, RTLIB::Unsupported);
255255
}
256256

257-
if (TT.getArch() == Triple::ArchType::hexagon) {
258-
setLibcallImpl(RTLIB::SDIV_I32, RTLIB::__hexagon_divsi3);
259-
setLibcallImpl(RTLIB::SDIV_I64, RTLIB::__hexagon_divdi3);
260-
setLibcallImpl(RTLIB::UDIV_I32, RTLIB::__hexagon_udivsi3);
261-
setLibcallImpl(RTLIB::UDIV_I64, RTLIB::__hexagon_udivdi3);
262-
setLibcallImpl(RTLIB::SREM_I32, RTLIB::__hexagon_modsi3);
263-
setLibcallImpl(RTLIB::SREM_I64, RTLIB::__hexagon_moddi3);
264-
setLibcallImpl(RTLIB::UREM_I32, RTLIB::__hexagon_umodsi3);
265-
setLibcallImpl(RTLIB::UREM_I64, RTLIB::__hexagon_umoddi3);
266-
267-
// Prefix is: nothing for "slow-math",
268-
// "fast2_" for V5+ fast-math double-precision
269-
// (actually, keep fast-math and fast-math2 separate for now)
270-
271-
setLibcallImpl(RTLIB::FAST_ADD_F64, RTLIB::__hexagon_fast_adddf3);
272-
setLibcallImpl(RTLIB::FAST_SUB_F64, RTLIB::__hexagon_fast_subdf3);
273-
setLibcallImpl(RTLIB::FAST_MUL_F64, RTLIB::__hexagon_fast_muldf3);
274-
setLibcallImpl(RTLIB::FAST_DIV_F64, RTLIB::__hexagon_fast_divdf3);
275-
setLibcallImpl(RTLIB::FAST_DIV_F32, RTLIB::__hexagon_fast_divsf3);
276-
setLibcallImpl(RTLIB::FAST_SQRT_F32, RTLIB::__hexagon_fast2_sqrtf);
277-
// This is the only fast library function for sqrtd.
278-
setLibcallImpl(RTLIB::FAST_SQRT_F64, RTLIB::__hexagon_fast2_sqrtdf2);
279-
280-
setLibcallImpl(RTLIB::ADD_F64, RTLIB::__hexagon_adddf3);
281-
setLibcallImpl(RTLIB::SUB_F64, RTLIB::__hexagon_subdf3);
282-
setLibcallImpl(RTLIB::MUL_F64, RTLIB::__hexagon_muldf3);
283-
setLibcallImpl(RTLIB::DIV_F64, RTLIB::__hexagon_divdf3);
284-
setLibcallImpl(RTLIB::DIV_F32, RTLIB::__hexagon_divsf3);
285-
setLibcallImpl(RTLIB::SQRT_F32, RTLIB::__hexagon_sqrtf);
286-
287-
setLibcallImpl(
288-
RTLIB::HEXAGON_MEMCPY_LIKELY_ALIGNED_MIN32BYTES_MULT8BYTES,
289-
RTLIB::__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes);
290-
}
291-
292257
if (TT.getArch() == Triple::ArchType::msp430) {
293258
setLibcallImplCallingConv(RTLIB::__mspabi_mpyll,
294259
CallingConv::MSP430_BUILTIN);

0 commit comments

Comments
 (0)