Skip to content

ARM: Unconditionally set eabi libcall calling convs in RuntimeLibcalls #146083

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: users/arsenm/runtime-libcalls/remove-table-soft-float-compare-types
Choose a base branch
from

Conversation

arsenm
Copy link
Contributor

@arsenm arsenm commented Jun 27, 2025

This fully consolidates all the calling convention configuration into
RuntimeLibcallInfo. I'm assuming that __aeabi functions have a universal
calling convention, and on other ABIs just don't use them. This will
enable splitting of RuntimeLibcallInfo into the ABI and lowering component.

Copy link
Contributor Author

arsenm commented Jun 27, 2025

@llvmbot
Copy link
Member

llvmbot commented Jun 27, 2025

@llvm/pr-subscribers-backend-arm
@llvm/pr-subscribers-tablegen

@llvm/pr-subscribers-llvm-ir

Author: Matt Arsenault (arsenm)

Changes

This fully consolidates all the calling convention configuration into
RuntimeLibcallInfo. I'm assuming that __aeabi functions have a universal
calling convention, and on other ABIs just don't use them. This will
enable splitting of RuntimeLibcallInfo into the ABI and lowering component.


Full diff: https://github.com/llvm/llvm-project/pull/146083.diff

2 Files Affected:

  • (modified) llvm/lib/IR/RuntimeLibcalls.cpp (+39)
  • (modified) llvm/lib/Target/ARM/ARMISelLowering.cpp (+71-88)
diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp
index b08ee16791dfd..9f24e9d1fc4b1 100644
--- a/llvm/lib/IR/RuntimeLibcalls.cpp
+++ b/llvm/lib/IR/RuntimeLibcalls.cpp
@@ -98,6 +98,45 @@ static void setARMLibcallNames(RuntimeLibcallsInfo &Info, const Triple &TT,
     Info.setLibcallImpl(RTLIB::SDIVREM_I32, RTLIB::__divmodsi4);
     Info.setLibcallImpl(RTLIB::UDIVREM_I32, RTLIB::__udivmodsi4);
   }
+
+  static const RTLIB::LibcallImpl AAPCS_Libcalls[] = {
+      RTLIB::__aeabi_dadd,       RTLIB::__aeabi_ddiv,
+      RTLIB::__aeabi_dmul,       RTLIB::__aeabi_dsub,
+      RTLIB::__aeabi_dcmpeq__ne, RTLIB::__aeabi_dcmpeq__eq,
+      RTLIB::__aeabi_dcmplt,     RTLIB::__aeabi_dcmple,
+      RTLIB::__aeabi_dcmpge,     RTLIB::__aeabi_dcmpgt,
+      RTLIB::__aeabi_dcmpun,     RTLIB::__aeabi_fadd,
+      RTLIB::__aeabi_fdiv,       RTLIB::__aeabi_fmul,
+      RTLIB::__aeabi_fsub,       RTLIB::__aeabi_fcmpeq__ne,
+      RTLIB::__aeabi_fcmpeq__eq, RTLIB::__aeabi_fcmplt,
+      RTLIB::__aeabi_fcmple,     RTLIB::__aeabi_fcmpge,
+      RTLIB::__aeabi_fcmpgt,     RTLIB::__aeabi_fcmpun,
+      RTLIB::__aeabi_d2iz,       RTLIB::__aeabi_d2uiz,
+      RTLIB::__aeabi_d2lz,       RTLIB::__aeabi_d2ulz,
+      RTLIB::__aeabi_f2iz,       RTLIB::__aeabi_f2uiz,
+      RTLIB::__aeabi_f2lz,       RTLIB::__aeabi_f2ulz,
+      RTLIB::__aeabi_d2f,        RTLIB::__aeabi_d2h,
+      RTLIB::__aeabi_f2d,        RTLIB::__aeabi_i2d,
+      RTLIB::__aeabi_ui2d,       RTLIB::__aeabi_l2d,
+      RTLIB::__aeabi_ul2d,       RTLIB::__aeabi_i2f,
+      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_ldivmod,    RTLIB::__aeabi_uidiv__i8,
+      RTLIB::__aeabi_uidiv__i16, RTLIB::__aeabi_uidiv__i32,
+      RTLIB::__aeabi_uldivmod,   RTLIB::__aeabi_f2h,
+      RTLIB::__aeabi_d2h,        RTLIB::__aeabi_h2f,
+      RTLIB::__aeabi_memcpy,     RTLIB::__aeabi_memmove,
+      RTLIB::__aeabi_memset,     RTLIB::__aeabi_memcpy4,
+      RTLIB::__aeabi_memcpy8,    RTLIB::__aeabi_memmove4,
+      RTLIB::__aeabi_memmove8,   RTLIB::__aeabi_memset4,
+      RTLIB::__aeabi_memset8,    RTLIB::__aeabi_memclr,
+      RTLIB::__aeabi_memclr4,    RTLIB::__aeabi_memclr8};
+
+  for (RTLIB::LibcallImpl Impl : AAPCS_Libcalls)
+    Info.setLibcallImplCallingConv(Impl, CallingConv::ARM_AAPCS);
 }
 
 static void setLongDoubleIsF128Libm(RuntimeLibcallsInfo &Info,
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 78ef3c23e8423..2ece698df264b 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -578,9 +578,8 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
       };
       // clang-format on
 
