Skip to content

Commit 56f56a8

Browse files
committed
TableGen: Handle setting runtime libcall calling conventions
Allow associating a non-default CallingConv with a set of library functions, and applying a default for a SystemLibrary. I also wanted to be able to apply a default calling conv to a RuntimeLibcallImpl, but that turned out to be annoying so leave it for later.
1 parent 138da58 commit 56f56a8

File tree

6 files changed

+429
-191
lines changed

6 files changed

+429
-191
lines changed

llvm/include/llvm/IR/RuntimeLibcalls.td

Lines changed: 128 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1282,11 +1282,12 @@ def __gnu_h2f_ieee : RuntimeLibcallImpl<FPEXT_F16_F32>;
12821282
//===----------------------------------------------------------------------===//
12831283

12841284
// Several of the runtime library functions use a special calling conv
1285-
def __divmodqi4 : RuntimeLibcallImpl<SDIVREM_I8>; // CallingConv::AVR_BUILTIN
1286-
def __divmodhi4 : RuntimeLibcallImpl<SDIVREM_I16>; // CallingConv::AVR_BUILTIN
1285+
def __divmodqi4 : RuntimeLibcallImpl<SDIVREM_I8>;
1286+
def __divmodhi4 : RuntimeLibcallImpl<SDIVREM_I16>;
1287+
def __udivmodqi4 : RuntimeLibcallImpl<UDIVREM_I8>;
1288+
def __udivmodhi4 : RuntimeLibcallImpl<UDIVREM_I16>;
1289+
12871290
//def __divmodsi4 : RuntimeLibcallImpl<SDIVREM_I32>;
1288-
def __udivmodqi4 : RuntimeLibcallImpl<UDIVREM_I8>; // CallingConv::AVR_BUILTIN
1289-
def __udivmodhi4 : RuntimeLibcallImpl<UDIVREM_I16>; // CallingConv::AVR_BUILTIN
12901291
//def __udivmodsi4 : RuntimeLibcallImpl<UDIVREM_I32>;
12911292

12921293
// Standard sinf/cosf name replaced with "sin" and "cos". Define a
@@ -1312,9 +1313,12 @@ def AVRSystemLibrary
13121313
// Standard f64 names are replaced
13131314
sin, cos, sinf, cosf),
13141315

1315-
__divmodqi4, __divmodhi4, __divmodsi4, __udivmodqi4, __udivmodhi4,
1316-
__udivmodsi4,
1317-
1316+
// Several of the runtime library functions use a special calling
1317+
// conv
1318+
LibcallsWithCC<(add __divmodqi4, __divmodhi4, __udivmodqi4,
1319+
__udivmodhi4),
1320+
AVR_BUILTIN>,
1321+
__divmodsi4, __udivmodsi4,
13181322
// Trigonometric rtlib functions
13191323
avr_sin, avr_cos)>;
13201324

@@ -1537,6 +1541,117 @@ def __mspabi_mpyll : RuntimeLibcallImpl<MUL_I64>;
15371541

15381542
// setLibcallCallingConv(MUL_I64, CallingConv::MSP430_BUILTIN);
15391543

