@@ -578,9 +578,8 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
578578 };
579579 // clang-format on
580580
581- for (const auto &LC : LibraryCalls) {
581+ for (const auto &LC : LibraryCalls)
582582 setLibcallImpl(LC.Op, LC.Impl);
583- }
584583 }
585584 }
586585
@@ -594,131 +593,117 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
594593 static const struct {
595594 const RTLIB::Libcall Op;
596595 const RTLIB::LibcallImpl Impl;
597- const CallingConv::ID CC;
598596 } LibraryCalls[] = {
599597 // Double-precision floating-point arithmetic helper functions
600598 // RTABI chapter 4.1.2, Table 2
601- { RTLIB::ADD_F64, RTLIB::__aeabi_dadd, CallingConv::ARM_AAPCS },
602- { RTLIB::DIV_F64, RTLIB::__aeabi_ddiv, CallingConv::ARM_AAPCS },
603- { RTLIB::MUL_F64, RTLIB::__aeabi_dmul, CallingConv::ARM_AAPCS },
604- { RTLIB::SUB_F64, RTLIB::__aeabi_dsub, CallingConv::ARM_AAPCS },
599+ { RTLIB::ADD_F64, RTLIB::__aeabi_dadd },
600+ { RTLIB::DIV_F64, RTLIB::__aeabi_ddiv },
601+ { RTLIB::MUL_F64, RTLIB::__aeabi_dmul },
602+ { RTLIB::SUB_F64, RTLIB::__aeabi_dsub },
605603
606604 // Double-precision floating-point comparison helper functions
607605 // RTABI chapter 4.1.2, Table 3
608- { RTLIB::OEQ_F64, RTLIB::__aeabi_dcmpeq__oeq, CallingConv::ARM_AAPCS },
609- { RTLIB::UNE_F64, RTLIB::__aeabi_dcmpeq__une, CallingConv::ARM_AAPCS },
610- { RTLIB::OLT_F64, RTLIB::__aeabi_dcmplt, CallingConv::ARM_AAPCS },
611- { RTLIB::OLE_F64, RTLIB::__aeabi_dcmple, CallingConv::ARM_AAPCS },
612- { RTLIB::OGE_F64, RTLIB::__aeabi_dcmpge, CallingConv::ARM_AAPCS },
613- { RTLIB::OGT_F64, RTLIB::__aeabi_dcmpgt, CallingConv::ARM_AAPCS },
614- { RTLIB::UO_F64, RTLIB::__aeabi_dcmpun, CallingConv::ARM_AAPCS },
606+ { RTLIB::OEQ_F64, RTLIB::__aeabi_dcmpeq__oeq },
607+ { RTLIB::UNE_F64, RTLIB::__aeabi_dcmpeq__une },
608+ { RTLIB::OLT_F64, RTLIB::__aeabi_dcmplt },
609+ { RTLIB::OLE_F64, RTLIB::__aeabi_dcmple },
610+ { RTLIB::OGE_F64, RTLIB::__aeabi_dcmpge },
611+ { RTLIB::OGT_F64, RTLIB::__aeabi_dcmpgt },
612+ { RTLIB::UO_F64, RTLIB::__aeabi_dcmpun },
615613
616614 // Single-precision floating-point arithmetic helper functions
617615 // RTABI chapter 4.1.2, Table 4
618- { RTLIB::ADD_F32, RTLIB::__aeabi_fadd, CallingConv::ARM_AAPCS },
619- { RTLIB::DIV_F32, RTLIB::__aeabi_fdiv, CallingConv::ARM_AAPCS },
620- { RTLIB::MUL_F32, RTLIB::__aeabi_fmul, CallingConv::ARM_AAPCS },
621- { RTLIB::SUB_F32, RTLIB::__aeabi_fsub, CallingConv::ARM_AAPCS },
616+ { RTLIB::ADD_F32, RTLIB::__aeabi_fadd },
617+ { RTLIB::DIV_F32, RTLIB::__aeabi_fdiv },
618+ { RTLIB::MUL_F32, RTLIB::__aeabi_fmul },
619+ { RTLIB::SUB_F32, RTLIB::__aeabi_fsub },
622620
623621 // Single-precision floating-point comparison helper functions
624622 // RTABI chapter 4.1.2, Table 5
625- { RTLIB::OEQ_F32, RTLIB::__aeabi_fcmpeq__oeq, CallingConv::ARM_AAPCS },
626- { RTLIB::UNE_F32, RTLIB::__aeabi_fcmpeq__une, CallingConv::ARM_AAPCS },
627- { RTLIB::OLT_F32, RTLIB::__aeabi_fcmplt, CallingConv::ARM_AAPCS },
628- { RTLIB::OLE_F32, RTLIB::__aeabi_fcmple, CallingConv::ARM_AAPCS },
629- { RTLIB::OGE_F32, RTLIB::__aeabi_fcmpge, CallingConv::ARM_AAPCS },
630- { RTLIB::OGT_F32, RTLIB::__aeabi_fcmpgt, CallingConv::ARM_AAPCS },
631- { RTLIB::UO_F32, RTLIB::__aeabi_fcmpun, CallingConv::ARM_AAPCS },
623+ { RTLIB::OEQ_F32, RTLIB::__aeabi_fcmpeq__oeq },
624+ { RTLIB::UNE_F32, RTLIB::__aeabi_fcmpeq__une },
625+ { RTLIB::OLT_F32, RTLIB::__aeabi_fcmplt},
626+ { RTLIB::OLE_F32, RTLIB::__aeabi_fcmple },
627+ { RTLIB::OGE_F32, RTLIB::__aeabi_fcmpge },
628+ { RTLIB::OGT_F32, RTLIB::__aeabi_fcmpgt },
629+ { RTLIB::UO_F32, RTLIB::__aeabi_fcmpun },
632630
633631 // Floating-point to integer conversions.
634632 // RTABI chapter 4.1.2, Table 6
635- { RTLIB::FPTOSINT_F64_I32, RTLIB::__aeabi_d2iz, CallingConv::ARM_AAPCS },
636- { RTLIB::FPTOUINT_F64_I32, RTLIB::__aeabi_d2uiz, CallingConv::ARM_AAPCS },
637- { RTLIB::FPTOSINT_F64_I64, RTLIB::__aeabi_d2lz, CallingConv::ARM_AAPCS },
638- { RTLIB::FPTOUINT_F64_I64, RTLIB::__aeabi_d2ulz, CallingConv::ARM_AAPCS },
639- { RTLIB::FPTOSINT_F32_I32, RTLIB::__aeabi_f2iz, CallingConv::ARM_AAPCS },
640- { RTLIB::FPTOUINT_F32_I32, RTLIB::__aeabi_f2uiz, CallingConv::ARM_AAPCS },
641- { RTLIB::FPTOSINT_F32_I64, RTLIB::__aeabi_f2lz, CallingConv::ARM_AAPCS },
642- { RTLIB::FPTOUINT_F32_I64, RTLIB::__aeabi_f2ulz, CallingConv::ARM_AAPCS },
633+ { RTLIB::FPTOSINT_F64_I32, RTLIB::__aeabi_d2iz },
634+ { RTLIB::FPTOUINT_F64_I32, RTLIB::__aeabi_d2uiz },
635+ { RTLIB::FPTOSINT_F64_I64, RTLIB::__aeabi_d2lz },
636+ { RTLIB::FPTOUINT_F64_I64, RTLIB::__aeabi_d2ulz },
637+ { RTLIB::FPTOSINT_F32_I32, RTLIB::__aeabi_f2iz },
638+ { RTLIB::FPTOUINT_F32_I32, RTLIB::__aeabi_f2uiz },
639+ { RTLIB::FPTOSINT_F32_I64, RTLIB::__aeabi_f2lz },
640+ { RTLIB::FPTOUINT_F32_I64, RTLIB::__aeabi_f2ulz },
643641
644642 // Conversions between floating types.
645643 // RTABI chapter 4.1.2, Table 7
646- { RTLIB::FPROUND_F64_F32, RTLIB::__aeabi_d2f, CallingConv::ARM_AAPCS },
647- { RTLIB::FPROUND_F64_F16, RTLIB::__aeabi_d2h, CallingConv::ARM_AAPCS },
648- { RTLIB::FPEXT_F32_F64, RTLIB::__aeabi_f2d, CallingConv::ARM_AAPCS },
644+ { RTLIB::FPROUND_F64_F32, RTLIB::__aeabi_d2f },
645+ { RTLIB::FPROUND_F64_F16, RTLIB::__aeabi_d2h },
646+ { RTLIB::FPEXT_F32_F64, RTLIB::__aeabi_f2d },
649647
650648 // Integer to floating-point conversions.
651649 // RTABI chapter 4.1.2, Table 8
652- { RTLIB::SINTTOFP_I32_F64, RTLIB::__aeabi_i2d, CallingConv::ARM_AAPCS },
653- { RTLIB::UINTTOFP_I32_F64, RTLIB::__aeabi_ui2d, CallingConv::ARM_AAPCS },
654- { RTLIB::SINTTOFP_I64_F64, RTLIB::__aeabi_l2d, CallingConv::ARM_AAPCS },
655- { RTLIB::UINTTOFP_I64_F64, RTLIB::__aeabi_ul2d, CallingConv::ARM_AAPCS },
656- { RTLIB::SINTTOFP_I32_F32, RTLIB::__aeabi_i2f, CallingConv::ARM_AAPCS },
657- { RTLIB::UINTTOFP_I32_F32, RTLIB::__aeabi_ui2f, CallingConv::ARM_AAPCS },
658- { RTLIB::SINTTOFP_I64_F32, RTLIB::__aeabi_l2f, CallingConv::ARM_AAPCS },
659- { RTLIB::UINTTOFP_I64_F32, RTLIB::__aeabi_ul2f, CallingConv::ARM_AAPCS },
650+ { RTLIB::SINTTOFP_I32_F64, RTLIB::__aeabi_i2d },
651+ { RTLIB::UINTTOFP_I32_F64, RTLIB::__aeabi_ui2d },
652+ { RTLIB::SINTTOFP_I64_F64, RTLIB::__aeabi_l2d },
653+ { RTLIB::UINTTOFP_I64_F64, RTLIB::__aeabi_ul2d },
654+ { RTLIB::SINTTOFP_I32_F32, RTLIB::__aeabi_i2f },
655+ { RTLIB::UINTTOFP_I32_F32, RTLIB::__aeabi_ui2f },
656+ { RTLIB::SINTTOFP_I64_F32, RTLIB::__aeabi_l2f },
657+ { RTLIB::UINTTOFP_I64_F32, RTLIB::__aeabi_ul2f },
660658
661659 // Long long helper functions
662660 // RTABI chapter 4.2, Table 9
663- { RTLIB::MUL_I64, RTLIB::__aeabi_lmul, CallingConv::ARM_AAPCS },
664- { RTLIB::SHL_I64, RTLIB::__aeabi_llsl, CallingConv::ARM_AAPCS },
665- { RTLIB::SRL_I64, RTLIB::__aeabi_llsr, CallingConv::ARM_AAPCS },
666- { RTLIB::SRA_I64, RTLIB::__aeabi_lasr, CallingConv::ARM_AAPCS },
661+ { RTLIB::MUL_I64, RTLIB::__aeabi_lmul },
662+ { RTLIB::SHL_I64, RTLIB::__aeabi_llsl },
663+ { RTLIB::SRL_I64, RTLIB::__aeabi_llsr },
664+ { RTLIB::SRA_I64, RTLIB::__aeabi_lasr },
667665
668666 // Integer division functions
669667 // RTABI chapter 4.3.1
670- { RTLIB::SDIV_I8, RTLIB::__aeabi_idiv__i8, CallingConv::ARM_AAPCS },
671- { RTLIB::SDIV_I16, RTLIB::__aeabi_idiv__i16, CallingConv::ARM_AAPCS },
672- { RTLIB::SDIV_I32, RTLIB::__aeabi_idiv__i32, CallingConv::ARM_AAPCS },
673- { RTLIB::SDIV_I64, RTLIB::__aeabi_ldivmod, CallingConv::ARM_AAPCS },
674- { RTLIB::UDIV_I8, RTLIB::__aeabi_uidiv__i8, CallingConv::ARM_AAPCS },
675- { RTLIB::UDIV_I16, RTLIB::__aeabi_uidiv__i16, CallingConv::ARM_AAPCS },
676- { RTLIB::UDIV_I32, RTLIB::__aeabi_uidiv__i32, CallingConv::ARM_AAPCS },
677- { RTLIB::UDIV_I64, RTLIB::__aeabi_uldivmod, CallingConv::ARM_AAPCS },
668+ { RTLIB::SDIV_I8, RTLIB::__aeabi_idiv__i8 },
669+ { RTLIB::SDIV_I16, RTLIB::__aeabi_idiv__i16 },
670+ { RTLIB::SDIV_I32, RTLIB::__aeabi_idiv__i32},
671+ { RTLIB::SDIV_I64, RTLIB::__aeabi_ldivmod },
672+ { RTLIB::UDIV_I8, RTLIB::__aeabi_uidiv__i8 },
673+ { RTLIB::UDIV_I16, RTLIB::__aeabi_uidiv__i16 },
674+ { RTLIB::UDIV_I32, RTLIB::__aeabi_uidiv__i32 },
675+ { RTLIB::UDIV_I64, RTLIB::__aeabi_uldivmod },
678676 };
679677 // clang-format on
680678
681- for (const auto &LC : LibraryCalls) {
679+ for (const auto &LC : LibraryCalls)
682680 setLibcallImpl(LC.Op, LC.Impl);
683- setLibcallImplCallingConv(LC.Impl, LC.CC);
684- }
685681
686682 // EABI dependent RTLIB
687683 if (TM.Options.EABIVersion == EABI::EABI4 ||
688684 TM.Options.EABIVersion == EABI::EABI5) {
689685 static const struct {
690686 const RTLIB::Libcall Op;
691687 const RTLIB::LibcallImpl Impl;
692- const CallingConv::ID CC;
693688 } MemOpsLibraryCalls[] = {
694689 // Memory operations
695690 // RTABI chapter 4.3.4
696- {RTLIB::MEMCPY, RTLIB::__aeabi_memcpy, CallingConv::ARM_AAPCS},
697- {RTLIB::MEMMOVE, RTLIB::__aeabi_memmove, CallingConv::ARM_AAPCS},
698- {RTLIB::MEMSET, RTLIB::__aeabi_memset, CallingConv::ARM_AAPCS},
699- {RTLIB::AEABI_MEMCPY4, RTLIB::__aeabi_memcpy4,
700- CallingConv::ARM_AAPCS},
701- {RTLIB::AEABI_MEMCPY8, RTLIB::__aeabi_memcpy8,
702- CallingConv::ARM_AAPCS},
703- {RTLIB::AEABI_MEMMOVE4, RTLIB::__aeabi_memmove4,
704- CallingConv::ARM_AAPCS},
705- {RTLIB::AEABI_MEMMOVE8, RTLIB::__aeabi_memmove8,
706- CallingConv::ARM_AAPCS},
707- {RTLIB::AEABI_MEMSET4, RTLIB::__aeabi_memset4,
708- CallingConv::ARM_AAPCS},
709- {RTLIB::AEABI_MEMSET8, RTLIB::__aeabi_memset8,
710- CallingConv::ARM_AAPCS},
711- {RTLIB::AEABI_MEMCLR, RTLIB::__aeabi_memclr, CallingConv::ARM_AAPCS},
712- {RTLIB::AEABI_MEMCLR4, RTLIB::__aeabi_memclr4,
713- CallingConv::ARM_AAPCS},
714- {RTLIB::AEABI_MEMCLR8, RTLIB::__aeabi_memclr8,
715- CallingConv::ARM_AAPCS},
691+ {RTLIB::MEMCPY, RTLIB::__aeabi_memcpy},
692+ {RTLIB::MEMMOVE, RTLIB::__aeabi_memmove},
693+ {RTLIB::MEMSET, RTLIB::__aeabi_memset},
694+ {RTLIB::AEABI_MEMCPY4, RTLIB::__aeabi_memcpy4},
695+ {RTLIB::AEABI_MEMCPY8, RTLIB::__aeabi_memcpy8},
696+ {RTLIB::AEABI_MEMMOVE4, RTLIB::__aeabi_memmove4},
697+ {RTLIB::AEABI_MEMMOVE8, RTLIB::__aeabi_memmove8},
698+ {RTLIB::AEABI_MEMSET4, RTLIB::__aeabi_memset4},
699+ {RTLIB::AEABI_MEMSET8, RTLIB::__aeabi_memset8},
700+ {RTLIB::AEABI_MEMCLR, RTLIB::__aeabi_memclr},
701+ {RTLIB::AEABI_MEMCLR4, RTLIB::__aeabi_memclr4},
702+ {RTLIB::AEABI_MEMCLR8, RTLIB::__aeabi_memclr8},
716703 };
717704
718- for (const auto &LC : MemOpsLibraryCalls) {
705+ for (const auto &LC : MemOpsLibraryCalls)
719706 setLibcallImpl(LC.Op, LC.Impl);
720- setLibcallImplCallingConv(LC.Impl, LC.CC);
721- }
722707 }
723708 }
724709
@@ -746,16 +731,14 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
746731 static const struct {
747732 const RTLIB::Libcall Op;
748733 const RTLIB::LibcallImpl Impl;
749- const CallingConv::ID CC;
750734 } LibraryCalls[] = {
751- {RTLIB::FPROUND_F32_F16, RTLIB::__aeabi_f2h, CallingConv::ARM_AAPCS },
752- {RTLIB::FPROUND_F64_F16, RTLIB::__aeabi_d2h, CallingConv::ARM_AAPCS },
753- {RTLIB::FPEXT_F16_F32, RTLIB::__aeabi_h2f, CallingConv::ARM_AAPCS },
735+ {RTLIB::FPROUND_F32_F16, RTLIB::__aeabi_f2h},
736+ {RTLIB::FPROUND_F64_F16, RTLIB::__aeabi_d2h},
737+ {RTLIB::FPEXT_F16_F32, RTLIB::__aeabi_h2f},
754738 };
755739
756740 for (const auto &LC : LibraryCalls) {
757741 setLibcallImpl(LC.Op, LC.Impl);
758- setLibcallImplCallingConv(LC.Impl, LC.CC);
759742 }
760743 } else if (!TT.isOSBinFormatMachO()) {
761744 setLibcallImpl(RTLIB::FPROUND_F32_F16, RTLIB::__gnu_f2h_ieee);
0 commit comments