-      for (const auto &LC : LibraryCalls) {
+      for (const auto &LC : LibraryCalls)
         setLibcallImpl(LC.Op, LC.Impl);
-      }
     }
   }
 
@@ -594,94 +593,91 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
     static const struct {
       const RTLIB::Libcall Op;
       const RTLIB::LibcallImpl Impl;
-      const CallingConv::ID CC;
     } LibraryCalls[] = {
       // Double-precision floating-point arithmetic helper functions
       // RTABI chapter 4.1.2, Table 2
-      { RTLIB::ADD_F64, RTLIB::__aeabi_dadd, CallingConv::ARM_AAPCS },
-      { RTLIB::DIV_F64, RTLIB::__aeabi_ddiv, CallingConv::ARM_AAPCS },
-      { RTLIB::MUL_F64, RTLIB::__aeabi_dmul, CallingConv::ARM_AAPCS },
-      { RTLIB::SUB_F64, RTLIB::__aeabi_dsub, CallingConv::ARM_AAPCS },
+      { RTLIB::ADD_F64, RTLIB::__aeabi_dadd },
+      { RTLIB::DIV_F64, RTLIB::__aeabi_ddiv },
+      { RTLIB::MUL_F64, RTLIB::__aeabi_dmul },
+      { RTLIB::SUB_F64, RTLIB::__aeabi_dsub },
 
       // Double-precision floating-point comparison helper functions
       // RTABI chapter 4.1.2, Table 3
-      { RTLIB::OEQ_F64, RTLIB::__aeabi_dcmpeq__ne, CallingConv::ARM_AAPCS },
-      { RTLIB::UNE_F64, RTLIB::__aeabi_dcmpeq__eq, CallingConv::ARM_AAPCS },
-      { RTLIB::OLT_F64, RTLIB::__aeabi_dcmplt, CallingConv::ARM_AAPCS },
-      { RTLIB::OLE_F64, RTLIB::__aeabi_dcmple, CallingConv::ARM_AAPCS },
-      { RTLIB::OGE_F64, RTLIB::__aeabi_dcmpge, CallingConv::ARM_AAPCS },
-      { RTLIB::OGT_F64, RTLIB::__aeabi_dcmpgt, CallingConv::ARM_AAPCS },
-      { RTLIB::UO_F64,  RTLIB::__aeabi_dcmpun, CallingConv::ARM_AAPCS },
+      { RTLIB::OEQ_F64, RTLIB::__aeabi_dcmpeq__ne },
+      { RTLIB::UNE_F64, RTLIB::__aeabi_dcmpeq__eq },
+      { RTLIB::OLT_F64, RTLIB::__aeabi_dcmplt },
+      { RTLIB::OLE_F64, RTLIB::__aeabi_dcmple },
+      { RTLIB::OGE_F64, RTLIB::__aeabi_dcmpge },
+      { RTLIB::OGT_F64, RTLIB::__aeabi_dcmpgt },
+      { RTLIB::UO_F64,  RTLIB::__aeabi_dcmpun },
 
       // Single-precision floating-point arithmetic helper functions
       // RTABI chapter 4.1.2, Table 4
-      { RTLIB::ADD_F32, RTLIB::__aeabi_fadd, CallingConv::ARM_AAPCS },
-      { RTLIB::DIV_F32, RTLIB::__aeabi_fdiv, CallingConv::ARM_AAPCS },
-      { RTLIB::MUL_F32, RTLIB::__aeabi_fmul, CallingConv::ARM_AAPCS },
-      { RTLIB::SUB_F32, RTLIB::__aeabi_fsub, CallingConv::ARM_AAPCS },
+      { RTLIB::ADD_F32, RTLIB::__aeabi_fadd },
+      { RTLIB::DIV_F32, RTLIB::__aeabi_fdiv },
+      { RTLIB::MUL_F32, RTLIB::__aeabi_fmul },
+      { RTLIB::SUB_F32, RTLIB::__aeabi_fsub },
 
       // Single-precision floating-point comparison helper functions
       // RTABI chapter 4.1.2, Table 5
-      { RTLIB::OEQ_F32, RTLIB::__aeabi_fcmpeq__ne, CallingConv::ARM_AAPCS },
-      { RTLIB::UNE_F32, RTLIB::__aeabi_fcmpeq__eq, CallingConv::ARM_AAPCS },
-      { RTLIB::OLT_F32, RTLIB::__aeabi_fcmplt, CallingConv::ARM_AAPCS},
-      { RTLIB::OLE_F32, RTLIB::__aeabi_fcmple, CallingConv::ARM_AAPCS },
-      { RTLIB::OGE_F32, RTLIB::__aeabi_fcmpge, CallingConv::ARM_AAPCS },
-      { RTLIB::OGT_F32, RTLIB::__aeabi_fcmpgt, CallingConv::ARM_AAPCS },
-      { RTLIB::UO_F32,  RTLIB::__aeabi_fcmpun, CallingConv::ARM_AAPCS },
+      { RTLIB::OEQ_F32, RTLIB::__aeabi_fcmpeq__ne },
+      { RTLIB::UNE_F32, RTLIB::__aeabi_fcmpeq__eq },
+      { RTLIB::OLT_F32, RTLIB::__aeabi_fcmplt},
+      { RTLIB::OLE_F32, RTLIB::__aeabi_fcmple },
+      { RTLIB::OGE_F32, RTLIB::__aeabi_fcmpge },
+      { RTLIB::OGT_F32, RTLIB::__aeabi_fcmpgt },
+      { RTLIB::UO_F32,  RTLIB::__aeabi_fcmpun },
 
       // Floating-point to integer conversions.
       // RTABI chapter 4.1.2, Table 6
-      { RTLIB::FPTOSINT_F64_I32, RTLIB::__aeabi_d2iz,  CallingConv::ARM_AAPCS },
-      { RTLIB::FPTOUINT_F64_I32, RTLIB::__aeabi_d2uiz, CallingConv::ARM_AAPCS },
-      { RTLIB::FPTOSINT_F64_I64, RTLIB::__aeabi_d2lz,  CallingConv::ARM_AAPCS },
-      { RTLIB::FPTOUINT_F64_I64, RTLIB::__aeabi_d2ulz, CallingConv::ARM_AAPCS },
-      { RTLIB::FPTOSINT_F32_I32, RTLIB::__aeabi_f2iz,  CallingConv::ARM_AAPCS },
-      { RTLIB::FPTOUINT_F32_I32, RTLIB::__aeabi_f2uiz, CallingConv::ARM_AAPCS },
-      { RTLIB::FPTOSINT_F32_I64, RTLIB::__aeabi_f2lz,  CallingConv::ARM_AAPCS },
-      { RTLIB::FPTOUINT_F32_I64, RTLIB::__aeabi_f2ulz, CallingConv::ARM_AAPCS },
+      { RTLIB::FPTOSINT_F64_I32, RTLIB::__aeabi_d2iz },
+      { RTLIB::FPTOUINT_F64_I32, RTLIB::__aeabi_d2uiz },
+      { RTLIB::FPTOSINT_F64_I64, RTLIB::__aeabi_d2lz },
+      { RTLIB::FPTOUINT_F64_I64, RTLIB::__aeabi_d2ulz },
+      { RTLIB::FPTOSINT_F32_I32, RTLIB::__aeabi_f2iz },
+      { RTLIB::FPTOUINT_F32_I32, RTLIB::__aeabi_f2uiz },
+      { RTLIB::FPTOSINT_F32_I64, RTLIB::__aeabi_f2lz },
+      { RTLIB::FPTOUINT_F32_I64, RTLIB::__aeabi_f2ulz },
 
       // Conversions between floating types.
       // RTABI chapter 4.1.2, Table 7
-      { RTLIB::FPROUND_F64_F32, RTLIB::__aeabi_d2f, CallingConv::ARM_AAPCS },
-      { RTLIB::FPROUND_F64_F16, RTLIB::__aeabi_d2h, CallingConv::ARM_AAPCS },
-      { RTLIB::FPEXT_F32_F64,   RTLIB::__aeabi_f2d, CallingConv::ARM_AAPCS },
+      { RTLIB::FPROUND_F64_F32, RTLIB::__aeabi_d2f },
+      { RTLIB::FPROUND_F64_F16, RTLIB::__aeabi_d2h },
+      { RTLIB::FPEXT_F32_F64,   RTLIB::__aeabi_f2d },
 
       // Integer to floating-point conversions.
       // RTABI chapter 4.1.2, Table 8
-      { RTLIB::SINTTOFP_I32_F64, RTLIB::__aeabi_i2d,  CallingConv::ARM_AAPCS },
-      { RTLIB::UINTTOFP_I32_F64, RTLIB::__aeabi_ui2d, CallingConv::ARM_AAPCS },
-      { RTLIB::SINTTOFP_I64_F64, RTLIB::__aeabi_l2d,  CallingConv::ARM_AAPCS },
-      { RTLIB::UINTTOFP_I64_F64, RTLIB::__aeabi_ul2d, CallingConv::ARM_AAPCS },
-      { RTLIB::SINTTOFP_I32_F32, RTLIB::__aeabi_i2f,  CallingConv::ARM_AAPCS },
-      { RTLIB::UINTTOFP_I32_F32, RTLIB::__aeabi_ui2f, CallingConv::ARM_AAPCS },
-      { RTLIB::SINTTOFP_I64_F32, RTLIB::__aeabi_l2f,  CallingConv::ARM_AAPCS },
-      { RTLIB::UINTTOFP_I64_F32, RTLIB::__aeabi_ul2f, CallingConv::ARM_AAPCS },
+      { RTLIB::SINTTOFP_I32_F64, RTLIB::__aeabi_i2d },
+      { RTLIB::UINTTOFP_I32_F64, RTLIB::__aeabi_ui2d },
+      { RTLIB::SINTTOFP_I64_F64, RTLIB::__aeabi_l2d },
+      { RTLIB::UINTTOFP_I64_F64, RTLIB::__aeabi_ul2d },
+      { RTLIB::SINTTOFP_I32_F32, RTLIB::__aeabi_i2f },
+      { RTLIB::UINTTOFP_I32_F32, RTLIB::__aeabi_ui2f },
+      { RTLIB::SINTTOFP_I64_F32, RTLIB::__aeabi_l2f },
+      { RTLIB::UINTTOFP_I64_F32, RTLIB::__aeabi_ul2f },
 
       // Long long helper functions
       // RTABI chapter 4.2, Table 9
-      { RTLIB::MUL_I64, RTLIB::__aeabi_lmul, CallingConv::ARM_AAPCS },
-      { RTLIB::SHL_I64, RTLIB::__aeabi_llsl, CallingConv::ARM_AAPCS },
-      { RTLIB::SRL_I64, RTLIB::__aeabi_llsr, CallingConv::ARM_AAPCS },
-      { RTLIB::SRA_I64, RTLIB::__aeabi_lasr, CallingConv::ARM_AAPCS },
+      { RTLIB::MUL_I64, RTLIB::__aeabi_lmul },
+      { RTLIB::SHL_I64, RTLIB::__aeabi_llsl },
+      { RTLIB::SRL_I64, RTLIB::__aeabi_llsr },
+      { RTLIB::SRA_I64, RTLIB::__aeabi_lasr },
 
       // Integer division functions
       // RTABI chapter 4.3.1
-      { RTLIB::SDIV_I8,  RTLIB::__aeabi_idiv__i8,   CallingConv::ARM_AAPCS },
-      { RTLIB::SDIV_I16, RTLIB::__aeabi_idiv__i16,  CallingConv::ARM_AAPCS },
-      { RTLIB::SDIV_I32, RTLIB::__aeabi_idiv__i32,  CallingConv::ARM_AAPCS },
-      { RTLIB::SDIV_I64, RTLIB::__aeabi_ldivmod,    CallingConv::ARM_AAPCS },
-      { RTLIB::UDIV_I8,  RTLIB::__aeabi_uidiv__i8,  CallingConv::ARM_AAPCS },
-      { RTLIB::UDIV_I16, RTLIB::__aeabi_uidiv__i16, CallingConv::ARM_AAPCS },
-      { RTLIB::UDIV_I32, RTLIB::__aeabi_uidiv__i32, CallingConv::ARM_AAPCS },
-      { RTLIB::UDIV_I64, RTLIB::__aeabi_uldivmod,   CallingConv::ARM_AAPCS },
+      { RTLIB::SDIV_I8,  RTLIB::__aeabi_idiv__i8 },
+      { RTLIB::SDIV_I16, RTLIB::__aeabi_idiv__i16 },
+      { RTLIB::SDIV_I32, RTLIB::__aeabi_idiv__i32},
+      { 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_I64, RTLIB::__aeabi_uldivmod },
     };
     // clang-format on
 