1544+
def isMSP430 : RuntimeLibcallPredicate<"TT.getArch() == Triple::msp430">;
1545+
1546+
defvar MSP430DefaultOptOut = [
1547+
__addsf3, __divsf3, __extendsfdf2, __truncdfsf2, __fixsfsi,
1548+
__fixsfdi, __fixunssfsi, __mulsf3, __eqsf2, __gesf2, __gtsf2,
1549+
__divhi3, __divsi3, __ashlsi3, __floatsidf, __floatsisf,
1550+
__ashrsi3, __modhi3, __udivsi3, __fixdfsi, __fixunssfdi,
1551+
__udivhi3, __umodsi3, __nesf2, __lesf2, __floatundisf,
1552+
__fixdfdi, __fixunsdfsi, __modsi3, __floatunsisf,
1553+
__fixunsdfdi, __ltsf2, __floatdisf, __floatdidf,
1554+
__lshrsi3, __subsf3, __umodhi3, __floatunsidf,
1555+
__floatundidf
1556+
];
1557+
1558+
// EABI Libcalls - EABI Section 6.2
1559+
def MSP430SystemLibrary
1560+
: SystemRuntimeLibrary<isMSP430,
1561+
(add (sub DefaultRuntimeLibcallImpls, MSP430DefaultOptOut),
1562+
1563+
// Floating point conversions - EABI Table 6
1564+
__mspabi_cvtdf,
1565+
__mspabi_cvtfd,
1566+
// The following is NOT implemented in libgcc
1567+
//__mspabi_fixdi,
1568+
__mspabi_fixdli,
1569+
__mspabi_fixdlli,
1570+
// The following is NOT implemented in libgcc
1571+
// __mspabi_fixdu
1572+
__mspabi_fixdul,
1573+
__mspabi_fixdull,
1574+
// The following is NOT implemented in libgcc
1575+
//__mspabi_fixfi,
1576+
__mspabi_fixfli,
1577+
__mspabi_fixflli,
1578+
// The following is NOT implemented in libgcc
1579+
//__mspabi_fixfu,
1580+
__mspabi_fixful,
1581+
__mspabi_fixfull,
1582+
// TODO The following IS implemented in libgcc
1583+
//__mspabi_fltid
1584+
__mspabi_fltlid,
1585+
// TODO The following IS implemented in libgcc but is not in the EABI
1586+
__mspabi_fltllid,
1587+
// TODO The following IS implemented in libgcc
1588+
//__mspabi_fltud,
1589+
__mspabi_fltuld,
1590+
// The following IS implemented in libgcc but is not in the EABI
1591+
__mspabi_fltulld,
1592+
// TODO The following IS implemented in libgcc
1593+
//__mspabi_fltif,
1594+
__mspabi_fltlif,
1595+
// TODO The following IS implemented in libgcc but is not in the EABI
1596+
__mspabi_fltllif,
1597+
// TODO The following IS implemented in libgcc
1598+
//__mspabi_fltuf,
1599+
__mspabi_fltulf,
1600+
// The following IS implemented in libgcc but is not in the EABI
1601+
__mspabi_fltullf,
1602+
1603+
// Floating point comparisons - EABI Table 7
1604+
LibcallsWithCC<(add __mspabi_cmpd__oeq,
1605+
__mspabi_cmpd__une,
1606+
__mspabi_cmpd__oge,
1607+
__mspabi_cmpd__olt,
1608+
__mspabi_cmpd__ole,
1609+
__mspabi_cmpd__ogt), MSP430_BUILTIN>,
1610+
__mspabi_cmpf__oeq,
1611+
__mspabi_cmpf__une,
1612+
__mspabi_cmpf__oge,
1613+
__mspabi_cmpf__olt,
1614+
__mspabi_cmpf__ole,
1615+
__mspabi_cmpf__ogt,
1616+
1617+
// Floating point arithmetic - EABI Table 8
1618+
LibcallsWithCC<(add __mspabi_addd,
1619+
__mspabi_subd,
1620+
__mspabi_mpyd,
1621+
__mspabi_divd), MSP430_BUILTIN>,
1622+
1623+
__mspabi_addf,
1624+
__mspabi_subf,
1625+
__mspabi_mpyf,
1626+
__mspabi_divf,
1627+
1628+
// The following are NOT implemented in libgcc
1629+
// __mspabi_negd,
1630+
// __mspabi_negf,
1631+
1632+
// Universal Integer Operations - EABI Table 9
1633+
__mspabi_divi,
1634+
__mspabi_divli,
1635+
LibcallsWithCC<(add __mspabi_divlli), MSP430_BUILTIN>,
1636+
__mspabi_divu,
1637+
__mspabi_divul,
1638+
LibcallsWithCC<(add __mspabi_divull), MSP430_BUILTIN>,
1639+
__mspabi_remi,
1640+
__mspabi_remli,
1641+
LibcallsWithCC<(add __mspabi_remlli), MSP430_BUILTIN>,
1642+
__mspabi_remu,
1643+
__mspabi_remul,
1644+
LibcallsWithCC<(add __mspabi_remull), MSP430_BUILTIN>,
1645+
1646+
// Bitwise Operations - EABI Table 10
1647+
// TODO: __mspabi_[srli/srai/slli] ARE implemented in libgcc
1648+
__mspabi_srll,
1649+
__mspabi_sral,
1650+
__mspabi_slll
1651+
// __mspabi_[srlll/srall/sllll/rlli/rlll] are NOT implemented in libgcc
1652+
)
1653+
>;
1654+
15401655
//===----------------------------------------------------------------------===//
15411656
// NVPTX Runtime Libcalls
15421657
//===----------------------------------------------------------------------===//
@@ -1680,11 +1795,12 @@ def _Q_ulltoq : RuntimeLibcallImpl<UINTTOFP_I64_F128>;
16801795
//===----------------------------------------------------------------------===//
16811796

