mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-22 23:24:59 +00:00
Make TargetLowering::getPointerTy() taking DataLayout as an argument
Summary: This change is part of a series of commits dedicated to have a single DataLayout during compilation by using always the one owned by the module. Reviewers: echristo Subscribers: jholewinski, ted, yaron.keren, rafael, llvm-commits Differential Revision: http://reviews.llvm.org/D11028 From: Mehdi Amini <mehdi.amini@apple.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241775 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -443,8 +443,9 @@ namespace {
|
||||
assert(LHSTy.isInteger() && "Shift amount is not an integer type!");
|
||||
if (LHSTy.isVector())
|
||||
return LHSTy;
|
||||
auto &DL = DAG.getDataLayout();
|
||||
return LegalTypes ? TLI.getScalarShiftAmountTy(LHSTy)
|
||||
: TLI.getPointerTy();
|
||||
: TLI.getPointerTy(DL);
|
||||
}
|
||||
|
||||
/// This method returns true if we are running before type legalization or
|
||||
@@ -456,7 +457,7 @@ namespace {
|
||||
|
||||
/// Convenience wrapper around TargetLowering::getSetCCResultType
|
||||
EVT getSetCCResultType(EVT VT) const {
|
||||
return TLI.getSetCCResultType(*DAG.getContext(), VT);
|
||||
return TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT);
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -6926,7 +6927,7 @@ SDValue DAGCombiner::visitTRUNCATE(SDNode *N) {
|
||||
SDValue EltNo = N0->getOperand(1);
|
||||
if (isa<ConstantSDNode>(EltNo) && isTypeLegal(NVT)) {
|
||||
int Elt = cast<ConstantSDNode>(EltNo)->getZExtValue();
|
||||
EVT IndexTy = TLI.getVectorIdxTy();
|
||||
EVT IndexTy = TLI.getVectorIdxTy(DAG.getDataLayout());
|
||||
int Index = isLE ? (Elt*SizeRatio) : (Elt*SizeRatio + (SizeRatio-1));
|
||||
|
||||
SDValue V = DAG.getNode(ISD::BITCAST, SDLoc(N),
|
||||
@@ -8422,7 +8423,7 @@ SDValue DAGCombiner::visitFSQRT(SDNode *N) {
|
||||
// Unfortunately, RV is now NaN if the input was exactly 0.
|
||||
// Select out this case and force the answer to 0.
|
||||
SDValue Zero = DAG.getConstantFP(0.0, DL, VT);
|
||||
EVT CCVT = TLI.getSetCCResultType(*DAG.getContext(), VT);
|
||||
EVT CCVT = TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT);
|
||||
SDValue ZeroCmp = DAG.getSetCC(DL, CCVT, N->getOperand(0), Zero, ISD::SETEQ);
|
||||
AddToWorklist(ZeroCmp.getNode());
|
||||
AddToWorklist(RV.getNode());
|
||||
@@ -11647,7 +11648,7 @@ SDValue DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) {
|
||||
// scalar_to_vector here as well.
|
||||
|
||||
if (!LegalOperations) {
|
||||
EVT IndexTy = TLI.getVectorIdxTy();
|
||||
EVT IndexTy = TLI.getVectorIdxTy(DAG.getDataLayout());
|
||||
return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, SDLoc(N), NVT, SVInVec,
|
||||
DAG.getConstant(OrigElt, SDLoc(SVOp), IndexTy));
|
||||
}
|
||||
@@ -12078,10 +12079,13 @@ SDValue DAGCombiner::visitBUILD_VECTOR(SDNode *N) {
|
||||
|
||||
// Try to replace VecIn1 with two extract_subvectors
|
||||
// No need to update the masks, they should still be correct.
|
||||
VecIn2 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, VT, VecIn1,
|
||||
DAG.getConstant(VT.getVectorNumElements(), dl, TLI.getVectorIdxTy()));
|
||||
VecIn1 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, VT, VecIn1,
|
||||
DAG.getConstant(0, dl, TLI.getVectorIdxTy()));
|
||||
VecIn2 = DAG.getNode(
|
||||
ISD::EXTRACT_SUBVECTOR, dl, VT, VecIn1,
|
||||
DAG.getConstant(VT.getVectorNumElements(), dl,
|
||||
TLI.getVectorIdxTy(DAG.getDataLayout())));
|
||||
VecIn1 = DAG.getNode(
|
||||
ISD::EXTRACT_SUBVECTOR, dl, VT, VecIn1,
|
||||
DAG.getConstant(0, dl, TLI.getVectorIdxTy(DAG.getDataLayout())));
|
||||
} else
|
||||
return SDValue();
|
||||
}
|
||||
@@ -13357,8 +13361,9 @@ SDValue DAGCombiner::SimplifySelectCC(SDLoc DL, SDValue N0, SDValue N1,
|
||||
|
||||
// Create a ConstantArray of the two constants.
|
||||
Constant *CA = ConstantArray::get(ArrayType::get(FPTy, 2), Elts);
|
||||
SDValue CPIdx = DAG.getConstantPool(CA, TLI.getPointerTy(),
|
||||
TD.getPrefTypeAlignment(FPTy));
|
||||
SDValue CPIdx =
|
||||
DAG.getConstantPool(CA, TLI.getPointerTy(DAG.getDataLayout()),
|
||||
TD.getPrefTypeAlignment(FPTy));
|
||||
unsigned Alignment = cast<ConstantPoolSDNode>(CPIdx)->getAlignment();
|
||||
|
||||
// Get the offsets to the 0 and 1 element of the array so that we can
|
||||
|
Reference in New Issue
Block a user