-    for (const auto &LC : LibraryCalls) {
+    for (const auto &LC : LibraryCalls)
       setLibcallImpl(LC.Op, LC.Impl);
-      setLibcallImplCallingConv(LC.Impl, LC.CC);
-    }
 
     // EABI dependent RTLIB
     if (TM.Options.EABIVersion == EABI::EABI4 ||
@@ -689,36 +685,25 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
       static const struct {
         const RTLIB::Libcall Op;
         const RTLIB::LibcallImpl Impl;
-        const CallingConv::ID CC;
       } MemOpsLibraryCalls[] = {
           // Memory operations
           // RTABI chapter 4.3.4
-          {RTLIB::MEMCPY, RTLIB::__aeabi_memcpy, CallingConv::ARM_AAPCS},
-          {RTLIB::MEMMOVE, RTLIB::__aeabi_memmove, CallingConv::ARM_AAPCS},
-          {RTLIB::MEMSET, RTLIB::__aeabi_memset, CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMCPY4, RTLIB::__aeabi_memcpy4,
-           CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMCPY8, RTLIB::__aeabi_memcpy8,
-           CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMMOVE4, RTLIB::__aeabi_memmove4,
-           CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMMOVE8, RTLIB::__aeabi_memmove8,
-           CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMSET4, RTLIB::__aeabi_memset4,
-           CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMSET8, RTLIB::__aeabi_memset8,
-           CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMCLR, RTLIB::__aeabi_memclr, CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMCLR4, RTLIB::__aeabi_memclr4,
-           CallingConv::ARM_AAPCS},
-          {RTLIB::AEABI_MEMCLR8, RTLIB::__aeabi_memclr8,
-           CallingConv::ARM_AAPCS},
+          {RTLIB::MEMCPY, RTLIB::__aeabi_memcpy},
+          {RTLIB::MEMMOVE, RTLIB::__aeabi_memmove},
+          {RTLIB::MEMSET, RTLIB::__aeabi_memset},
+          {RTLIB::AEABI_MEMCPY4, RTLIB::__aeabi_memcpy4},
+          {RTLIB::AEABI_MEMCPY8, RTLIB::__aeabi_memcpy8},
+          {RTLIB::AEABI_MEMMOVE4, RTLIB::__aeabi_memmove4},
+          {RTLIB::AEABI_MEMMOVE8, RTLIB::__aeabi_memmove8},
+          {RTLIB::AEABI_MEMSET4, RTLIB::__aeabi_memset4},
+          {RTLIB::AEABI_MEMSET8, RTLIB::__aeabi_memset8},
+          {RTLIB::AEABI_MEMCLR, RTLIB::__aeabi_memclr},
+          {RTLIB::AEABI_MEMCLR4, RTLIB::__aeabi_memclr4},
+          {RTLIB::AEABI_MEMCLR8, RTLIB::__aeabi_memclr8},
       };
 
-      for (const auto &LC : MemOpsLibraryCalls) {
+      for (const auto &LC : MemOpsLibraryCalls)
         setLibcallImpl(LC.Op, LC.Impl);
-        setLibcallImplCallingConv(LC.Impl, LC.CC);
-      }
     }
   }
 
