mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-20 09:24:58 +00:00
More ppcf128 issues (maybe the last)?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43160 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f0a0cddbcd
commit
fabd32deb0
@ -21,6 +21,10 @@ namespace RTLIB {
|
|||||||
/// the backend can emit. The various long double types cannot be merged,
|
/// the backend can emit. The various long double types cannot be merged,
|
||||||
/// because 80-bit library functions use "xf" and 128-bit use "tf".
|
/// because 80-bit library functions use "xf" and 128-bit use "tf".
|
||||||
///
|
///
|
||||||
|
/// When adding PPCF128 functions here, note that their names generally need
|
||||||
|
/// to be overridden for Darwin with the xxx$LDBL128 form. See
|
||||||
|
/// PPCISelLowering.cpp.
|
||||||
|
///
|
||||||
enum Libcall {
|
enum Libcall {
|
||||||
// Integer
|
// Integer
|
||||||
SHL_I32,
|
SHL_I32,
|
||||||
|
@ -3493,7 +3493,7 @@ SDOperand DAGCombiner::visitFP_EXTEND(SDNode *N) {
|
|||||||
return DAG.getNode(ISD::FP_EXTEND, VT, N0);
|
return DAG.getNode(ISD::FP_EXTEND, VT, N0);
|
||||||
|
|
||||||
// fold (fpext (load x)) -> (fpext (fpround (extload x)))
|
// fold (fpext (load x)) -> (fpext (fpround (extload x)))
|
||||||
if (ISD::isNON_EXTLoad(N0.Val) && N0.hasOneUse() &&
|
if (ISD::isNON_EXTLoad(N0.Val) && N0.hasOneUse() && VT != MVT::ppcf128 &&
|
||||||
(!AfterLegalize||TLI.isLoadXLegal(ISD::EXTLOAD, N0.getValueType()))) {
|
(!AfterLegalize||TLI.isLoadXLegal(ISD::EXTLOAD, N0.getValueType()))) {
|
||||||
LoadSDNode *LN0 = cast<LoadSDNode>(N0);
|
LoadSDNode *LN0 = cast<LoadSDNode>(N0);
|
||||||
SDOperand ExtLoad = DAG.getExtLoad(ISD::EXTLOAD, VT, LN0->getChain(),
|
SDOperand ExtLoad = DAG.getExtLoad(ISD::EXTLOAD, VT, LN0->getChain(),
|
||||||
|
@ -341,6 +341,13 @@ PPCTargetLowering::PPCTargetLowering(PPCTargetMachine &TM)
|
|||||||
setTargetDAGCombine(ISD::BR_CC);
|
setTargetDAGCombine(ISD::BR_CC);
|
||||||
setTargetDAGCombine(ISD::BSWAP);
|
setTargetDAGCombine(ISD::BSWAP);
|
||||||
|
|
||||||
|
// Darwin long double math library functions have $LDBL128 appended.
|
||||||
|
if (TM.getSubtarget<PPCSubtarget>().isDarwin()) {
|
||||||
|
setLibcallName(RTLIB::SQRT_PPCF128, "sqrtl$LDBL128");
|
||||||
|
setLibcallName(RTLIB::POW_PPCF128, "powl$LDBL128");
|
||||||
|
setLibcallName(RTLIB::REM_PPCF128, "fmodl$LDBL128");
|
||||||
|
}
|
||||||
|
|
||||||
computeRegisterProperties();
|
computeRegisterProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user