From 603e8490729e477680f0bc8284e136ceeb66e7f4 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sat, 31 Dec 2022 02:07:50 +0300 Subject: [PATCH] [NFC][TLI] Move `isLoadBitCastBeneficial()` implementation into source file ... so any change to it does not cause 700 source files to be recompiled. --- llvm/include/llvm/CodeGen/TargetLowering.h | 19 +------------------ llvm/lib/CodeGen/TargetLoweringBase.cpp | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/llvm/include/llvm/CodeGen/TargetLowering.h b/llvm/include/llvm/CodeGen/TargetLowering.h index 419148c..438b60b 100644 --- a/llvm/include/llvm/CodeGen/TargetLowering.h +++ b/llvm/include/llvm/CodeGen/TargetLowering.h @@ -573,24 +573,7 @@ public: /// dag combiner. virtual bool isLoadBitCastBeneficial(EVT LoadVT, EVT BitcastVT, const SelectionDAG &DAG, - const MachineMemOperand &MMO) const { - // Don't do if we could do an indexed load on the original type, but not on - // the new one. - if (!LoadVT.isSimple() || !BitcastVT.isSimple()) - return true; - - MVT LoadMVT = LoadVT.getSimpleVT(); - - // Don't bother doing this if it's just going to be promoted again later, as - // doing so might interfere with other combines. - if (getOperationAction(ISD::LOAD, LoadMVT) == Promote && - getTypeToPromoteTo(ISD::LOAD, LoadMVT) == BitcastVT.getSimpleVT()) - return false; - - unsigned Fast = 0; - return allowsMemoryAccess(*DAG.getContext(), DAG.getDataLayout(), BitcastVT, - MMO, &Fast) && Fast; - } + const MachineMemOperand &MMO) const; /// Return true if the following transform is beneficial: /// (store (y (conv x)), y*)) -> (store x, (x*)) diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp index fba60c8..37eb96e 100644 --- a/llvm/lib/CodeGen/TargetLoweringBase.cpp +++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp @@ -2214,6 +2214,28 @@ int TargetLoweringBase::getDivRefinementSteps(EVT VT, return getOpRefinementSteps(false, VT, getRecipEstimateForFunc(MF)); } +bool TargetLoweringBase::isLoadBitCastBeneficial( + EVT LoadVT, EVT BitcastVT, const SelectionDAG &DAG, + const MachineMemOperand &MMO) const { + // Don't do if we could do an indexed load on the original type, but not on + // the new one. + if (!LoadVT.isSimple() || !BitcastVT.isSimple()) + return true; + + MVT LoadMVT = LoadVT.getSimpleVT(); + + // Don't bother doing this if it's just going to be promoted again later, as + // doing so might interfere with other combines. + if (getOperationAction(ISD::LOAD, LoadMVT) == Promote && + getTypeToPromoteTo(ISD::LOAD, LoadMVT) == BitcastVT.getSimpleVT()) + return false; + + unsigned Fast = 0; + return allowsMemoryAccess(*DAG.getContext(), DAG.getDataLayout(), BitcastVT, + MMO, &Fast) && + Fast; +} + void TargetLoweringBase::finalizeLowering(MachineFunction &MF) const { MF.getRegInfo().freezeReservedRegs(MF); } -- 2.7.4