diff options
Diffstat (limited to 'contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
| -rw-r--r-- | contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 29 | 
1 files changed, 2 insertions, 27 deletions
diff --git a/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index b970dc0e5f5f..e225ba8703b7 100644 --- a/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -1104,7 +1104,7 @@ SDValue SelectionDAG::getConstant(const ConstantInt &Val, const SDLoc &DL,    if (VT.isVector() && TLI->getTypeAction(*getContext(), EltVT) ==        TargetLowering::TypePromoteInteger) {     EltVT = TLI->getTypeToTransformTo(*getContext(), EltVT); -   APInt NewVal = Elt->getValue().zext(EltVT.getSizeInBits()); +   APInt NewVal = Elt->getValue().zextOrTrunc(EltVT.getSizeInBits());     Elt = ConstantInt::get(*getContext(), NewVal);    }    // In other cases the element type is illegal and needs to be expanded, for @@ -1130,7 +1130,7 @@ SDValue SelectionDAG::getConstant(const ConstantInt &Val, const SDLoc &DL,      SmallVector<SDValue, 2> EltParts;      for (unsigned i = 0; i < ViaVecNumElts / VT.getVectorNumElements(); ++i) {        EltParts.push_back(getConstant(NewVal.lshr(i * ViaEltSizeInBits) -                                           .trunc(ViaEltSizeInBits), DL, +                                           .zextOrTrunc(ViaEltSizeInBits), DL,                                       ViaEltVT, isT, isO));      } @@ -1629,31 +1629,6 @@ SDValue SelectionDAG::getCommutedVectorShuffle(const ShuffleVectorSDNode &SV) {    return getVectorShuffle(VT, SDLoc(&SV), Op1, Op0, MaskVec);  } -SDValue SelectionDAG::getConvertRndSat(EVT VT, const SDLoc &dl, SDValue Val, -                                       SDValue DTy, SDValue STy, SDValue Rnd, -                                       SDValue Sat, ISD::CvtCode Code) { -  // If the src and dest types are the same and the conversion is between -  // integer types of the same sign or two floats, no conversion is necessary. -  if (DTy == STy && -      (Code == ISD::CVT_UU || Code == ISD::CVT_SS || Code == ISD::CVT_FF)) -    return Val; - -  FoldingSetNodeID ID; -  SDValue Ops[] = { Val, DTy, STy, Rnd, Sat }; -  AddNodeIDNode(ID, ISD::CONVERT_RNDSAT, getVTList(VT), Ops); -  void* IP = nullptr; -  if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) -    return SDValue(E, 0); - -  auto *N = -      newSDNode<CvtRndSatSDNode>(VT, dl.getIROrder(), dl.getDebugLoc(), Code); -  createOperands(N, Ops); - -  CSEMap.InsertNode(N, IP); -  InsertNode(N); -  return SDValue(N, 0); -} -  SDValue SelectionDAG::getRegister(unsigned RegNo, EVT VT) {    FoldingSetNodeID ID;    AddNodeIDNode(ID, ISD::Register, getVTList(VT), None);  | 
