diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp index db0373055160c..f73689ec43ff2 100644 --- a/llvm/lib/IR/RuntimeLibcalls.cpp +++ b/llvm/lib/IR/RuntimeLibcalls.cpp @@ -265,6 +265,24 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT) { setLibcallName(RTLIB::UREM_I8, nullptr); setLibcallName(RTLIB::UREM_I16, nullptr); setLibcallName(RTLIB::UREM_I32, nullptr); + + // Division and modulus rtlib functions + setLibcallName(RTLIB::SDIVREM_I8, "__divmodqi4"); + setLibcallName(RTLIB::SDIVREM_I16, "__divmodhi4"); + setLibcallName(RTLIB::SDIVREM_I32, "__divmodsi4"); + setLibcallName(RTLIB::UDIVREM_I8, "__udivmodqi4"); + setLibcallName(RTLIB::UDIVREM_I16, "__udivmodhi4"); + setLibcallName(RTLIB::UDIVREM_I32, "__udivmodsi4"); + + // Several of the runtime library functions use a special calling conv + setLibcallCallingConv(RTLIB::SDIVREM_I8, CallingConv::AVR_BUILTIN); + setLibcallCallingConv(RTLIB::SDIVREM_I16, CallingConv::AVR_BUILTIN); + setLibcallCallingConv(RTLIB::UDIVREM_I8, CallingConv::AVR_BUILTIN); + setLibcallCallingConv(RTLIB::UDIVREM_I16, CallingConv::AVR_BUILTIN); + + // Trigonometric rtlib functions + setLibcallName(RTLIB::SIN_F32, "sin"); + setLibcallName(RTLIB::COS_F32, "cos"); } if (!TT.isWasm()) { diff --git a/llvm/lib/Target/AVR/AVRISelLowering.cpp b/llvm/lib/Target/AVR/AVRISelLowering.cpp index eca682895e24f..9747ad0c5cd58 100644 --- a/llvm/lib/Target/AVR/AVRISelLowering.cpp +++ b/llvm/lib/Target/AVR/AVRISelLowering.cpp @@ -198,24 +198,6 @@ AVRTargetLowering::AVRTargetLowering(const AVRTargetMachine &TM, // improvements in how we treat 16-bit "registers" to be feasible. } - // Division and modulus rtlib functions - setLibcallName(RTLIB::SDIVREM_I8, "__divmodqi4"); - setLibcallName(RTLIB::SDIVREM_I16, "__divmodhi4"); - setLibcallName(RTLIB::SDIVREM_I32, "__divmodsi4"); - setLibcallName(RTLIB::UDIVREM_I8, "__udivmodqi4"); - setLibcallName(RTLIB::UDIVREM_I16, "__udivmodhi4"); - setLibcallName(RTLIB::UDIVREM_I32, "__udivmodsi4"); - - // Several of the runtime library functions use a special calling conv - setLibcallCallingConv(RTLIB::SDIVREM_I8, CallingConv::AVR_BUILTIN); - setLibcallCallingConv(RTLIB::SDIVREM_I16, CallingConv::AVR_BUILTIN); - setLibcallCallingConv(RTLIB::UDIVREM_I8, CallingConv::AVR_BUILTIN); - setLibcallCallingConv(RTLIB::UDIVREM_I16, CallingConv::AVR_BUILTIN); - - // Trigonometric rtlib functions - setLibcallName(RTLIB::SIN_F32, "sin"); - setLibcallName(RTLIB::COS_F32, "cos"); - setMinFunctionAlignment(Align(2)); setMinimumJumpTableEntries(UINT_MAX); }