16821797
// TT.isWindowsMSVCEnvironment() || TT.isWindowsItaniumEnvironment()
1683-
def _alldiv : RuntimeLibcallImpl<SDIV_I64>; // CallingConv::X86_StdCall
1684-
def _aulldiv : RuntimeLibcallImpl<UDIV_I64>; // CallingConv::X86_StdCall
1685-
def _allrem : RuntimeLibcallImpl<SREM_I64>; // CallingConv::X86_StdCall
1686-
def _aullrem : RuntimeLibcallImpl<UREM_I64>; // CallingConv::X86_StdCall
1687-
def _allmul : RuntimeLibcallImpl<MUL_I64>; // CallingConv::X86_StdCall
1798+
1799+
def _alldiv : RuntimeLibcallImpl<SDIV_I64>;
1800+
def _aulldiv : RuntimeLibcallImpl<UDIV_I64>;
1801+
def _allrem : RuntimeLibcallImpl<SREM_I64>;
1802+
def _aullrem : RuntimeLibcallImpl<UREM_I64>;
1803+
def _allmul : RuntimeLibcallImpl<MUL_I64>;
16881804

16891805
//===----------------------------------------------------------------------===//
16901806
// XCore Runtime Libcalls

llvm/include/llvm/IR/RuntimeLibcallsImpl.td

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,20 @@ class LibcallLoweringPredicate<code cond> { code Cond = cond; }
2323

2424
def AlwaysAvailable : RuntimeLibcallPredicate<[{}]>;
2525

26+
class LibcallCallingConv<code CC = [{}]> {
27+
// Enum value for the calling convention. Empty string defaults to
28+
// CallingConv::C.
29+
code CallingConv = CC;
30+
}
31+
32+
def DefaultCC : LibcallCallingConv;
33+
def FASTCC : LibcallCallingConv<[{CallingConv::Fast}]>;
34+
def MSP430_BUILTIN : LibcallCallingConv<[{CallingConv::MSP430_BUILTIN}]>;
35+
def ARM_AAPCS : LibcallCallingConv<[{CallingConv::ARM_AAPCS}]>;
36+
def ARM_AAPCS_VFP : LibcallCallingConv<[{CallingConv::ARM_AAPCS_VFP}]>;
37+
def X86_STDCALL : LibcallCallingConv<[{CallingConv::X86_StdCall}]>;
38+
def AVR_BUILTIN : LibcallCallingConv<[{CallingConv::AVR_BUILTIN}]>;
39+
2640
/// Abstract definition for functionality the compiler may need to
2741
/// emit a call to. Emits the RTLIB::Libcall enum - This enum defines
2842
/// all of the runtime library calls the backend can emit. The various
@@ -41,7 +55,6 @@ class RuntimeLibcall {
4155
// Concrete implementation of a libcall, which may have a different
4256
// name and only be valid on some subset of targets.
4357

44-
// TODO: Do we need a way to conditionally select calling convention?
4558
class RuntimeLibcallImpl<RuntimeLibcall P, string Name = NAME> {
4659
RuntimeLibcall Provides = P;
4760
string LibCallFuncName = Name;
@@ -54,15 +67,27 @@ class LibcallImpls<dag funcList,
5467
// Function of the triple where this applies
5568
RuntimeLibcallPredicate AvailabilityPredicate = Pred;
5669
dag MemberList = funcList;
70+
71+
// If set, applies calling convention to every entry instead of
72+
// taking the system default.
73+
LibcallCallingConv CallingConv = ?;
5774
}
5875

5976
/// Convenience wrapper around LibcallImplSet to make a single libcall
6077
/// implementation conditionally conditionally available.
6178
class AvailableIf<RuntimeLibcallImpl Impl, RuntimeLibcallPredicate Pred>
6279
: LibcallImpls<(add Impl), Pred>;
6380

81+
class LibcallsWithCC<dag funcList, LibcallCallingConv CC,
82+
RuntimeLibcallPredicate Pred = AlwaysAvailable>
83+
: LibcallImpls<funcList, Pred> {
84+
LibcallCallingConv CallingConv = CC;
85+
}
86+
6487
/// Define a complete top level set of runtime libcalls for a target.
6588
class SystemRuntimeLibrary<RuntimeLibcallPredicate Pred, dag funcList> {
89+
/// Set the default calling convention assumed for RuntimeLibcallImpl members.
90+
LibcallCallingConv DefaultLibcallCallingConv = DefaultCC;
6691
RuntimeLibcallPredicate TriplePred = Pred;
6792
LibcallImpls MemberList = LibcallImpls<funcList>;
6893
}

llvm/lib/IR/RuntimeLibcalls.cpp

Lines changed: 0 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -100,137 +100,6 @@ static void setARMLibcallNames(RuntimeLibcallsInfo &Info, const Triple &TT,
100100
}
101101
}
102102