@@ -746,16 +731,14 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
     static const struct {
       const RTLIB::Libcall Op;
       const RTLIB::LibcallImpl Impl;
-      const CallingConv::ID CC;
     } LibraryCalls[] = {
-        {RTLIB::FPROUND_F32_F16, RTLIB::__aeabi_f2h, CallingConv::ARM_AAPCS},
-        {RTLIB::FPROUND_F64_F16, RTLIB::__aeabi_d2h, CallingConv::ARM_AAPCS},
-        {RTLIB::FPEXT_F16_F32, RTLIB::__aeabi_h2f, CallingConv::ARM_AAPCS},
+        {RTLIB::FPROUND_F32_F16, RTLIB::__aeabi_f2h},
+        {RTLIB::FPROUND_F64_F16, RTLIB::__aeabi_d2h},
+        {RTLIB::FPEXT_F16_F32, RTLIB::__aeabi_h2f},
     };
 
     for (const auto &LC : LibraryCalls) {
       setLibcallImpl(LC.Op, LC.Impl);
-      setLibcallImplCallingConv(LC.Impl, LC.CC);
     }
   } else if (!TT.isOSBinFormatMachO()) {
     setLibcallImpl(RTLIB::FPROUND_F32_F16, RTLIB::__gnu_f2h_ieee);

@arsenm arsenm requested a review from topperc June 27, 2025 14:28
@arsenm arsenm marked this pull request as ready for review June 27, 2025 14:36
Copy link
Collaborator

@efriedma-quic efriedma-quic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, these functions are always AAPCS. LGTM with one minor comment.

RTLIB::__aeabi_memcpy8, RTLIB::__aeabi_memmove4,
RTLIB::__aeabi_memmove8, RTLIB::__aeabi_memset4,
RTLIB::__aeabi_memset8, RTLIB::__aeabi_memclr,
RTLIB::__aeabi_memclr4, RTLIB::__aeabi_memclr8};
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you also mean to move the code setting the calling convention for __aeabi_idivmod?

This fully consolidates all the calling convention configuration into
RuntimeLibcallInfo. I'm assuming that __aeabi functions have a universal
calling convention, and on other ABIs just don't use them. This will
enable splitting of RuntimeLibcallInfo into the ABI and lowering component.
@arsenm arsenm force-pushed the users/arsenm/runtime-libcalls/remove-table-soft-float-compare-types branch from a26bf5a to c76b2c4 Compare June 28, 2025 02:35
@arsenm arsenm force-pushed the users/arsenm/arm/set-eabi-libcall-calling-convs-in-runtime-libcalls branch from 77239be to 91dd754 Compare June 28, 2025 02:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants