[llvm] f99b0f3 - [NFC] RuntimeLibcalls: Prefix the impls with 'Impl_' (#153850)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 2 09:57:36 PDT 2025
Author: Daniel Paoliello
Date: 2025-09-02T09:57:33-07:00
New Revision: f99b0f3de4f627dac0092a9bea4faa8d3cf0b2e1
URL: https://github.com/llvm/llvm-project/commit/f99b0f3de4f627dac0092a9bea4faa8d3cf0b2e1
DIFF: https://github.com/llvm/llvm-project/commit/f99b0f3de4f627dac0092a9bea4faa8d3cf0b2e1.diff
LOG: [NFC] RuntimeLibcalls: Prefix the impls with 'Impl_' (#153850)
As noted in #153256, TableGen is generating reserved names for
RuntimeLibcalls, which resulted in a build failure for Arm64EC since
`vcruntime.h` defines `__security_check_cookie` as a macro.
To avoid using reserved names, all impl names will now be prefixed with
`Impl_`.
`NumLibcallImpls` was lifted out as a `constexpr size_t` instead of
being an enum field.
While I was churning the dependent code, I also removed the TODO to move
the impl enum into its own namespace and use an `enum class`: I
experimented with using an `enum class` and adding a namespace, but we
decided it was too verbose so it was dropped.
Added:
Modified:
llvm/include/llvm/IR/RuntimeLibcalls.h
llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
llvm/lib/CodeGen/TargetLoweringBase.cpp
llvm/lib/IR/RuntimeLibcalls.cpp
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
llvm/lib/Target/Mips/Mips16ISelLowering.cpp
llvm/lib/Target/Sparc/SparcISelLowering.cpp
llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td
llvm/test/TableGen/RuntimeLibcallEmitter.td
llvm/unittests/IR/RuntimeLibcallsTest.cpp
llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.h b/llvm/include/llvm/IR/RuntimeLibcalls.h
index cf3e6c7f0b3a2..93183bc6b4aa9 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.h
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.h
@@ -50,7 +50,8 @@ static inline auto libcalls() {
}
static inline auto libcall_impls() {
- return enum_seq(static_cast<RTLIB::LibcallImpl>(1), RTLIB::NumLibcallImpls);
+ return enum_seq(static_cast<RTLIB::LibcallImpl>(1),
+ static_cast<RTLIB::LibcallImpl>(RTLIB::NumLibcallImpls));
}
/// A simple container for information about the supported runtime calls.
diff --git a/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp b/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
index 96c9cde622b45..f54e2f264556c 100644
--- a/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
+++ b/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
@@ -507,83 +507,86 @@ bool PreISelIntrinsicLowering::lowerIntrinsics(Module &M) const {
});
break;
case Intrinsic::objc_autorelease:
- Changed |= lowerObjCCall(F, RTLIB::objc_autorelease);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_autorelease);
break;
case Intrinsic::objc_autoreleasePoolPop:
- Changed |= lowerObjCCall(F, RTLIB::objc_autoreleasePoolPop);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_autoreleasePoolPop);
break;
case Intrinsic::objc_autoreleasePoolPush:
- Changed |= lowerObjCCall(F, RTLIB::objc_autoreleasePoolPush);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_autoreleasePoolPush);
break;
case Intrinsic::objc_autoreleaseReturnValue:
- Changed |= lowerObjCCall(F, RTLIB::objc_autoreleaseReturnValue);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_autoreleaseReturnValue);
break;
case Intrinsic::objc_copyWeak:
- Changed |= lowerObjCCall(F, RTLIB::objc_copyWeak);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_copyWeak);
break;
case Intrinsic::objc_destroyWeak:
- Changed |= lowerObjCCall(F, RTLIB::objc_destroyWeak);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_destroyWeak);
break;
case Intrinsic::objc_initWeak:
- Changed |= lowerObjCCall(F, RTLIB::objc_initWeak);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_initWeak);
break;
case Intrinsic::objc_loadWeak:
- Changed |= lowerObjCCall(F, RTLIB::objc_loadWeak);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_loadWeak);
break;
case Intrinsic::objc_loadWeakRetained:
- Changed |= lowerObjCCall(F, RTLIB::objc_loadWeakRetained);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_loadWeakRetained);
break;
case Intrinsic::objc_moveWeak:
- Changed |= lowerObjCCall(F, RTLIB::objc_moveWeak);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_moveWeak);
break;
case Intrinsic::objc_release:
- Changed |= lowerObjCCall(F, RTLIB::objc_release, true);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_release, true);
break;
case Intrinsic::objc_retain:
- Changed |= lowerObjCCall(F, RTLIB::objc_retain, true);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_retain, true);
break;
case Intrinsic::objc_retainAutorelease:
- Changed |= lowerObjCCall(F, RTLIB::objc_retainAutorelease);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_retainAutorelease);
break;
case Intrinsic::objc_retainAutoreleaseReturnValue:
- Changed |= lowerObjCCall(F, RTLIB::objc_retainAutoreleaseReturnValue);
+ Changed |=
+ lowerObjCCall(F, RTLIB::impl_objc_retainAutoreleaseReturnValue);
break;
case Intrinsic::objc_retainAutoreleasedReturnValue:
- Changed |= lowerObjCCall(F, RTLIB::objc_retainAutoreleasedReturnValue);
+ Changed |=
+ lowerObjCCall(F, RTLIB::impl_objc_retainAutoreleasedReturnValue);
break;
case Intrinsic::objc_claimAutoreleasedReturnValue:
- Changed |= lowerObjCCall(F, RTLIB::objc_claimAutoreleasedReturnValue);
+ Changed |=
+ lowerObjCCall(F, RTLIB::impl_objc_claimAutoreleasedReturnValue);
break;
case Intrinsic::objc_retainBlock:
- Changed |= lowerObjCCall(F, RTLIB::objc_retainBlock);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_retainBlock);
break;
case Intrinsic::objc_storeStrong:
- Changed |= lowerObjCCall(F, RTLIB::objc_storeStrong);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_storeStrong);
break;
case Intrinsic::objc_storeWeak:
- Changed |= lowerObjCCall(F, RTLIB::objc_storeWeak);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_storeWeak);
break;
case Intrinsic::objc_unsafeClaimAutoreleasedReturnValue:
Changed |=
- lowerObjCCall(F, RTLIB::objc_unsafeClaimAutoreleasedReturnValue);
+ lowerObjCCall(F, RTLIB::impl_objc_unsafeClaimAutoreleasedReturnValue);
break;
case Intrinsic::objc_retainedObject:
- Changed |= lowerObjCCall(F, RTLIB::objc_retainedObject);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_retainedObject);
break;
case Intrinsic::objc_unretainedObject:
- Changed |= lowerObjCCall(F, RTLIB::objc_unretainedObject);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_unretainedObject);
break;
case Intrinsic::objc_unretainedPointer:
- Changed |= lowerObjCCall(F, RTLIB::objc_unretainedPointer);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_unretainedPointer);
break;
case Intrinsic::objc_retain_autorelease:
- Changed |= lowerObjCCall(F, RTLIB::objc_retain_autorelease);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_retain_autorelease);
break;
case Intrinsic::objc_sync_enter:
- Changed |= lowerObjCCall(F, RTLIB::objc_sync_enter);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_sync_enter);
break;
case Intrinsic::objc_sync_exit:
- Changed |= lowerObjCCall(F, RTLIB::objc_sync_exit);
+ Changed |= lowerObjCCall(F, RTLIB::impl_objc_sync_exit);
break;
case Intrinsic::exp:
case Intrinsic::exp2:
diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp
index d52d5ec937139..c23281a820b2b 100644
--- a/llvm/lib/CodeGen/TargetLoweringBase.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp
@@ -612,23 +612,23 @@ RTLIB::Libcall RTLIB::getMEMSET_ELEMENT_UNORDERED_ATOMIC(uint64_t ElementSize) {
ISD::CondCode TargetLoweringBase::getSoftFloatCmpLibcallPredicate(
RTLIB::LibcallImpl Impl) const {
switch (Impl) {
- case RTLIB::__aeabi_dcmpeq__une:
- case RTLIB::__aeabi_fcmpeq__une:
+ case RTLIB::impl___aeabi_dcmpeq__une:
+ case RTLIB::impl___aeabi_fcmpeq__une:
// Usage in the eq case, so we have to invert the comparison.
return ISD::SETEQ;
- case RTLIB::__aeabi_dcmpeq__oeq:
- case RTLIB::__aeabi_fcmpeq__oeq:
+ case RTLIB::impl___aeabi_dcmpeq__oeq:
+ case RTLIB::impl___aeabi_fcmpeq__oeq:
// Normal comparison to boolean value.
return ISD::SETNE;
- case RTLIB::__aeabi_dcmplt:
- case RTLIB::__aeabi_dcmple:
- case RTLIB::__aeabi_dcmpge:
- case RTLIB::__aeabi_dcmpgt:
- case RTLIB::__aeabi_dcmpun:
- case RTLIB::__aeabi_fcmplt:
- case RTLIB::__aeabi_fcmple:
- case RTLIB::__aeabi_fcmpge:
- case RTLIB::__aeabi_fcmpgt:
+ case RTLIB::impl___aeabi_dcmplt:
+ case RTLIB::impl___aeabi_dcmple:
+ case RTLIB::impl___aeabi_dcmpge:
+ case RTLIB::impl___aeabi_dcmpgt:
+ case RTLIB::impl___aeabi_dcmpun:
+ case RTLIB::impl___aeabi_fcmplt:
+ case RTLIB::impl___aeabi_fcmple:
+ case RTLIB::impl___aeabi_fcmpge:
+ case RTLIB::impl___aeabi_fcmpgt:
/// The AEABI versions return a typical boolean value, so we can compare
/// against the integer result as simply != 0.
return ISD::SETNE;
diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp
index 3c324f2fe0d84..4fe5714a74e3f 100644
--- a/llvm/lib/IR/RuntimeLibcalls.cpp
+++ b/llvm/lib/IR/RuntimeLibcalls.cpp
@@ -40,13 +40,19 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT,
// hard-float calling convention by default.
if (!TT.isWatchABI()) {
if (isAAPCS_ABI(TT, ABIName)) {
- setLibcallImplCallingConv(RTLIB::__truncsfhf2, CallingConv::ARM_AAPCS);
- setLibcallImplCallingConv(RTLIB::__truncdfhf2, CallingConv::ARM_AAPCS);
- setLibcallImplCallingConv(RTLIB::__extendhfsf2, CallingConv::ARM_AAPCS);
+ setLibcallImplCallingConv(RTLIB::impl___truncsfhf2,
+ CallingConv::ARM_AAPCS);
+ setLibcallImplCallingConv(RTLIB::impl___truncdfhf2,
+ CallingConv::ARM_AAPCS);
+ setLibcallImplCallingConv(RTLIB::impl___extendhfsf2,
+ CallingConv::ARM_AAPCS);
} else {
- setLibcallImplCallingConv(RTLIB::__truncsfhf2, CallingConv::ARM_APCS);
- setLibcallImplCallingConv(RTLIB::__truncdfhf2, CallingConv::ARM_APCS);
- setLibcallImplCallingConv(RTLIB::__extendhfsf2, CallingConv::ARM_APCS);
+ setLibcallImplCallingConv(RTLIB::impl___truncsfhf2,
+ CallingConv::ARM_APCS);
+ setLibcallImplCallingConv(RTLIB::impl___truncdfhf2,
+ CallingConv::ARM_APCS);
+ setLibcallImplCallingConv(RTLIB::impl___extendhfsf2,
+ CallingConv::ARM_APCS);
}
}
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index b5c01eafcf108..22ba30b734a16 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -529,56 +529,56 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
const RTLIB::LibcallImpl Impl;
} LibraryCalls[] = {
// Single-precision floating-point arithmetic.
- { RTLIB::ADD_F32, RTLIB::__addsf3vfp },
- { RTLIB::SUB_F32, RTLIB::__subsf3vfp },
- { RTLIB::MUL_F32, RTLIB::__mulsf3vfp },
- { RTLIB::DIV_F32, RTLIB::__divsf3vfp },
+ { RTLIB::ADD_F32, RTLIB::impl___addsf3vfp },
+ { RTLIB::SUB_F32, RTLIB::impl___subsf3vfp },
+ { RTLIB::MUL_F32, RTLIB::impl___mulsf3vfp },
+ { RTLIB::DIV_F32, RTLIB::impl___divsf3vfp },
// Double-precision floating-point arithmetic.
- { RTLIB::ADD_F64, RTLIB::__adddf3vfp },
- { RTLIB::SUB_F64, RTLIB::__subdf3vfp },
- { RTLIB::MUL_F64, RTLIB::__muldf3vfp },
- { RTLIB::DIV_F64, RTLIB::__divdf3vfp },
+ { RTLIB::ADD_F64, RTLIB::impl___adddf3vfp },
+ { RTLIB::SUB_F64, RTLIB::impl___subdf3vfp },
+ { RTLIB::MUL_F64, RTLIB::impl___muldf3vfp },
+ { RTLIB::DIV_F64, RTLIB::impl___divdf3vfp },
// Single-precision comparisons.
- { RTLIB::OEQ_F32, RTLIB::__eqsf2vfp },
- { RTLIB::UNE_F32, RTLIB::__nesf2vfp },
- { RTLIB::OLT_F32, RTLIB::__ltsf2vfp },
- { RTLIB::OLE_F32, RTLIB::__lesf2vfp },
- { RTLIB::OGE_F32, RTLIB::__gesf2vfp },
- { RTLIB::OGT_F32, RTLIB::__gtsf2vfp },
- { RTLIB::UO_F32, RTLIB::__unordsf2vfp },
+ { RTLIB::OEQ_F32, RTLIB::impl___eqsf2vfp },
+ { RTLIB::UNE_F32, RTLIB::impl___nesf2vfp },
+ { RTLIB::OLT_F32, RTLIB::impl___ltsf2vfp },
+ { RTLIB::OLE_F32, RTLIB::impl___lesf2vfp },
+ { RTLIB::OGE_F32, RTLIB::impl___gesf2vfp },
+ { RTLIB::OGT_F32, RTLIB::impl___gtsf2vfp },
+ { RTLIB::UO_F32, RTLIB::impl___unordsf2vfp },
// Double-precision comparisons.
- { RTLIB::OEQ_F64, RTLIB::__eqdf2vfp },
- { RTLIB::UNE_F64, RTLIB::__nedf2vfp },
- { RTLIB::OLT_F64, RTLIB::__ltdf2vfp },
- { RTLIB::OLE_F64, RTLIB::__ledf2vfp },
- { RTLIB::OGE_F64, RTLIB::__gedf2vfp },
- { RTLIB::OGT_F64, RTLIB::__gtdf2vfp },
- { RTLIB::UO_F64, RTLIB::__unorddf2vfp },
+ { RTLIB::OEQ_F64, RTLIB::impl___eqdf2vfp },
+ { RTLIB::UNE_F64, RTLIB::impl___nedf2vfp },
+ { RTLIB::OLT_F64, RTLIB::impl___ltdf2vfp },
+ { RTLIB::OLE_F64, RTLIB::impl___ledf2vfp },
+ { RTLIB::OGE_F64, RTLIB::impl___gedf2vfp },
+ { RTLIB::OGT_F64, RTLIB::impl___gtdf2vfp },
+ { RTLIB::UO_F64, RTLIB::impl___unorddf2vfp },
// Floating-point to integer conversions.
// i64 conversions are done via library routines even when generating VFP
// instructions, so use the same ones.
- { RTLIB::FPTOSINT_F64_I32, RTLIB::__fixdfsivfp },
- { RTLIB::FPTOUINT_F64_I32, RTLIB::__fixunsdfsivfp },
- { RTLIB::FPTOSINT_F32_I32, RTLIB::__fixsfsivfp },
- { RTLIB::FPTOUINT_F32_I32, RTLIB::__fixunssfsivfp },
+ { RTLIB::FPTOSINT_F64_I32, RTLIB::impl___fixdfsivfp },
+ { RTLIB::FPTOUINT_F64_I32, RTLIB::impl___fixunsdfsivfp },
+ { RTLIB::FPTOSINT_F32_I32, RTLIB::impl___fixsfsivfp },
+ { RTLIB::FPTOUINT_F32_I32, RTLIB::impl___fixunssfsivfp },
// Conversions between floating types.
- { RTLIB::FPROUND_F64_F32, RTLIB::__truncdfsf2vfp },
- { RTLIB::FPEXT_F32_F64, RTLIB::__extendsfdf2vfp },
+ { RTLIB::FPROUND_F64_F32, RTLIB::impl___truncdfsf2vfp },
+ { RTLIB::FPEXT_F32_F64, RTLIB::impl___extendsfdf2vfp },
// Integer to floating-point conversions.
// i64 conversions are done via library routines even when generating VFP
// instructions, so use the same ones.
// FIXME: There appears to be some naming inconsistency in ARM libgcc:
// e.g., __floatunsidf vs. __floatunssidfvfp.
- { RTLIB::SINTTOFP_I32_F64, RTLIB::__floatsidfvfp },
- { RTLIB::UINTTOFP_I32_F64, RTLIB::__floatunssidfvfp },
- { RTLIB::SINTTOFP_I32_F32, RTLIB::__floatsisfvfp },
- { RTLIB::UINTTOFP_I32_F32, RTLIB::__floatunssisfvfp },
+ { RTLIB::SINTTOFP_I32_F64, RTLIB::impl___floatsidfvfp },
+ { RTLIB::UINTTOFP_I32_F64, RTLIB::impl___floatunssidfvfp },
+ { RTLIB::SINTTOFP_I32_F32, RTLIB::impl___floatsisfvfp },
+ { RTLIB::UINTTOFP_I32_F32, RTLIB::impl___floatunssisfvfp },
};
// clang-format on
diff --git a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
index 6da5e66be4ad8..5653099431b18 100644
--- a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
+++ b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
@@ -154,9 +154,9 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
const RTLIB::LibcallImpl Impl;
} LibraryCalls[] = {
// Integer Multiply - EABI Table 9
- {RTLIB::MUL_I16, RTLIB::__mspabi_mpyi_hw},
- {RTLIB::MUL_I32, RTLIB::__mspabi_mpyl_hw},
- {RTLIB::MUL_I64, RTLIB::__mspabi_mpyll_hw},
+ {RTLIB::MUL_I16, RTLIB::impl___mspabi_mpyi_hw},
+ {RTLIB::MUL_I32, RTLIB::impl___mspabi_mpyl_hw},
+ {RTLIB::MUL_I64, RTLIB::impl___mspabi_mpyll_hw},
// TODO The __mspabi_mpysl*_hw functions ARE implemented in libgcc
// TODO The __mspabi_mpyul*_hw functions ARE implemented in libgcc
};
@@ -169,9 +169,9 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
const RTLIB::LibcallImpl Impl;
} LibraryCalls[] = {
// Integer Multiply - EABI Table 9
- {RTLIB::MUL_I16, RTLIB::__mspabi_mpyi_hw},
- {RTLIB::MUL_I32, RTLIB::__mspabi_mpyl_hw32},
- {RTLIB::MUL_I64, RTLIB::__mspabi_mpyll_hw32},
+ {RTLIB::MUL_I16, RTLIB::impl___mspabi_mpyi_hw},
+ {RTLIB::MUL_I32, RTLIB::impl___mspabi_mpyl_hw32},
+ {RTLIB::MUL_I64, RTLIB::impl___mspabi_mpyll_hw32},
// TODO The __mspabi_mpysl*_hw32 functions ARE implemented in libgcc
// TODO The __mspabi_mpyul*_hw32 functions ARE implemented in libgcc
};
@@ -184,9 +184,9 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
const RTLIB::LibcallImpl Impl;
} LibraryCalls[] = {
// Integer Multiply - EABI Table 9
- {RTLIB::MUL_I16, RTLIB::__mspabi_mpyi_f5hw},
- {RTLIB::MUL_I32, RTLIB::__mspabi_mpyl_f5hw},
- {RTLIB::MUL_I64, RTLIB::__mspabi_mpyll_f5hw},
+ {RTLIB::MUL_I16, RTLIB::impl___mspabi_mpyi_f5hw},
+ {RTLIB::MUL_I32, RTLIB::impl___mspabi_mpyl_f5hw},
+ {RTLIB::MUL_I64, RTLIB::impl___mspabi_mpyll_f5hw},
// TODO The __mspabi_mpysl*_f5hw functions ARE implemented in libgcc
// TODO The __mspabi_mpyul*_f5hw functions ARE implemented in libgcc
};
@@ -199,9 +199,9 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
const RTLIB::LibcallImpl Impl;
} LibraryCalls[] = {
// Integer Multiply - EABI Table 9
- {RTLIB::MUL_I16, RTLIB::__mspabi_mpyi},
- {RTLIB::MUL_I32, RTLIB::__mspabi_mpyl},
- {RTLIB::MUL_I64, RTLIB::__mspabi_mpyll},
+ {RTLIB::MUL_I16, RTLIB::impl___mspabi_mpyi},
+ {RTLIB::MUL_I32, RTLIB::impl___mspabi_mpyl},
+ {RTLIB::MUL_I64, RTLIB::impl___mspabi_mpyll},
// The __mspabi_mpysl* functions are NOT implemented in libgcc
// The __mspabi_mpyul* functions are NOT implemented in libgcc
};
diff --git a/llvm/lib/Target/Mips/Mips16ISelLowering.cpp b/llvm/lib/Target/Mips/Mips16ISelLowering.cpp
index 330cb4e0e206f..7bd96b571bc68 100644
--- a/llvm/lib/Target/Mips/Mips16ISelLowering.cpp
+++ b/llvm/lib/Target/Mips/Mips16ISelLowering.cpp
@@ -56,48 +56,52 @@ struct Mips16IntrinsicHelperType{
// Libcalls for which no helper is generated. Sorted by name for binary search.
static const Mips16Libcall HardFloatLibCalls[] = {
- {RTLIB::ADD_F64, RTLIB::__mips16_adddf3, "__mips16_adddf3"},
- {RTLIB::ADD_F32, RTLIB::__mips16_addsf3, "__mips16_addsf3"},
- {RTLIB::DIV_F64, RTLIB::__mips16_divdf3, "__mips16_divdf3"},
- {RTLIB::DIV_F32, RTLIB::__mips16_divsf3, "__mips16_divsf3"},
- {RTLIB::OEQ_F64, RTLIB::__mips16_eqdf2, "__mips16_eqdf2"},
- {RTLIB::OEQ_F32, RTLIB::__mips16_eqsf2, "__mips16_eqsf2"},
- {RTLIB::FPEXT_F32_F64, RTLIB::__mips16_extendsfdf2, "__mips16_extendsfdf2"},
- {RTLIB::FPTOSINT_F64_I32, RTLIB::__mips16_fix_truncdfsi,
+ {RTLIB::ADD_F64, RTLIB::impl___mips16_adddf3, "__mips16_adddf3"},
+ {RTLIB::ADD_F32, RTLIB::impl___mips16_addsf3, "__mips16_addsf3"},
+ {RTLIB::DIV_F64, RTLIB::impl___mips16_divdf3, "__mips16_divdf3"},
+ {RTLIB::DIV_F32, RTLIB::impl___mips16_divsf3, "__mips16_divsf3"},
+ {RTLIB::OEQ_F64, RTLIB::impl___mips16_eqdf2, "__mips16_eqdf2"},
+ {RTLIB::OEQ_F32, RTLIB::impl___mips16_eqsf2, "__mips16_eqsf2"},
+ {RTLIB::FPEXT_F32_F64, RTLIB::impl___mips16_extendsfdf2,
+ "__mips16_extendsfdf2"},
+ {RTLIB::FPTOSINT_F64_I32, RTLIB::impl___mips16_fix_truncdfsi,
"__mips16_fix_truncdfsi"},
- {RTLIB::FPTOSINT_F32_I32, RTLIB::__mips16_fix_truncsfsi,
+ {RTLIB::FPTOSINT_F32_I32, RTLIB::impl___mips16_fix_truncsfsi,
"__mips16_fix_truncsfsi"},
- {RTLIB::SINTTOFP_I32_F64, RTLIB::__mips16_floatsidf, "__mips16_floatsidf"},
- {RTLIB::SINTTOFP_I32_F32, RTLIB::__mips16_floatsisf, "__mips16_floatsisf"},
- {RTLIB::UINTTOFP_I32_F64, RTLIB::__mips16_floatunsidf,
+ {RTLIB::SINTTOFP_I32_F64, RTLIB::impl___mips16_floatsidf,
+ "__mips16_floatsidf"},
+ {RTLIB::SINTTOFP_I32_F32, RTLIB::impl___mips16_floatsisf,
+ "__mips16_floatsisf"},
+ {RTLIB::UINTTOFP_I32_F64, RTLIB::impl___mips16_floatunsidf,
"__mips16_floatunsidf"},
- {RTLIB::UINTTOFP_I32_F32, RTLIB::__mips16_floatunsisf,
+ {RTLIB::UINTTOFP_I32_F32, RTLIB::impl___mips16_floatunsisf,
"__mips16_floatunsisf"},
- {RTLIB::OGE_F64, RTLIB::__mips16_gedf2, "__mips16_gedf2"},
- {RTLIB::OGE_F32, RTLIB::__mips16_gesf2, "__mips16_gesf2"},
- {RTLIB::OGT_F64, RTLIB::__mips16_gtdf2, "__mips16_gtdf2"},
- {RTLIB::OGT_F32, RTLIB::__mips16_gtsf2, "__mips16_gtsf2"},
- {RTLIB::OLE_F64, RTLIB::__mips16_ledf2, "__mips16_ledf2"},
- {RTLIB::OLE_F32, RTLIB::__mips16_lesf2, "__mips16_lesf2"},
- {RTLIB::OLT_F64, RTLIB::__mips16_ltdf2, "__mips16_ltdf2"},
- {RTLIB::OLT_F32, RTLIB::__mips16_ltsf2, "__mips16_ltsf2"},
- {RTLIB::MUL_F64, RTLIB::__mips16_muldf3, "__mips16_muldf3"},
- {RTLIB::MUL_F32, RTLIB::__mips16_mulsf3, "__mips16_mulsf3"},
- {RTLIB::UNE_F64, RTLIB::__mips16_nedf2, "__mips16_nedf2"},
- {RTLIB::UNE_F32, RTLIB::__mips16_nesf2, "__mips16_nesf2"},
- {RTLIB::UNKNOWN_LIBCALL, RTLIB::__mips16_ret_dc,
+ {RTLIB::OGE_F64, RTLIB::impl___mips16_gedf2, "__mips16_gedf2"},
+ {RTLIB::OGE_F32, RTLIB::impl___mips16_gesf2, "__mips16_gesf2"},
+ {RTLIB::OGT_F64, RTLIB::impl___mips16_gtdf2, "__mips16_gtdf2"},
+ {RTLIB::OGT_F32, RTLIB::impl___mips16_gtsf2, "__mips16_gtsf2"},
+ {RTLIB::OLE_F64, RTLIB::impl___mips16_ledf2, "__mips16_ledf2"},
+ {RTLIB::OLE_F32, RTLIB::impl___mips16_lesf2, "__mips16_lesf2"},
+ {RTLIB::OLT_F64, RTLIB::impl___mips16_ltdf2, "__mips16_ltdf2"},
+ {RTLIB::OLT_F32, RTLIB::impl___mips16_ltsf2, "__mips16_ltsf2"},
+ {RTLIB::MUL_F64, RTLIB::impl___mips16_muldf3, "__mips16_muldf3"},
+ {RTLIB::MUL_F32, RTLIB::impl___mips16_mulsf3, "__mips16_mulsf3"},
+ {RTLIB::UNE_F64, RTLIB::impl___mips16_nedf2, "__mips16_nedf2"},
+ {RTLIB::UNE_F32, RTLIB::impl___mips16_nesf2, "__mips16_nesf2"},
+ {RTLIB::UNKNOWN_LIBCALL, RTLIB::impl___mips16_ret_dc,
"__mips16_ret_dc"}, // No associated libcall.
- {RTLIB::UNKNOWN_LIBCALL, RTLIB::__mips16_ret_df,
+ {RTLIB::UNKNOWN_LIBCALL, RTLIB::impl___mips16_ret_df,
"__mips16_ret_df"}, // No associated libcall.
- {RTLIB::UNKNOWN_LIBCALL, RTLIB::__mips16_ret_sc,
+ {RTLIB::UNKNOWN_LIBCALL, RTLIB::impl___mips16_ret_sc,
"__mips16_ret_sc"}, // No associated libcall.
- {RTLIB::UNKNOWN_LIBCALL, RTLIB::__mips16_ret_sf,
+ {RTLIB::UNKNOWN_LIBCALL, RTLIB::impl___mips16_ret_sf,
"__mips16_ret_sf"}, // No associated libcall.
- {RTLIB::SUB_F64, RTLIB::__mips16_subdf3, "__mips16_subdf3"},
- {RTLIB::SUB_F32, RTLIB::__mips16_subsf3, "__mips16_subsf3"},
- {RTLIB::FPROUND_F64_F32, RTLIB::__mips16_truncdfsf2, "__mips16_truncdfsf2"},
- {RTLIB::UO_F64, RTLIB::__mips16_unorddf2, "__mips16_unorddf2"},
- {RTLIB::UO_F32, RTLIB::__mips16_unordsf2, "__mips16_unordsf2"}};
+ {RTLIB::SUB_F64, RTLIB::impl___mips16_subdf3, "__mips16_subdf3"},
+ {RTLIB::SUB_F32, RTLIB::impl___mips16_subsf3, "__mips16_subsf3"},
+ {RTLIB::FPROUND_F64_F32, RTLIB::impl___mips16_truncdfsf2,
+ "__mips16_truncdfsf2"},
+ {RTLIB::UO_F64, RTLIB::impl___mips16_unorddf2, "__mips16_unorddf2"},
+ {RTLIB::UO_F32, RTLIB::impl___mips16_unordsf2, "__mips16_unordsf2"}};
static const Mips16IntrinsicHelperType Mips16IntrinsicHelper[] = {
{"__fixunsdfsi", "__mips16_call_stub_2" },
diff --git a/llvm/lib/Target/Sparc/SparcISelLowering.cpp b/llvm/lib/Target/Sparc/SparcISelLowering.cpp
index d01218f573dc2..4b4a91da852d2 100644
--- a/llvm/lib/Target/Sparc/SparcISelLowering.cpp
+++ b/llvm/lib/Target/Sparc/SparcISelLowering.cpp
@@ -1907,37 +1907,37 @@ SparcTargetLowering::SparcTargetLowering(const TargetMachine &TM,
// Setup Runtime library names.
if (Subtarget->is64Bit() && !Subtarget->useSoftFloat()) {
- setLibcallImpl(RTLIB::ADD_F128, RTLIB::_Qp_add);
- setLibcallImpl(RTLIB::SUB_F128, RTLIB::_Qp_sub);
- setLibcallImpl(RTLIB::MUL_F128, RTLIB::_Qp_mul);
- setLibcallImpl(RTLIB::DIV_F128, RTLIB::_Qp_div);
- setLibcallImpl(RTLIB::SQRT_F128, RTLIB::_Qp_sqrt);
- setLibcallImpl(RTLIB::FPTOSINT_F128_I32, RTLIB::_Qp_qtoi);
- setLibcallImpl(RTLIB::FPTOUINT_F128_I32, RTLIB::_Qp_qtoui);
- setLibcallImpl(RTLIB::SINTTOFP_I32_F128, RTLIB::_Qp_itoq);
- setLibcallImpl(RTLIB::UINTTOFP_I32_F128, RTLIB::_Qp_uitoq);
- setLibcallImpl(RTLIB::FPTOSINT_F128_I64, RTLIB::_Qp_qtox);
- setLibcallImpl(RTLIB::FPTOUINT_F128_I64, RTLIB::_Qp_qtoux);
- setLibcallImpl(RTLIB::SINTTOFP_I64_F128, RTLIB::_Qp_xtoq);
- setLibcallImpl(RTLIB::UINTTOFP_I64_F128, RTLIB::_Qp_uxtoq);
- setLibcallImpl(RTLIB::FPEXT_F32_F128, RTLIB::_Qp_stoq);
- setLibcallImpl(RTLIB::FPEXT_F64_F128, RTLIB::_Qp_dtoq);
- setLibcallImpl(RTLIB::FPROUND_F128_F32, RTLIB::_Qp_qtos);
- setLibcallImpl(RTLIB::FPROUND_F128_F64, RTLIB::_Qp_qtod);
+ setLibcallImpl(RTLIB::ADD_F128, RTLIB::impl__Qp_add);
+ setLibcallImpl(RTLIB::SUB_F128, RTLIB::impl__Qp_sub);
+ setLibcallImpl(RTLIB::MUL_F128, RTLIB::impl__Qp_mul);
+ setLibcallImpl(RTLIB::DIV_F128, RTLIB::impl__Qp_div);
+ setLibcallImpl(RTLIB::SQRT_F128, RTLIB::impl__Qp_sqrt);
+ setLibcallImpl(RTLIB::FPTOSINT_F128_I32, RTLIB::impl__Qp_qtoi);
+ setLibcallImpl(RTLIB::FPTOUINT_F128_I32, RTLIB::impl__Qp_qtoui);
+ setLibcallImpl(RTLIB::SINTTOFP_I32_F128, RTLIB::impl__Qp_itoq);
+ setLibcallImpl(RTLIB::UINTTOFP_I32_F128, RTLIB::impl__Qp_uitoq);
+ setLibcallImpl(RTLIB::FPTOSINT_F128_I64, RTLIB::impl__Qp_qtox);
+ setLibcallImpl(RTLIB::FPTOUINT_F128_I64, RTLIB::impl__Qp_qtoux);
+ setLibcallImpl(RTLIB::SINTTOFP_I64_F128, RTLIB::impl__Qp_xtoq);
+ setLibcallImpl(RTLIB::UINTTOFP_I64_F128, RTLIB::impl__Qp_uxtoq);
+ setLibcallImpl(RTLIB::FPEXT_F32_F128, RTLIB::impl__Qp_stoq);
+ setLibcallImpl(RTLIB::FPEXT_F64_F128, RTLIB::impl__Qp_dtoq);
+ setLibcallImpl(RTLIB::FPROUND_F128_F32, RTLIB::impl__Qp_qtos);
+ setLibcallImpl(RTLIB::FPROUND_F128_F64, RTLIB::impl__Qp_qtod);
} else if (!Subtarget->useSoftFloat()) {
- setLibcallImpl(RTLIB::ADD_F128, RTLIB::_Q_add);
- setLibcallImpl(RTLIB::SUB_F128, RTLIB::_Q_sub);
- setLibcallImpl(RTLIB::MUL_F128, RTLIB::_Q_mul);
- setLibcallImpl(RTLIB::DIV_F128, RTLIB::_Q_div);
- setLibcallImpl(RTLIB::SQRT_F128, RTLIB::_Q_sqrt);
- setLibcallImpl(RTLIB::FPTOSINT_F128_I32, RTLIB::_Q_qtoi);
- setLibcallImpl(RTLIB::FPTOUINT_F128_I32, RTLIB::_Q_qtou);
- setLibcallImpl(RTLIB::SINTTOFP_I32_F128, RTLIB::_Q_itoq);
- setLibcallImpl(RTLIB::UINTTOFP_I32_F128, RTLIB::_Q_utoq);
- setLibcallImpl(RTLIB::FPEXT_F32_F128, RTLIB::_Q_stoq);
- setLibcallImpl(RTLIB::FPEXT_F64_F128, RTLIB::_Q_dtoq);
- setLibcallImpl(RTLIB::FPROUND_F128_F32, RTLIB::_Q_qtos);
- setLibcallImpl(RTLIB::FPROUND_F128_F64, RTLIB::_Q_qtod);
+ setLibcallImpl(RTLIB::ADD_F128, RTLIB::impl__Q_add);
+ setLibcallImpl(RTLIB::SUB_F128, RTLIB::impl__Q_sub);
+ setLibcallImpl(RTLIB::MUL_F128, RTLIB::impl__Q_mul);
+ setLibcallImpl(RTLIB::DIV_F128, RTLIB::impl__Q_div);
+ setLibcallImpl(RTLIB::SQRT_F128, RTLIB::impl__Q_sqrt);
+ setLibcallImpl(RTLIB::FPTOSINT_F128_I32, RTLIB::impl__Q_qtoi);
+ setLibcallImpl(RTLIB::FPTOUINT_F128_I32, RTLIB::impl__Q_qtou);
+ setLibcallImpl(RTLIB::SINTTOFP_I32_F128, RTLIB::impl__Q_itoq);
+ setLibcallImpl(RTLIB::UINTTOFP_I32_F128, RTLIB::impl__Q_utoq);
+ setLibcallImpl(RTLIB::FPEXT_F32_F128, RTLIB::impl__Q_stoq);
+ setLibcallImpl(RTLIB::FPEXT_F64_F128, RTLIB::impl__Q_dtoq);
+ setLibcallImpl(RTLIB::FPROUND_F128_F32, RTLIB::impl__Q_qtos);
+ setLibcallImpl(RTLIB::FPROUND_F128_F64, RTLIB::impl__Q_qtod);
}
}
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td b/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
index 7d1e830c912a5..c224cd60412a8 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
@@ -49,12 +49,12 @@ def MSP430LibraryWithCondCC : SystemRuntimeLibrary<isMSP430,
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::malloc}, // malloc
+// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::impl_malloc}, // malloc
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::__divmodqi4}, // __divmodqi4
-// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::__udivmodhi4}, // __udivmodhi4
+// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4}, // __divmodqi4
+// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4}, // __udivmodhi4
// CHECK-NEXT: }, CallingConv::AVR_BUILTIN);
// CHECK-EMPTY:
// CHECK-NEXT: return;
@@ -62,12 +62,12 @@ def MSP430LibraryWithCondCC : SystemRuntimeLibrary<isMSP430,
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::avr) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::malloc}, // malloc
+// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::impl_malloc}, // malloc
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::__divmodqi4}, // __divmodqi4
-// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::__udivmodhi4}, // __udivmodhi4
+// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4}, // __divmodqi4
+// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4}, // __udivmodhi4
// CHECK-NEXT: }, CallingConv::AVR_BUILTIN);
// CHECK-EMPTY:
// CHECK-NEXT: return;
@@ -75,19 +75,19 @@ def MSP430LibraryWithCondCC : SystemRuntimeLibrary<isMSP430,
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::msp430) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::malloc}, // malloc
+// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::impl_malloc}, // malloc
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: if ( isFoo() ) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::__divmodqi4}, // __divmodqi4
+// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4}, // __divmodqi4
// CHECK-NEXT: }, CallingConv::AVR_BUILTIN);
// CHECK-EMPTY:
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if ( isBar() ) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::__udivmodhi4}, // __udivmodhi4
+// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4}, // __udivmodhi4
// CHECK-NEXT: }, CallingConv::MSP430_BUILTIN);
// CHECK-EMPTY:
// CHECK-NEXT: }
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td b/llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td
index 2608faf2f75f0..8169f5691cf0c 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td
@@ -26,7 +26,7 @@ def dup1 : RuntimeLibcallImpl<ANOTHER_DUP>;
// CHECK: if (isTargetArchA()) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::func_b}, // func_b
+// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::impl_func_b}, // func_b
// CHECK-NEXT: });
// ERR: :[[@LINE+1]]:5: warning: conflicting implementations for libcall SOME_FUNC: func_b, func_a
@@ -36,8 +36,8 @@ def TheSystemLibraryA : SystemRuntimeLibrary<isTargetArchA,
// CHECK: if (isTargetArchB()) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::OTHER_FUNC, RTLIB::other_func}, // other_func
-// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::func_a}, // func_a
+// CHECK-NEXT: {RTLIB::OTHER_FUNC, RTLIB::impl_other_func}, // other_func
+// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::impl_func_a}, // func_a
// CHECK-NEXT: });
// ERR: :[[@LINE+1]]:5: warning: conflicting implementations for libcall SOME_FUNC: func_a, func_b
@@ -47,9 +47,9 @@ def TheSystemLibraryB : SystemRuntimeLibrary<isTargetArchB,
// CHECK: if (isTargetArchC()) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::ANOTHER_DUP, RTLIB::dup1}, // dup1
-// CHECK-NEXT: {RTLIB::OTHER_FUNC, RTLIB::other_func}, // other_func
-// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::func_a}, // func_a
+// CHECK-NEXT: {RTLIB::ANOTHER_DUP, RTLIB::impl_dup1}, // dup1
+// CHECK-NEXT: {RTLIB::OTHER_FUNC, RTLIB::impl_other_func}, // other_func
+// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::impl_func_a}, // func_a
// CHECK-NEXT: });
// ERR: :[[@LINE+3]]:5: warning: conflicting implementations for libcall ANOTHER_DUP: dup1, dup0
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter.td b/llvm/test/TableGen/RuntimeLibcallEmitter.td
index 07c8abcaab567..78705e25dc5dc 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter.td
@@ -89,16 +89,16 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-EMPTY:
// CHECK-NEXT:enum LibcallImpl : unsigned short {
// CHECK-NEXT: Unsupported = 0,
-// CHECK-NEXT: ___memcpy = 1, // ___memcpy
-// CHECK-NEXT: ___memset = 2, // ___memset
-// CHECK-NEXT: __ashlsi3 = 3, // __ashlsi3
-// CHECK-NEXT: __lshrdi3 = 4, // __lshrdi3
+// CHECK-NEXT: impl____memcpy = 1, // ___memcpy
+// CHECK-NEXT: impl____memset = 2, // ___memset
+// CHECK-NEXT: impl___ashlsi3 = 3, // __ashlsi3
+// CHECK-NEXT: impl___lshrdi3 = 4, // __lshrdi3
// CHECK-NEXT: bzero = 5, // bzero
// CHECK-NEXT: calloc = 6, // calloc
// CHECK-NEXT: sqrtl_f128 = 7, // sqrtl
// CHECK-NEXT: sqrtl_f80 = 8, // sqrtl
-// CHECK-NEXT: NumLibcallImpls = 9
// CHECK-NEXT: };
+// CHECK-NEXT: constexpr size_t NumLibcallImpls = 9;
// CHECK-NEXT: } // End namespace RTLIB
// CHECK-NEXT: } // End namespace llvm
// CHECK-NEXT: #endif
@@ -152,14 +152,14 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-EMPTY:
// CHECK-NEXT: const RTLIB::Libcall llvm::RTLIB::RuntimeLibcallsInfo::ImplToLibcall[RTLIB::NumLibcallImpls] = {
// CHECK-NEXT: RTLIB::UNKNOWN_LIBCALL, // RTLIB::Unsupported
-// CHECK-NEXT: RTLIB::MEMCPY, // RTLIB::___memcpy
-// CHECK-NEXT: RTLIB::MEMSET, // RTLIB::___memset
-// CHECK-NEXT: RTLIB::SHL_I32, // RTLIB::__ashlsi3
-// CHECK-NEXT: RTLIB::SRL_I64, // RTLIB::__lshrdi3
-// CHECK-NEXT: RTLIB::BZERO, // RTLIB::bzero
-// CHECK-NEXT: RTLIB::CALLOC, // RTLIB::calloc
-// CHECK-NEXT: RTLIB::SQRT_F128, // RTLIB::sqrtl_f128
-// CHECK-NEXT: RTLIB::SQRT_F80, // RTLIB::sqrtl_f80
+// CHECK-NEXT: RTLIB::MEMCPY, // RTLIB::impl____memcpy
+// CHECK-NEXT: RTLIB::MEMSET, // RTLIB::impl____memset
+// CHECK-NEXT: RTLIB::SHL_I32, // RTLIB::impl___ashlsi3
+// CHECK-NEXT: RTLIB::SRL_I64, // RTLIB::impl___lshrdi3
+// CHECK-NEXT: RTLIB::BZERO, // RTLIB::impl_bzero
+// CHECK-NEXT: RTLIB::CALLOC, // RTLIB::impl_calloc
+// CHECK-NEXT: RTLIB::SQRT_F128, // RTLIB::impl_sqrtl_f128
+// CHECK-NEXT: RTLIB::SQRT_F80, // RTLIB::impl_sqrtl_f80
// CHECK-NEXT: };
// CHECK: #ifdef GET_LOOKUP_LIBCALL_IMPL_NAME_BODY
@@ -207,22 +207,22 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::blah) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::BZERO, RTLIB::bzero}, // bzero
-// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::calloc}, // calloc
-// CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::sqrtl_f128}, // sqrtl
+// CHECK-NEXT: {RTLIB::BZERO, RTLIB::impl_bzero}, // bzero
+// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::impl_calloc}, // calloc
+// CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128}, // sqrtl
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.hasCompilerRT()) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
-// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::__lshrdi3}, // __lshrdi3
+// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
+// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::MEMSET, RTLIB::___memset}, // ___memset
+// CHECK-NEXT: {RTLIB::MEMSET, RTLIB::impl____memset}, // ___memset
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: }
@@ -232,9 +232,9 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::buzz) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
-// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::sqrtl_f80}, // sqrtl
-// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::__lshrdi3}, // __lshrdi3
+// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
+// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80}, // sqrtl
+// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: return;
@@ -242,13 +242,13 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::foo) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::BZERO, RTLIB::bzero}, // bzero
-// CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::sqrtl_f128}, // sqrtl
+// CHECK-NEXT: {RTLIB::BZERO, RTLIB::impl_bzero}, // bzero
+// CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128}, // sqrtl
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::MEMSET, RTLIB::___memset}, // ___memset
+// CHECK-NEXT: {RTLIB::MEMSET, RTLIB::impl____memset}, // ___memset
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: }
@@ -258,10 +258,10 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::simple) {
// CHECK-NEXT: setLibcallsImpl({
-// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::calloc}, // calloc
-// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
-// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::sqrtl_f80}, // sqrtl
-// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::__lshrdi3}, // __lshrdi3
+// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::impl_calloc}, // calloc
+// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
+// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80}, // sqrtl
+// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
// CHECK-NEXT: });
// CHECK-EMPTY:
// CHECK-NEXT: return;
diff --git a/llvm/unittests/IR/RuntimeLibcallsTest.cpp b/llvm/unittests/IR/RuntimeLibcallsTest.cpp
index 012316801859c..26cb7e344a4f6 100644
--- a/llvm/unittests/IR/RuntimeLibcallsTest.cpp
+++ b/llvm/unittests/IR/RuntimeLibcallsTest.cpp
@@ -30,11 +30,11 @@ TEST(RuntimeLibcallsTest, LibcallImplByName) {
// Test first libcall name
EXPECT_EQ(
- RTLIB::arm64ec__Unwind_Resume,
+ RTLIB::impl_arm64ec__Unwind_Resume,
*RTLIB::RuntimeLibcallsInfo::lookupLibcallImplName("#_Unwind_Resume")
.begin());
// Test longest libcall names
- EXPECT_EQ(RTLIB::__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes,
+ EXPECT_EQ(RTLIB::impl___hexagon_memcpy_likely_aligned_min32bytes_mult8bytes,
*RTLIB::RuntimeLibcallsInfo::lookupLibcallImplName(
"__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes")
.begin());
@@ -44,9 +44,9 @@ TEST(RuntimeLibcallsTest, LibcallImplByName) {
RTLIB::RuntimeLibcallsInfo::lookupLibcallImplName("sqrtl");
ASSERT_EQ(size(SquirtleSquad), 3);
auto I = SquirtleSquad.begin();
- EXPECT_EQ(*I++, RTLIB::sqrt_f128);
- EXPECT_EQ(*I++, RTLIB::sqrt_f80);
- EXPECT_EQ(*I++, RTLIB::sqrt_ppcf128);
+ EXPECT_EQ(*I++, RTLIB::impl_sqrt_f128);
+ EXPECT_EQ(*I++, RTLIB::impl_sqrt_f80);
+ EXPECT_EQ(*I++, RTLIB::impl_sqrt_ppcf128);
}
// Last libcall
@@ -54,9 +54,9 @@ TEST(RuntimeLibcallsTest, LibcallImplByName) {
auto Truncs = RTLIB::RuntimeLibcallsInfo::lookupLibcallImplName("truncl");
ASSERT_EQ(size(Truncs), 3);
auto I = Truncs.begin();
- EXPECT_EQ(*I++, RTLIB::trunc_f128);
- EXPECT_EQ(*I++, RTLIB::trunc_f80);
- EXPECT_EQ(*I++, RTLIB::trunc_ppcf128);
+ EXPECT_EQ(*I++, RTLIB::impl_trunc_f128);
+ EXPECT_EQ(*I++, RTLIB::impl_trunc_f80);
+ EXPECT_EQ(*I++, RTLIB::impl_trunc_ppcf128);
}
}
diff --git a/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp b/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
index a1020d5a0db1f..45cb2099f246b 100644
--- a/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
+++ b/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
@@ -178,7 +178,7 @@ class RuntimeLibcallImpl {
bool isDefault() const { return TheDef->getValueAsBit("IsDefault"); }
void emitEnumEntry(raw_ostream &OS) const {
- OS << "RTLIB::" << TheDef->getName();
+ OS << "RTLIB::impl_" << this->getName();
}
void emitSetImplCall(raw_ostream &OS) const {
@@ -305,14 +305,15 @@ void RuntimeLibcallEmitter::emitGetRuntimeLibcallEnum(raw_ostream &OS) const {
"enum LibcallImpl : unsigned short {\n"
" Unsupported = 0,\n";
- // FIXME: Emit this in a
diff erent namespace. And maybe use enum class.
for (const RuntimeLibcallImpl &LibCall : RuntimeLibcallImplDefList) {
- OS << " " << LibCall.getName() << " = " << LibCall.getEnumVal() << ", // "
- << LibCall.getLibcallFuncName() << '\n';
+ OS << " impl_" << LibCall.getName() << " = " << LibCall.getEnumVal()
+ << ", // " << LibCall.getLibcallFuncName() << '\n';
}
- OS << " NumLibcallImpls = " << RuntimeLibcallImplDefList.size() + 1
- << "\n};\n"
+ OS << "};\n"
+ << "constexpr size_t NumLibcallImpls = "
+ << RuntimeLibcallImplDefList.size() + 1
+ << ";\n"
"} // End namespace RTLIB\n"
"} // End namespace llvm\n"
"#endif\n\n";
More information about the llvm-commits
mailing list