[llvm] AVR: Move runtime libcall name setting out of TargetLowering (PR #142545)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 3 07:56:25 PDT 2025
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/142545
>From 7d6666fac68bf804502f6286ad4e2d2d1a03a68a Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Mon, 2 Jun 2025 19:11:05 +0200
Subject: [PATCH] AVR: Move runtime libcall name setting out of TargetLowering
RuntimeLibcallInfo needs to be accurate outside of codegen
contexts.
---
llvm/lib/IR/RuntimeLibcalls.cpp | 18 ++++++++++++++++++
llvm/lib/Target/AVR/AVRISelLowering.cpp | 18 ------------------
2 files changed, 18 insertions(+), 18 deletions(-)
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);
}
More information about the llvm-commits
mailing list