diff options
author | Justin Lebar <jlebar@google.com> | 2016-07-15 18:27:10 +0000 |
---|---|---|
committer | Justin Lebar <jlebar@google.com> | 2016-07-15 18:27:10 +0000 |
commit | 9c375817ac1766e537a857f33933f5ab7d7d2cdf (patch) | |
tree | 9327d759b73c37be2b04c67cb0c6be3692f6ccf4 /llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp | |
parent | 0af80cd6f0b0ae4770f76f9af3442651dd06fcc2 (diff) | |
download | bcm5719-llvm-9c375817ac1766e537a857f33933f5ab7d7d2cdf.tar.gz bcm5719-llvm-9c375817ac1766e537a857f33933f5ab7d7d2cdf.zip |
[SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and friends.
Summary:
Instead, we take a single flags arg (a bitset).
Also add a default 0 alignment, and change the order of arguments so the
alignment comes before the flags.
This greatly simplifies many callsites, and fixes a bug in
AMDGPUISelLowering, wherein the order of the args to getLoad was
inverted. It also greatly simplifies the process of adding another flag
to getLoad.
Reviewers: chandlerc, tstellarAMD
Subscribers: jholewinski, arsenm, jyknight, dsanders, nemanjai, llvm-commits
Differential Revision: http://reviews.llvm.org/D22249
llvm-svn: 275592
Diffstat (limited to 'llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp index e81f824b2f3..f28c89cd976 100644 --- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp @@ -1353,8 +1353,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI, SDValue srcAddr = DAG.getNode(ISD::ADD, dl, PtrVT, OutVals[OIdx], DAG.getConstant(curOffset, dl, PtrVT)); SDValue theVal = DAG.getLoad(elemtype, dl, tempChain, srcAddr, - MachinePointerInfo(), false, false, false, - PartAlign); + MachinePointerInfo(), PartAlign); if (elemtype.getSizeInBits() < 16) { theVal = DAG.getNode(ISD::ANY_EXTEND, dl, MVT::i16, theVal); } @@ -1886,10 +1885,9 @@ SDValue NVPTXTargetLowering::LowerLOADi1(SDValue Op, SelectionDAG &DAG) const { assert(LD->getExtensionType() == ISD::NON_EXTLOAD); assert(Node->getValueType(0) == MVT::i1 && "Custom lowering for i1 load only"); - SDValue newLD = - DAG.getLoad(MVT::i16, dl, LD->getChain(), LD->getBasePtr(), - LD->getPointerInfo(), LD->isVolatile(), LD->isNonTemporal(), - LD->isInvariant(), LD->getAlignment()); + SDValue newLD = DAG.getLoad(MVT::i16, dl, LD->getChain(), LD->getBasePtr(), + LD->getPointerInfo(), LD->getAlignment(), + LD->getMemOperand()->getFlags()); SDValue result = DAG.getNode(ISD::TRUNCATE, dl, MVT::i1, newLD); // The legalizer (the caller) is expecting two values from the legalized // load, so we build a MergeValues node for it. See ExpandUnalignedLoad() @@ -2016,13 +2014,10 @@ SDValue NVPTXTargetLowering::LowerSTOREi1(SDValue Op, SelectionDAG &DAG) const { SDValue Tmp2 = ST->getBasePtr(); SDValue Tmp3 = ST->getValue(); assert(Tmp3.getValueType() == MVT::i1 && "Custom lowering for i1 store only"); - unsigned Alignment = ST->getAlignment(); - bool isVolatile = ST->isVolatile(); - bool isNonTemporal = ST->isNonTemporal(); Tmp3 = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i16, Tmp3); - SDValue Result = DAG.getTruncStore(Tmp1, dl, Tmp3, Tmp2, - ST->getPointerInfo(), MVT::i8, isNonTemporal, - isVolatile, Alignment); + SDValue Result = + DAG.getTruncStore(Tmp1, dl, Tmp3, Tmp2, ST->getPointerInfo(), MVT::i8, + ST->getAlignment(), ST->getMemOperand()->getFlags()); return Result; } @@ -2186,12 +2181,10 @@ SDValue NVPTXTargetLowering::LowerFormalArguments( ISD::LoadExtType ExtOp = Ins[InsIdx].Flags.isSExt() ? ISD::SEXTLOAD : ISD::ZEXTLOAD; p = DAG.getExtLoad(ExtOp, dl, Ins[InsIdx].VT, Root, srcAddr, - MachinePointerInfo(srcValue), partVT, false, - false, false, partAlign); + MachinePointerInfo(srcValue), partVT, partAlign); } else { p = DAG.getLoad(partVT, dl, Root, srcAddr, - MachinePointerInfo(srcValue), false, false, false, - partAlign); + MachinePointerInfo(srcValue), partAlign); } if (p.getNode()) p.getNode()->setIROrder(idx + 1); @@ -2217,9 +2210,9 @@ SDValue NVPTXTargetLowering::LowerFormalArguments( Value *SrcValue = Constant::getNullValue(PointerType::get( EltVT.getTypeForEVT(F->getContext()), llvm::ADDRESS_SPACE_PARAM)); SDValue P = DAG.getLoad( - EltVT, dl, Root, Arg, MachinePointerInfo(SrcValue), false, false, - true, - DL.getABITypeAlignment(EltVT.getTypeForEVT(F->getContext()))); + EltVT, dl, Root, Arg, MachinePointerInfo(SrcValue), + DL.getABITypeAlignment(EltVT.getTypeForEVT(F->getContext())), + MachineMemOperand::MOInvariant); if (P.getNode()) P.getNode()->setIROrder(idx + 1); @@ -2234,9 +2227,9 @@ SDValue NVPTXTargetLowering::LowerFormalArguments( Value *SrcValue = Constant::getNullValue(PointerType::get( VecVT.getTypeForEVT(F->getContext()), llvm::ADDRESS_SPACE_PARAM)); SDValue P = DAG.getLoad( - VecVT, dl, Root, Arg, MachinePointerInfo(SrcValue), false, false, - true, - DL.getABITypeAlignment(VecVT.getTypeForEVT(F->getContext()))); + VecVT, dl, Root, Arg, MachinePointerInfo(SrcValue), + DL.getABITypeAlignment(VecVT.getTypeForEVT(F->getContext())), + MachineMemOperand::MOInvariant); if (P.getNode()) P.getNode()->setIROrder(idx + 1); @@ -2256,10 +2249,9 @@ SDValue NVPTXTargetLowering::LowerFormalArguments( } else { // V4 loads // We have at least 4 elements (<3 x Ty> expands to 4 elements) and - // the - // vector will be expanded to a power of 2 elements, so we know we can - // always round up to the next multiple of 4 when creating the vector - // loads. + // the vector will be expanded to a power of 2 elements, so we know we + // can always round up to the next multiple of 4 when creating the + // vector loads. // e.g. 4 elem => 1 ld.v4 // 6 elem => 2 ld.v4 // 8 elem => 2 ld.v4 @@ -2277,9 +2269,9 @@ SDValue NVPTXTargetLowering::LowerFormalArguments( SDValue SrcAddr = DAG.getNode(ISD::ADD, dl, PtrVT, Arg, DAG.getConstant(Ofst, dl, PtrVT)); SDValue P = DAG.getLoad( - VecVT, dl, Root, SrcAddr, MachinePointerInfo(SrcValue), false, - false, true, - DL.getABITypeAlignment(VecVT.getTypeForEVT(F->getContext()))); + VecVT, dl, Root, SrcAddr, MachinePointerInfo(SrcValue), + DL.getABITypeAlignment(VecVT.getTypeForEVT(F->getContext())), + MachineMemOperand::MOInvariant); if (P.getNode()) P.getNode()->setIROrder(idx + 1); @@ -2313,12 +2305,11 @@ SDValue NVPTXTargetLowering::LowerFormalArguments( ISD::SEXTLOAD : ISD::ZEXTLOAD; p = DAG.getExtLoad( ExtOp, dl, Ins[InsIdx].VT, Root, Arg, MachinePointerInfo(srcValue), - ObjectVT, false, false, false, + ObjectVT, DL.getABITypeAlignment(ObjectVT.getTypeForEVT(F->getContext()))); } else { p = DAG.getLoad( - Ins[InsIdx].VT, dl, Root, Arg, MachinePointerInfo(srcValue), false, - false, false, + Ins[InsIdx].VT, dl, Root, Arg, MachinePointerInfo(srcValue), DL.getABITypeAlignment(ObjectVT.getTypeForEVT(F->getContext()))); } if (p.getNode()) |