103-
static void setMSP430Libcalls(RuntimeLibcallsInfo &Info, const Triple &TT) {
104-
// EABI Libcalls - EABI Section 6.2
105-
const struct {
106-
const RTLIB::Libcall Op;
107-
const RTLIB::LibcallImpl Impl;
108-
} LibraryCalls[] = {
109-
// Floating point conversions - EABI Table 6
110-
{RTLIB::FPROUND_F64_F32, RTLIB::__mspabi_cvtdf},
111-
{RTLIB::FPEXT_F32_F64, RTLIB::__mspabi_cvtfd},
112-
// The following is NOT implemented in libgcc
113-
//{ RTLIB::FPTOSINT_F64_I16, RTLIB::__mspabi_fixdi },
114-
{RTLIB::FPTOSINT_F64_I32, RTLIB::__mspabi_fixdli},
115-
{RTLIB::FPTOSINT_F64_I64, RTLIB::__mspabi_fixdlli},
116-
// The following is NOT implemented in libgcc
117-
//{ RTLIB::FPTOUINT_F64_I16, RTLIB::__mspabi_fixdu },
118-
{RTLIB::FPTOUINT_F64_I32, RTLIB::__mspabi_fixdul},
119-
{RTLIB::FPTOUINT_F64_I64, RTLIB::__mspabi_fixdull},
120-
// The following is NOT implemented in libgcc
121-
//{ RTLIB::FPTOSINT_F32_I16, RTLIB::__mspabi_fixfi },
122-
{RTLIB::FPTOSINT_F32_I32, RTLIB::__mspabi_fixfli},
123-
{RTLIB::FPTOSINT_F32_I64, RTLIB::__mspabi_fixflli},
124-
// The following is NOT implemented in libgcc
125-
//{ RTLIB::FPTOUINT_F32_I16, RTLIB::__mspabi_fixfu },
126-
{RTLIB::FPTOUINT_F32_I32, RTLIB::__mspabi_fixful},
127-
{RTLIB::FPTOUINT_F32_I64, RTLIB::__mspabi_fixfull},
128-
// TODO The following IS implemented in libgcc
129-
//{ RTLIB::SINTTOFP_I16_F64, RTLIB::__mspabi_fltid },
130-
{RTLIB::SINTTOFP_I32_F64, RTLIB::__mspabi_fltlid},
131-
// TODO The following IS implemented in libgcc but is not in the EABI
132-
{RTLIB::SINTTOFP_I64_F64, RTLIB::__mspabi_fltllid},
133-
// TODO The following IS implemented in libgcc
134-
//{ RTLIB::UINTTOFP_I16_F64, RTLIB::__mspabi_fltud },
135-
{RTLIB::UINTTOFP_I32_F64, RTLIB::__mspabi_fltuld},
136-
// The following IS implemented in libgcc but is not in the EABI
137-
{RTLIB::UINTTOFP_I64_F64, RTLIB::__mspabi_fltulld},
138-
// TODO The following IS implemented in libgcc
139-
//{ RTLIB::SINTTOFP_I16_F32, RTLIB::__mspabi_fltif },
140-
{RTLIB::SINTTOFP_I32_F32, RTLIB::__mspabi_fltlif},
141-
// TODO The following IS implemented in libgcc but is not in the EABI
142-
{RTLIB::SINTTOFP_I64_F32, RTLIB::__mspabi_fltllif},
143-
// TODO The following IS implemented in libgcc
144-
//{ RTLIB::UINTTOFP_I16_F32, RTLIB::__mspabi_fltuf },
145-
{RTLIB::UINTTOFP_I32_F32, RTLIB::__mspabi_fltulf},
146-
// The following IS implemented in libgcc but is not in the EABI
147-
{RTLIB::UINTTOFP_I64_F32, RTLIB::__mspabi_fltullf},
148-
149-
// Floating point comparisons - EABI Table 7
150-
{RTLIB::OEQ_F64, RTLIB::__mspabi_cmpd__oeq},
151-
{RTLIB::UNE_F64, RTLIB::__mspabi_cmpd__une},
152-
{RTLIB::OGE_F64, RTLIB::__mspabi_cmpd__oge},
153-
{RTLIB::OLT_F64, RTLIB::__mspabi_cmpd__olt},
154-
{RTLIB::OLE_F64, RTLIB::__mspabi_cmpd__ole},
155-
{RTLIB::OGT_F64, RTLIB::__mspabi_cmpd__ogt},
156-
{RTLIB::OEQ_F32, RTLIB::__mspabi_cmpf__oeq},
157-
{RTLIB::UNE_F32, RTLIB::__mspabi_cmpf__une},
158-
{RTLIB::OGE_F32, RTLIB::__mspabi_cmpf__oge},
159-
{RTLIB::OLT_F32, RTLIB::__mspabi_cmpf__olt},
160-
{RTLIB::OLE_F32, RTLIB::__mspabi_cmpf__ole},
161-
{RTLIB::OGT_F32, RTLIB::__mspabi_cmpf__ogt},
162-
163-
// Floating point arithmetic - EABI Table 8
164-
{RTLIB::ADD_F64, RTLIB::__mspabi_addd},
165-
{RTLIB::ADD_F32, RTLIB::__mspabi_addf},
166-
{RTLIB::DIV_F64, RTLIB::__mspabi_divd},
167-
{RTLIB::DIV_F32, RTLIB::__mspabi_divf},
168-
{RTLIB::MUL_F64, RTLIB::__mspabi_mpyd},
169-
{RTLIB::MUL_F32, RTLIB::__mspabi_mpyf},
170-
{RTLIB::SUB_F64, RTLIB::__mspabi_subd},
171-
{RTLIB::SUB_F32, RTLIB::__mspabi_subf},
172-
// The following are NOT implemented in libgcc
173-
// { RTLIB::NEG_F64, RTLIB::__mspabi_negd },
174-
// { RTLIB::NEG_F32, RTLIB::__mspabi_negf },
175-
176-
// Universal Integer Operations - EABI Table 9
177-
{RTLIB::SDIV_I16, RTLIB::__mspabi_divi},
178-
{RTLIB::SDIV_I32, RTLIB::__mspabi_divli},
179-
{RTLIB::SDIV_I64, RTLIB::__mspabi_divlli},
180-
{RTLIB::UDIV_I16, RTLIB::__mspabi_divu},
181-
{RTLIB::UDIV_I32, RTLIB::__mspabi_divul},
182-
{RTLIB::UDIV_I64, RTLIB::__mspabi_divull},
183-
{RTLIB::SREM_I16, RTLIB::__mspabi_remi},
184-
{RTLIB::SREM_I32, RTLIB::__mspabi_remli},
185-
{RTLIB::SREM_I64, RTLIB::__mspabi_remlli},
186-
{RTLIB::UREM_I16, RTLIB::__mspabi_remu},
187-
{RTLIB::UREM_I32, RTLIB::__mspabi_remul},
188-
{RTLIB::UREM_I64, RTLIB::__mspabi_remull},
189-
190-
// Bitwise Operations - EABI Table 10
191-
// TODO: __mspabi_[srli/srai/slli] ARE implemented in libgcc
192-
{RTLIB::SRL_I32, RTLIB::__mspabi_srll},
193-
{RTLIB::SRA_I32, RTLIB::__mspabi_sral},
194-
{RTLIB::SHL_I32, RTLIB::__mspabi_slll},
195-
// __mspabi_[srlll/srall/sllll/rlli/rlll] are NOT implemented in libgcc
196-
};
197-
198-
for (const auto &LC : LibraryCalls)
199-
Info.setLibcallImpl(LC.Op, LC.Impl);
200-
201-
// Several of the runtime library functions use a special calling conv
202-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_divull,
203-
CallingConv::MSP430_BUILTIN);
204-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_remull,
205-
CallingConv::MSP430_BUILTIN);
206-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_divlli,
207-
CallingConv::MSP430_BUILTIN);
208-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_remlli,
209-
CallingConv::MSP430_BUILTIN);
210-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_addd,
211-
CallingConv::MSP430_BUILTIN);
212-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_subd,
213-
CallingConv::MSP430_BUILTIN);
214-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_mpyd,
215-
CallingConv::MSP430_BUILTIN);
216-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_divd,
217-
CallingConv::MSP430_BUILTIN);
218-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_cmpd__oeq,
219-
CallingConv::MSP430_BUILTIN);
220-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_cmpd__une,
221-
CallingConv::MSP430_BUILTIN);
222-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_cmpd__oge,
223-
CallingConv::MSP430_BUILTIN);
224-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_cmpd__olt,
225-
CallingConv::MSP430_BUILTIN);
226-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_cmpd__ole,
227-
CallingConv::MSP430_BUILTIN);
228-
Info.setLibcallImplCallingConv(RTLIB::__mspabi_cmpd__ogt,
229-
CallingConv::MSP430_BUILTIN);
230-
231-
// TODO: __mspabi_srall, __mspabi_srlll, __mspabi_sllll
232-
}
233-
234103
void RuntimeLibcallsInfo::initSoftFloatCmpLibcallPredicates() {
235104
SoftFloatCompareLibcallPredicates[RTLIB::OEQ_F32] = CmpInst::ICMP_EQ;
236105
SoftFloatCompareLibcallPredicates[RTLIB::OEQ_F64] = CmpInst::ICMP_EQ;
@@ -441,13 +310,6 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT,
441310

442311
if (TT.isARM() || TT.isThumb())
443312
setARMLibcallNames(*this, TT, FloatABI, EABIVersion);
444-
else if (TT.getArch() == Triple::ArchType::avr) {
445-
// Several of the runtime library functions use a special calling conv
446-
setLibcallImplCallingConv(RTLIB::__divmodqi4, CallingConv::AVR_BUILTIN);
447-
setLibcallImplCallingConv(RTLIB::__divmodhi4, CallingConv::AVR_BUILTIN);
448-
setLibcallImplCallingConv(RTLIB::__udivmodqi4, CallingConv::AVR_BUILTIN);
449-
setLibcallImplCallingConv(RTLIB::__udivmodhi4, CallingConv::AVR_BUILTIN);
450-
}
451313

452314
if (!TT.isWasm()) {
453315
// These libcalls are only available in compiler-rt, not libgcc.
@@ -503,9 +365,6 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT,
503365
RTLIB::HEXAGON_MEMCPY_LIKELY_ALIGNED_MIN32BYTES_MULT8BYTES,
504366
RTLIB::__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes);
505367
}
506-
507-
if (TT.getArch() == Triple::ArchType::msp430)
508-
setMSP430Libcalls(*this, TT);
509368
}
510369

511370
bool RuntimeLibcallsInfo::darwinHasExp10(const Triple &TT) {

0 commit comments

Comments
 (0)