Skip to content

Commit cfc42b7

Browse files
arsenmrorth
authored andcommitted
AVR: Move runtime libcall name setting out of TargetLowering (llvm#142545)
RuntimeLibcallInfo needs to be accurate outside of codegen contexts.
1 parent 6f1275a commit cfc42b7

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

llvm/lib/IR/RuntimeLibcalls.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,24 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT) {
265265
setLibcallName(RTLIB::UREM_I8, nullptr);
266266
setLibcallName(RTLIB::UREM_I16, nullptr);
267267
setLibcallName(RTLIB::UREM_I32, nullptr);
268+
269+
// Division and modulus rtlib functions
270+
setLibcallName(RTLIB::SDIVREM_I8, "__divmodqi4");
271+
setLibcallName(RTLIB::SDIVREM_I16, "__divmodhi4");
272+
setLibcallName(RTLIB::SDIVREM_I32, "__divmodsi4");
273+
setLibcallName(RTLIB::UDIVREM_I8, "__udivmodqi4");
274+
setLibcallName(RTLIB::UDIVREM_I16, "__udivmodhi4");
275+
setLibcallName(RTLIB::UDIVREM_I32, "__udivmodsi4");
276+
277+
// Several of the runtime library functions use a special calling conv
278+
setLibcallCallingConv(RTLIB::SDIVREM_I8, CallingConv::AVR_BUILTIN);
279+
setLibcallCallingConv(RTLIB::SDIVREM_I16, CallingConv::AVR_BUILTIN);
280+
setLibcallCallingConv(RTLIB::UDIVREM_I8, CallingConv::AVR_BUILTIN);
281+
setLibcallCallingConv(RTLIB::UDIVREM_I16, CallingConv::AVR_BUILTIN);
282+
283+
// Trigonometric rtlib functions
284+
setLibcallName(RTLIB::SIN_F32, "sin");
285+
setLibcallName(RTLIB::COS_F32, "cos");
268286
}
269287

270288
if (!TT.isWasm()) {

llvm/lib/Target/AVR/AVRISelLowering.cpp

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -198,24 +198,6 @@ AVRTargetLowering::AVRTargetLowering(const AVRTargetMachine &TM,
198198
// improvements in how we treat 16-bit "registers" to be feasible.
199199
}
200200

201-
// Division and modulus rtlib functions
202-
setLibcallName(RTLIB::SDIVREM_I8, "__divmodqi4");
203-
setLibcallName(RTLIB::SDIVREM_I16, "__divmodhi4");
204-
setLibcallName(RTLIB::SDIVREM_I32, "__divmodsi4");
205-
setLibcallName(RTLIB::UDIVREM_I8, "__udivmodqi4");
206-
setLibcallName(RTLIB::UDIVREM_I16, "__udivmodhi4");
207-
setLibcallName(RTLIB::UDIVREM_I32, "__udivmodsi4");
208-
209-
// Several of the runtime library functions use a special calling conv
210-
setLibcallCallingConv(RTLIB::SDIVREM_I8, CallingConv::AVR_BUILTIN);
211-
setLibcallCallingConv(RTLIB::SDIVREM_I16, CallingConv::AVR_BUILTIN);
212-
setLibcallCallingConv(RTLIB::UDIVREM_I8, CallingConv::AVR_BUILTIN);
213-
setLibcallCallingConv(RTLIB::UDIVREM_I16, CallingConv::AVR_BUILTIN);
214-
215-
// Trigonometric rtlib functions
216-
setLibcallName(RTLIB::SIN_F32, "sin");
217-
setLibcallName(RTLIB::COS_F32, "cos");
218-
219201
setMinFunctionAlignment(Align(2));
220202
setMinimumJumpTableEntries(UINT_MAX);
221203
}

0 commit comments

Comments
 (0)