[llvm] 1392edc - ARM: Remove idiv runtime call aliases (#152098)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 5 01:49:25 PDT 2025
Author: Matt Arsenault
Date: 2025-08-05T17:49:22+09:00
New Revision: 1392edcc0784071fe1ab02782ac1dbc7ac6a0350
URL: https://github.com/llvm/llvm-project/commit/1392edcc0784071fe1ab02782ac1dbc7ac6a0350
DIFF: https://github.com/llvm/llvm-project/commit/1392edcc0784071fe1ab02782ac1dbc7ac6a0350.diff
LOG: ARM: Remove idiv runtime call aliases (#152098)
Really only the i32 variants exist. We don't need synthetic
aliases for illegal types which will be promoted.
Added:
Modified:
llvm/include/llvm/IR/RuntimeLibcalls.td
llvm/lib/IR/RuntimeLibcalls.cpp
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/div.ll
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.td b/llvm/include/llvm/IR/RuntimeLibcalls.td
index 384b7f29b9073..4905c8a420dcc 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.td
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.td
@@ -1399,13 +1399,9 @@ def __aeabi_lasr : RuntimeLibcallImpl<SRA_I64>; // CallingConv::ARM_AAPCS
// Integer division functions
// RTABI chapter 4.3.1
-def __aeabi_idiv__i8 : RuntimeLibcallImpl<SDIV_I8, "__aeabi_idiv">; // CallingConv::ARM_AAPCS
-def __aeabi_idiv__i16 : RuntimeLibcallImpl<SDIV_I16, "__aeabi_idiv">; // CallingConv::ARM_AAPCS
-def __aeabi_idiv__i32 : RuntimeLibcallImpl<SDIV_I32, "__aeabi_idiv">; // CallingConv::ARM_AAPCS
+def __aeabi_idiv : RuntimeLibcallImpl<SDIV_I32>; // CallingConv::ARM_AAPCS
def __aeabi_ldivmod : RuntimeLibcallImpl<SDIVREM_I64>; // CallingConv::ARM_AAPCS
-def __aeabi_uidiv__i8 : RuntimeLibcallImpl<UDIV_I8, "__aeabi_uidiv">; // CallingConv::ARM_AAPCS
-def __aeabi_uidiv__i16 : RuntimeLibcallImpl<UDIV_I16, "__aeabi_uidiv">; // CallingConv::ARM_AAPCS
-def __aeabi_uidiv__i32 : RuntimeLibcallImpl<UDIV_I32, "__aeabi_uidiv">; // CallingConv::ARM_AAPCS
+def __aeabi_uidiv : RuntimeLibcallImpl<UDIV_I32>; // CallingConv::ARM_AAPCS
def __aeabi_uldivmod : RuntimeLibcallImpl<UDIVREM_I64>; // CallingConv::ARM_AAPCS
def __aeabi_idivmod : RuntimeLibcallImpl<SDIVREM_I32>; // CallingConv::ARM_AAPCS
diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp
index b6e2cac5f7b04..a8e6c7938cf54 100644
--- a/llvm/lib/IR/RuntimeLibcalls.cpp
+++ b/llvm/lib/IR/RuntimeLibcalls.cpp
@@ -47,11 +47,9 @@ static void setARMLibcallNames(RuntimeLibcallsInfo &Info, const Triple &TT,
RTLIB::__aeabi_ui2f, RTLIB::__aeabi_l2f,
RTLIB::__aeabi_ul2f, RTLIB::__aeabi_lmul,
RTLIB::__aeabi_llsl, RTLIB::__aeabi_llsr,
- RTLIB::__aeabi_lasr, RTLIB::__aeabi_idiv__i8,
- RTLIB::__aeabi_idiv__i16, RTLIB::__aeabi_idiv__i32,
+ RTLIB::__aeabi_lasr, RTLIB::__aeabi_idiv,
RTLIB::__aeabi_idivmod, RTLIB::__aeabi_uidivmod,
- RTLIB::__aeabi_ldivmod, RTLIB::__aeabi_uidiv__i8,
- RTLIB::__aeabi_uidiv__i16, RTLIB::__aeabi_uidiv__i32,
+ RTLIB::__aeabi_ldivmod, RTLIB::__aeabi_uidiv,
RTLIB::__aeabi_uldivmod, RTLIB::__aeabi_f2h,
RTLIB::__aeabi_d2h, RTLIB::__aeabi_h2f,
RTLIB::__aeabi_memcpy, RTLIB::__aeabi_memmove,
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 936625606e315..7f8b4460bb814 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -669,13 +669,9 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
// Integer division functions
// RTABI chapter 4.3.1
- { RTLIB::SDIV_I8, RTLIB::__aeabi_idiv__i8 },
- { RTLIB::SDIV_I16, RTLIB::__aeabi_idiv__i16 },
- { RTLIB::SDIV_I32, RTLIB::__aeabi_idiv__i32},
+ { RTLIB::SDIV_I32, RTLIB::__aeabi_idiv },
{ RTLIB::SDIV_I64, RTLIB::__aeabi_ldivmod },
- { RTLIB::UDIV_I8, RTLIB::__aeabi_uidiv__i8 },
- { RTLIB::UDIV_I16, RTLIB::__aeabi_uidiv__i16 },
- { RTLIB::UDIV_I32, RTLIB::__aeabi_uidiv__i32 },
+ { RTLIB::UDIV_I32, RTLIB::__aeabi_uidiv },
{ RTLIB::UDIV_I64, RTLIB::__aeabi_uldivmod },
};
// clang-format on
diff --git a/llvm/test/CodeGen/ARM/div.ll b/llvm/test/CodeGen/ARM/div.ll
index 935aeaab8dc59..97cd9fd583ef8 100644
--- a/llvm/test/CodeGen/ARM/div.ll
+++ b/llvm/test/CodeGen/ARM/div.ll
@@ -145,3 +145,57 @@ define i64 @f8(i64 %a) {
%tmp1 = udiv i64 %a, 3
ret i64 %tmp1
}
+
+define i8 @sdiv_i8(i8 %a, i8 %b) {
+entry:
+; CHECK-LABEL: sdiv_i8
+; CHECK-SWDIV: __divsi3
+
+; CHECK-THUMB: .thumb_func
+; CHECK-HWDIV: sdiv
+
+; CHECK-EABI: __aeabi_idiv
+ %tmp1 = sdiv i8 %a, %b ; <i8> [#uses=1]
+ ret i8 %tmp1
+}
+
+
+define i16 @sdiv_i16(i16 %a, i16 %b) {
+entry:
+; CHECK-LABEL: sdiv_i16
+; CHECK-SWDIV: __divsi3
+
+; CHECK-THUMB: .thumb_func
+; CHECK-HWDIV: sdiv
+
+; CHECK-EABI: __aeabi_idiv
+ %tmp1 = sdiv i16 %a, %b ; <i16> [#uses=1]
+ ret i16 %tmp1
+}
+
+define i8 @udiv_i8(i8 %a, i8 %b) {
+entry:
+; CHECK-LABEL: udiv_i8
+; CHECK-SWDIV: __udivsi3
+
+; CHECK-THUMB: .thumb_func
+; CHECK-HWDIV: udiv
+
+; CHECK-EABI: __aeabi_uidiv
+ %tmp1 = udiv i8 %a, %b ; <i8> [#uses=1]
+ ret i8 %tmp1
+}
+
+
+define i16 @udiv_i16(i16 %a, i16 %b) {
+entry:
+; CHECK-LABEL: udiv_i16
+; CHECK-SWDIV: __udivsi3
+
+; CHECK-THUMB: .thumb_func
+; CHECK-HWDIV: udiv
+
+; CHECK-EABI: __aeabi_uidiv
+ %tmp1 = udiv i16 %a, %b ; <i16> [#uses=1]
+ ret i16 %tmp1
+}
More information about the llvm-commits
mailing list