Lines Matching refs:dl

149                             const SDLoc &dl,  in makeLibCall()  argument
188 CLI.setDebugLoc(dl) in makeLibCall()
294 const SDLoc &dl, const SDValue OldLHS, in softenSetCCOperands() argument
297 return softenSetCCOperands(DAG, VT, NewLHS, NewRHS, CCCode, dl, OldLHS, in softenSetCCOperands()
304 const SDLoc &dl, const SDValue OldLHS, in softenSetCCOperands() argument
410 auto Call = makeLibCall(DAG, LC1, RetVT, Ops, CallOptions, dl, Chain); in softenSetCCOperands()
412 NewRHS = DAG.getConstant(0, dl, RetVT); in softenSetCCOperands()
426 SDValue Tmp = DAG.getSetCC(dl, SetCCVT, NewLHS, NewRHS, CCCode); in softenSetCCOperands()
427 auto Call2 = makeLibCall(DAG, LC2, RetVT, Ops, CallOptions, dl, Chain); in softenSetCCOperands()
431 NewLHS = DAG.getSetCC(dl, SetCCVT, Call2.first, NewRHS, CCCode); in softenSetCCOperands()
433 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Call.second, in softenSetCCOperands()
435 NewLHS = DAG.getNode(ShouldInvertCC ? ISD::AND : ISD::OR, dl, in softenSetCCOperands()
477 SDValue TargetLowering::expandIndirectJTBranch(const SDLoc &dl, SDValue Value, in expandIndirectJTBranch() argument
483 Chain = DAG.getJumpTableDebugInfo(JTI, Chain, dl); in expandIndirectJTBranch()
485 return DAG.getNode(ISD::BRIND, dl, MVT::Other, Chain, Addr); in expandIndirectJTBranch()
584 SDLoc dl(Op); in ShrinkDemandedOp() local
609 Op.getOpcode(), dl, SmallVT, in ShrinkDemandedOp()
610 DAG.getNode(ISD::TRUNCATE, dl, SmallVT, Op.getOperand(0)), in ShrinkDemandedOp()
611 DAG.getNode(ISD::TRUNCATE, dl, SmallVT, Op.getOperand(1))); in ShrinkDemandedOp()
613 SDValue Z = DAG.getNode(ISD::ANY_EXTEND, dl, VT, X); in ShrinkDemandedOp()
1120 SDLoc dl(Op); in SimplifyDemandedBits() local
1291 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, NewSrc, NewSub, in SimplifyDemandedBits()
1318 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, DemandedSrc, in SimplifyDemandedBits()
1382 SDValue NewOp = TLO.DAG.getVectorShuffle(VT, dl, Op0, Op1, ShuffleMask); in SimplifyDemandedBits()
1417 SDValue Xor = TLO.DAG.getNode(ISD::XOR, dl, VT, Op0.getOperand(0), Op1); in SimplifyDemandedBits()
1437 TLO.DAG.getNode(ISD::AND, dl, VT, Op0.getOperand(0), Op1); in SimplifyDemandedBits()
1439 TLO.DAG.getNode(ISD::INSERT_SUBVECTOR, dl, VT, NewAnd, in SimplifyDemandedBits()
1460 return TLO.CombineTo(Op, TLO.DAG.getConstant(0, dl, VT)); in SimplifyDemandedBits()
1478 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Op1); in SimplifyDemandedBits()
1530 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Op1); in SimplifyDemandedBits()
1549 if (SDValue C12 = TLO.DAG.FoldConstantArithmetic(ISD::OR, dl, VT, in SimplifyDemandedBits()
1551 SDValue MaskX = TLO.DAG.getNode(ISD::AND, dl, VT, X, C12); in SimplifyDemandedBits()
1552 SDValue MaskY = TLO.DAG.getNode(ISD::AND, dl, VT, Y, C2); in SimplifyDemandedBits()
1554 Op, TLO.DAG.getNode(ISD::OR, dl, VT, MaskX, MaskY)); in SimplifyDemandedBits()
1590 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::OR, dl, VT, Op0, Op1)); in SimplifyDemandedBits()
1601 TLO.DAG.getConstant(~C->getAPIntValue() & DemandedBits, dl, VT); in SimplifyDemandedBits()
1602 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::AND, dl, VT, Op0, ANDC)); in SimplifyDemandedBits()
1610 SDValue New = TLO.DAG.getNOT(dl, Op0, VT); in SimplifyDemandedBits()
1632 SDValue Not = TLO.DAG.getNOT(dl, Op0.getOperand(0), VT); in SimplifyDemandedBits()
1633 return TLO.CombineTo(Op, TLO.DAG.getNode(Op0Opcode, dl, VT, Not, in SimplifyDemandedBits()
1655 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Op1); in SimplifyDemandedBits()
1758 SDValue NewSA = TLO.DAG.getConstant(Diff, dl, ShiftVT); in SimplifyDemandedBits()
1760 Op, TLO.DAG.getNode(Opc, dl, VT, Op0.getOperand(0), NewSA)); in SimplifyDemandedBits()
1775 ISD::SHL, dl, InnerVT, InnerOp, in SimplifyDemandedBits()
1776 TLO.DAG.getShiftAmountConstant(ShAmt, InnerVT, dl)); in SimplifyDemandedBits()
1778 Op, TLO.DAG.getNode(ISD::ANY_EXTEND, dl, VT, NarrowShl)); in SimplifyDemandedBits()
1797 TLO.DAG.getConstant(ShAmt - InnerShAmt, dl, ShiftVT); in SimplifyDemandedBits()
1798 SDValue NewExt = TLO.DAG.getNode(ISD::ANY_EXTEND, dl, VT, in SimplifyDemandedBits()
1801 Op, TLO.DAG.getNode(ISD::SHL, dl, VT, NewExt, NewSA)); in SimplifyDemandedBits()
1830 SDValue NewOp = TLO.DAG.getNode(ISD::SHL, dl, VT, DemandedOp0, Op1); in SimplifyDemandedBits()
1854 ISD::SHL, dl, SmallVT, in SimplifyDemandedBits()
1855 TLO.DAG.getNode(ISD::TRUNCATE, dl, SmallVT, Op.getOperand(0)), in SimplifyDemandedBits()
1856 TLO.DAG.getShiftAmountConstant(ShAmt, SmallVT, dl)); in SimplifyDemandedBits()
1858 Op, TLO.DAG.getNode(ISD::ANY_EXTEND, dl, VT, NarrowShl)); in SimplifyDemandedBits()
1882 SDValue NewOp = TLO.DAG.getNode(ISD::TRUNCATE, dl, HalfVT, Op0); in SimplifyDemandedBits()
1884 TLO.DAG.getShiftAmountConstant(ShAmt, HalfVT, dl); in SimplifyDemandedBits()
1885 SDValue NewShift = TLO.DAG.getNode(ISD::SHL, dl, HalfVT, NewOp, in SimplifyDemandedBits()
1888 TLO.DAG.getNode(ISD::ZERO_EXTEND, dl, VT, NewShift); in SimplifyDemandedBits()
1954 SDValue NewSA = TLO.DAG.getConstant(Diff, dl, ShiftVT); in SimplifyDemandedBits()
1956 Op, TLO.DAG.getNode(Opc, dl, VT, Op0.getOperand(0), NewSA)); in SimplifyDemandedBits()
1979 SDValue NewOp = TLO.DAG.getNode(ISD::TRUNCATE, dl, HalfVT, Op0); in SimplifyDemandedBits()
1981 TLO.DAG.getShiftAmountConstant(ShAmt, HalfVT, dl); in SimplifyDemandedBits()
1983 TLO.DAG.getNode(ISD::SRL, dl, HalfVT, NewOp, NewShiftAmt); in SimplifyDemandedBits()
1985 Op, TLO.DAG.getNode(ISD::ZERO_EXTEND, dl, VT, NewShift)); in SimplifyDemandedBits()
2003 SDValue NewOp = TLO.DAG.getNode(ISD::SRL, dl, VT, DemandedOp0, Op1); in SimplifyDemandedBits()
2037 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::SRL, dl, VT, Op0, Op1)); in SimplifyDemandedBits()
2060 Op, TLO.DAG.getNode(ISD::SIGN_EXTEND_INREG, dl, VT, in SimplifyDemandedBits()
2099 Op, TLO.DAG.getNode(ISD::SRL, dl, VT, Op0, Op1, Flags)); in SimplifyDemandedBits()
2105 SDValue NewSA = TLO.DAG.getConstant(BitWidth - 1 - Log2, dl, ShiftVT); in SimplifyDemandedBits()
2106 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::SRL, dl, VT, Op0, NewSA)); in SimplifyDemandedBits()
2118 SDValue NewOp = TLO.DAG.getNode(ISD::SRA, dl, VT, DemandedOp0, Op1); in SimplifyDemandedBits()
2177 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, DemandedOp0, in SimplifyDemandedBits()
2221 Op1 = TLO.DAG.getConstant(IsROTL ? Amt : RevAmt, dl, Op1.getValueType()); in SimplifyDemandedBits()
2222 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::SHL, dl, VT, Op0, Op1)); in SimplifyDemandedBits()
2226 Op1 = TLO.DAG.getConstant(IsROTL ? RevAmt : Amt, dl, Op1.getValueType()); in SimplifyDemandedBits()
2227 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::SRL, dl, VT, Op0, Op1)); in SimplifyDemandedBits()
2323 SDValue ShAmt = TLO.DAG.getShiftAmountConstant(ShiftAmount, VT, dl); in SimplifyDemandedBits()
2324 SDValue NewOp = TLO.DAG.getNode(ShiftOpcode, dl, VT, Src, ShAmt); in SimplifyDemandedBits()
2342 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::PARITY, dl, VT, in SimplifyDemandedBits()
2364 TLO.DAG.getShiftAmountConstant(BitWidth - ExVTBits, VT, dl); in SimplifyDemandedBits()
2366 TLO.DAG.getNode(ISD::SHL, dl, VT, Op0, ShiftAmt)); in SimplifyDemandedBits()
2389 return TLO.CombineTo(Op, TLO.DAG.getZeroExtendInReg(Op0, dl, ExVT)); in SimplifyDemandedBits()
2441 return TLO.CombineTo(Op, TLO.DAG.getNode(Opc, dl, VT, Src)); in SimplifyDemandedBits()
2461 return TLO.CombineTo(Op, TLO.DAG.getNode(Op.getOpcode(), dl, VT, NewSrc)); in SimplifyDemandedBits()
2497 return TLO.CombineTo(Op, TLO.DAG.getNode(Opc, dl, VT, Src)); in SimplifyDemandedBits()
2517 return TLO.CombineTo(Op, TLO.DAG.getNode(Opc, dl, VT, Src, Flags)); in SimplifyDemandedBits()
2524 return TLO.CombineTo(Op, TLO.DAG.getNode(Op.getOpcode(), dl, VT, NewSrc)); in SimplifyDemandedBits()
2555 return TLO.CombineTo(Op, TLO.DAG.getNode(Op.getOpcode(), dl, VT, NewSrc)); in SimplifyDemandedBits()
2573 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::TRUNCATE, dl, VT, NewSrc)); in SimplifyDemandedBits()
2613 SDValue NewShAmt = TLO.DAG.getShiftAmountConstant(ShVal, VT, dl); in SimplifyDemandedBits()
2615 TLO.DAG.getNode(ISD::TRUNCATE, dl, VT, Src.getOperand(0)); in SimplifyDemandedBits()
2617 Op, TLO.DAG.getNode(ISD::SRL, dl, VT, NewTrunc, NewShAmt)); in SimplifyDemandedBits()
2669 TLO.DAG.getNode(Op.getOpcode(), dl, VT, DemandedSrc, Idx); in SimplifyDemandedBits()
2699 SDValue Sign = TLO.DAG.getNode(ISD::FGETSIGN, dl, Ty, Src); in SimplifyDemandedBits()
2702 Sign = TLO.DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Sign); in SimplifyDemandedBits()
2704 SDValue ShAmt = TLO.DAG.getConstant(ShVal, dl, VT); in SimplifyDemandedBits()
2706 TLO.DAG.getNode(ISD::SHL, dl, VT, Sign, ShAmt)); in SimplifyDemandedBits()
2789 SDValue AmtC = TLO.DAG.getShiftAmountConstant(CTZ, VT, dl); in SimplifyDemandedBits()
2790 SDValue Shl = TLO.DAG.getNode(ISD::SHL, dl, VT, Op.getOperand(0), AmtC); in SimplifyDemandedBits()
2798 SDValue One = TLO.DAG.getConstant(1, dl, VT); in SimplifyDemandedBits()
2799 SDValue And1 = TLO.DAG.getNode(ISD::AND, dl, VT, Op.getOperand(0), One); in SimplifyDemandedBits()
2851 TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Op1, Flags); in SimplifyDemandedBits()
2865 SDValue Neg1 = TLO.DAG.getAllOnesConstant(dl, VT); in SimplifyDemandedBits()
2870 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Neg1, Flags); in SimplifyDemandedBits()
2895 SDValue ShlAmtC = TLO.DAG.getShiftAmountConstant(ShlAmt, VT, dl); in SimplifyDemandedBits()
2896 SDValue Shl = TLO.DAG.getNode(ISD::SHL, dl, VT, X, ShlAmtC); in SimplifyDemandedBits()
2897 SDValue Res = TLO.DAG.getNode(NT, dl, VT, Y, Shl); in SimplifyDemandedBits()
2958 return TLO.CombineTo(Op, TLO.DAG.getConstant(Known.One, dl, VT)); in SimplifyDemandedBits()
2963 APFloat(TLO.DAG.EVTToAPFloatSemantics(VT), Known.One), dl, VT)); in SimplifyDemandedBits()
4275 ISD::CondCode Cond, const SDLoc &dl, in simplifySetCCWithCTPOP() argument
4306 SDValue NegOne = DAG.getAllOnesConstant(dl, CTVT); in simplifySetCCWithCTPOP()
4309 SDValue Add = DAG.getNode(ISD::ADD, dl, CTVT, Result, NegOne); in simplifySetCCWithCTPOP()
4310 Result = DAG.getNode(ISD::AND, dl, CTVT, Result, Add); in simplifySetCCWithCTPOP()
4313 return DAG.getSetCC(dl, VT, Result, DAG.getConstant(0, dl, CTVT), CC); in simplifySetCCWithCTPOP()
4322 SDValue Zero = DAG.getConstant(0, dl, CTVT); in simplifySetCCWithCTPOP()
4323 SDValue NegOne = DAG.getAllOnesConstant(dl, CTVT); in simplifySetCCWithCTPOP()
4325 SDValue Add = DAG.getNode(ISD::ADD, dl, CTVT, CTOp, NegOne); in simplifySetCCWithCTPOP()
4332 SDValue And = DAG.getNode(ISD::AND, dl, CTVT, CTOp, Add); in simplifySetCCWithCTPOP()
4333 SDValue RHS = DAG.getSetCC(dl, VT, And, Zero, Cond); in simplifySetCCWithCTPOP()
4339 SDValue Xor = DAG.getNode(ISD::XOR, dl, CTVT, CTOp, Add); in simplifySetCCWithCTPOP()
4341 return DAG.getSetCC(dl, VT, Xor, Add, CmpCond); in simplifySetCCWithCTPOP()
4348 ISD::CondCode Cond, const SDLoc &dl, in foldSetCCWithRotate() argument
4367 return DAG.getSetCC(dl, VT, R, N1, Cond); in foldSetCCWithRotate()
4378 SDValue NewOr = DAG.getNode(ISD::OR, dl, OpVT, R, N0.getOperand(1)); in foldSetCCWithRotate()
4379 return DAG.getSetCC(dl, VT, NewOr, N1, Cond); in foldSetCCWithRotate()
4382 SDValue NewOr = DAG.getNode(ISD::OR, dl, OpVT, R, N0.getOperand(0)); in foldSetCCWithRotate()
4383 return DAG.getSetCC(dl, VT, NewOr, N1, Cond); in foldSetCCWithRotate()
4391 ISD::CondCode Cond, const SDLoc &dl, in foldSetCCWithFunnelShift() argument
4440 SDValue NewShAmt = DAG.getConstant(ShAmt, dl, ShAmtVT); in foldSetCCWithFunnelShift()
4441 SDValue Shift = DAG.getNode(ISD::SHL, dl, OpVT, Y, NewShAmt); in foldSetCCWithFunnelShift()
4442 SDValue NewOr = DAG.getNode(ISD::OR, dl, OpVT, Shift, X); in foldSetCCWithFunnelShift()
4443 return DAG.getSetCC(dl, VT, NewOr, N1, Cond); in foldSetCCWithFunnelShift()
4447 SDValue NewShAmt = DAG.getConstant(BitWidth - ShAmt, dl, ShAmtVT); in foldSetCCWithFunnelShift()
4448 SDValue Shift = DAG.getNode(ISD::SRL, dl, OpVT, Y, NewShAmt); in foldSetCCWithFunnelShift()
4449 SDValue NewOr = DAG.getNode(ISD::OR, dl, OpVT, Shift, X); in foldSetCCWithFunnelShift()
4450 return DAG.getSetCC(dl, VT, NewOr, N1, Cond); in foldSetCCWithFunnelShift()
4461 const SDLoc &dl) const { in SimplifySetCC()
4468 if (SDValue Fold = DAG.FoldSetCC(VT, N0, N1, Cond, dl)) in SimplifySetCC()
4484 return DAG.getSetCC(dl, VT, N1, N0, SwappedCC); in SimplifySetCC()
4495 return DAG.getSetCC(dl, VT, N1, N0, SwappedCC); in SimplifySetCC()
4497 if (SDValue V = foldSetCCWithRotate(VT, N0, N1, Cond, dl, DAG)) in SimplifySetCC()
4500 if (SDValue V = foldSetCCWithFunnelShift(VT, N0, N1, Cond, dl, DAG)) in SimplifySetCC()
4507 if (SDValue V = simplifySetCCWithCTPOP(*this, VT, N0, C1, Cond, dl, DAG)) in SimplifySetCC()
4521 SDValue IsXZero = DAG.getSetCC(dl, VT, N0.getOperand(0), N1, Cond); in SimplifySetCC()
4522 SDValue IsYZero = DAG.getSetCC(dl, VT, N0.getOperand(1), N1, Cond); in SimplifySetCC()
4524 return DAG.getNode(LogicOp, dl, VT, IsXZero, IsYZero); in SimplifySetCC()
4545 SDValue Zero = DAG.getConstant(0, dl, N0.getValueType()); in SimplifySetCC()
4546 return DAG.getSetCC(dl, VT, N0.getOperand(0).getOperand(0), Zero, in SimplifySetCC()
4602 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, dl, MinVT, PreExt); in SimplifySetCC()
4605 return DAG.getSetCC(dl, VT, Trunc, DAG.getConstant(0, dl, MVT::i1), in SimplifySetCC()
4607 SDValue C = DAG.getConstant(C1.trunc(MinBits), dl, MinVT); in SimplifySetCC()
4608 return DAG.getSetCC(dl, VT, Trunc, C, Cond); in SimplifySetCC()
4637 return DAG.getSetCC(dl, VT, TopSetCC.getOperand(0), in SimplifySetCC()
4704 Ptr = DAG.getObjectPtrOffset(dl, Ptr, TypeSize::getFixed(bestOffset)); in SimplifySetCC()
4706 DAG.getLoad(newVT, dl, Lod->getChain(), Ptr, in SimplifySetCC()
4710 DAG.getNode(ISD::AND, dl, newVT, NewLoad, in SimplifySetCC()
4711 DAG.getConstant(bestMask.trunc(bestWidth), dl, newVT)); in SimplifySetCC()
4712 return DAG.getSetCC(dl, VT, And, DAG.getConstant(0LL, dl, newVT), Cond); in SimplifySetCC()
4728 return DAG.getConstant(0, dl, VT); in SimplifySetCC()
4732 return DAG.getConstant(1, dl, VT); in SimplifySetCC()
4736 return DAG.getConstant(C1.isNegative(), dl, VT); in SimplifySetCC()
4740 return DAG.getConstant(C1.isNonNegative(), dl, VT); in SimplifySetCC()
4759 SDValue NewConst = DAG.getConstant(C1.trunc(InSize), dl, newVT); in SimplifySetCC()
4761 SDValue NewSetCC = DAG.getSetCC(dl, NewSetCCVT, N0.getOperand(0), in SimplifySetCC()
4763 return DAG.getBoolExtOrTrunc(NewSetCC, dl, VT, N0.getValueType()); in SimplifySetCC()
4782 return DAG.getBoolConstant(Cond == ISD::SETNE, dl, VT, OpVT); in SimplifySetCC()
4787 SDValue ZextOp = DAG.getNode(ISD::AND, dl, ExtDstTy, N0.getOperand(0), in SimplifySetCC()
4788 DAG.getConstant(Imm, dl, ExtDstTy)); in SimplifySetCC()
4792 return DAG.getSetCC(dl, VT, ZextOp, in SimplifySetCC()
4793 DAG.getConstant(C1 & Imm, dl, ExtDstTy), Cond); in SimplifySetCC()
4806 return DAG.getNode(ISD::TRUNCATE, dl, VT, N0); in SimplifySetCC()
4813 return DAG.getSetCC(dl, VT, N0.getOperand(0), N0.getOperand(1), CC); in SimplifySetCC()
4836 Val = DAG.getNode(ISD::AND, dl, N0.getValueType(), in SimplifySetCC()
4841 return DAG.getSetCC(dl, VT, Val, N1, in SimplifySetCC()
4862 return DAG.getSetCC(dl, VT, XorLHS, XorRHS, Cond); in SimplifySetCC()
4868 Op0 = DAG.getNode(ISD::AND, dl, VT, in SimplifySetCC()
4869 DAG.getNode(ISD::TRUNCATE, dl, VT, Op0.getOperand(0)), in SimplifySetCC()
4870 DAG.getConstant(1, dl, VT)); in SimplifySetCC()
4872 Op0 = DAG.getNode(ISD::AND, dl, VT, in SimplifySetCC()
4873 DAG.getNode(ISD::ANY_EXTEND, dl, VT, Op0.getOperand(0)), in SimplifySetCC()
4874 DAG.getConstant(1, dl, VT)); in SimplifySetCC()
4876 return DAG.getSetCC(dl, VT, Op0, in SimplifySetCC()
4877 DAG.getConstant(0, dl, Op0.getValueType()), in SimplifySetCC()
4882 return DAG.getSetCC(dl, VT, Op0, in SimplifySetCC()
4883 DAG.getConstant(0, dl, Op0.getValueType()), in SimplifySetCC()
4897 return DAG.getSetCC(dl, VT, N0.getOperand(0), N1, Cond); in SimplifySetCC()
4906 return DAG.getSetCC(dl, VT, N0.getOperand(0), in SimplifySetCC()
4907 DAG.getConstant(0, dl, OpVT), in SimplifySetCC()
4912 optimizeSetCCOfSignedTruncationCheck(VT, N0, N1, Cond, DCI, dl)) in SimplifySetCC()
4935 return DAG.getBoolConstant(true, dl, VT, OpVT); in SimplifySetCC()
4945 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4946 DAG.getConstant(C, dl, N1.getValueType()), in SimplifySetCC()
4955 return DAG.getBoolConstant(true, dl, VT, OpVT); in SimplifySetCC()
4965 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4966 DAG.getConstant(C, dl, N1.getValueType()), in SimplifySetCC()
4974 return DAG.getBoolConstant(false, dl, VT, OpVT); // X < MIN --> false in SimplifySetCC()
4980 return DAG.getSetCC(dl, VT, N0, N1, ISD::SETNE); in SimplifySetCC()
4984 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4985 DAG.getConstant(MinVal, dl, N0.getValueType()), in SimplifySetCC()
4992 return DAG.getBoolConstant(false, dl, VT, OpVT); // X > MAX --> false in SimplifySetCC()
4998 return DAG.getSetCC(dl, VT, N0, N1, ISD::SETNE); in SimplifySetCC()
5002 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
5003 DAG.getConstant(MaxVal, dl, N0.getValueType()), in SimplifySetCC()
5012 VT, N0, N1, Cond, DCI, dl)) in SimplifySetCC()
5054 SDValue LoBits = DAG.getConstant(~HiBits, dl, OpVT); in SimplifySetCC()
5055 SDValue HiMask = DAG.getNode(ISD::AND, dl, OpVT, Hi, LoBits); in SimplifySetCC()
5057 DAG.getNode(CmpZero ? ISD::OR : ISD::AND, dl, OpVT, Lo, HiMask); in SimplifySetCC()
5058 SDValue NewN1 = CmpZero ? DAG.getConstant(0, dl, OpVT) : LoBits; in SimplifySetCC()
5059 return DAG.getSetCC(dl, VT, NewN0, NewN1, Cond); in SimplifySetCC()
5070 return MergeConcat(DAG.getNode(N0.getOpcode(), dl, OpVT, Lo0, Lo1), in SimplifySetCC()
5071 DAG.getNode(N0.getOpcode(), dl, OpVT, Hi0, Hi1)); in SimplifySetCC()
5085 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
5086 DAG.getConstant(0, dl, N1.getValueType()), in SimplifySetCC()
5093 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
5094 DAG.getAllOnesConstant(dl, N1.getValueType()), in SimplifySetCC()
5122 ISD::TRUNCATE, dl, VT, in SimplifySetCC()
5123 DAG.getNode(ISD::SRL, dl, ShValTy, N0, in SimplifySetCC()
5124 DAG.getShiftAmountConstant(ShCt, ShValTy, dl))); in SimplifySetCC()
5133 ISD::TRUNCATE, dl, VT, in SimplifySetCC()
5134 DAG.getNode(ISD::SRL, dl, ShValTy, N0, in SimplifySetCC()
5135 DAG.getShiftAmountConstant(ShCt, ShValTy, dl))); in SimplifySetCC()
5152 ISD::SRL, dl, ShValTy, N0.getOperand(0), in SimplifySetCC()
5153 DAG.getShiftAmountConstant(ShiftBits, ShValTy, dl)); in SimplifySetCC()
5154 SDValue CmpRHS = DAG.getConstant(C1.lshr(ShiftBits), dl, ShValTy); in SimplifySetCC()
5155 return DAG.getSetCC(dl, VT, Shift, CmpRHS, Cond); in SimplifySetCC()
5181 DAG.getNode(ISD::SRL, dl, ShValTy, N0, in SimplifySetCC()
5182 DAG.getShiftAmountConstant(ShiftBits, ShValTy, dl)); in SimplifySetCC()
5183 SDValue CmpRHS = DAG.getConstant(NewC, dl, ShValTy); in SimplifySetCC()
5184 return DAG.getSetCC(dl, VT, Shift, CmpRHS, NewCond); in SimplifySetCC()
5199 return DAG.getSetCC(dl, VT, N0, N0, Cond); in SimplifySetCC()
5206 SDValue NegN1 = DAG.getNode(ISD::FNEG, dl, N0.getValueType(), N1); in SimplifySetCC()
5207 return DAG.getSetCC(dl, VT, N0.getOperand(0), NegN1, SwapCond); in SimplifySetCC()
5221 return DAG.getNode(ISD::IS_FPCLASS, dl, VT, Op, in SimplifySetCC()
5222 DAG.getTargetConstant(Flag, dl, MVT::i32)); in SimplifySetCC()
5244 return DAG.getSetCC(dl, VT, N0, N1, NewCond); in SimplifySetCC()
5258 return DAG.getBoolConstant(EqTrue, dl, VT, OpVT); in SimplifySetCC()
5260 return DAG.getBoolConstant(EqTrue, dl, VT, OpVT); in SimplifySetCC()
5267 return DAG.getSetCC(dl, VT, N0, N1, NewCond); in SimplifySetCC()
5278 return DAG.getSetCC(dl, VT, N1.getOperand(0), N0.getOperand(0), Cond); in SimplifySetCC()
5282 SDValue Not = DAG.getNOT(dl, N1, OpVT); in SimplifySetCC()
5283 return DAG.getSetCC(dl, VT, Not, N0.getOperand(0), Cond); in SimplifySetCC()
5295 return DAG.getSetCC(dl, VT, N0.getOperand(1), N1.getOperand(1), Cond); in SimplifySetCC()
5297 return DAG.getSetCC(dl, VT, N0.getOperand(0), N1.getOperand(0), Cond); in SimplifySetCC()
5301 return DAG.getSetCC(dl, VT, N0.getOperand(1), N1.getOperand(0), in SimplifySetCC()
5304 return DAG.getSetCC(dl, VT, N0.getOperand(0), N1.getOperand(1), in SimplifySetCC()
5318 dl, VT, N0.getOperand(0), in SimplifySetCC()
5320 dl, N0.getValueType()), in SimplifySetCC()
5326 dl, VT, N0.getOperand(0), in SimplifySetCC()
5328 dl, N0.getValueType()), in SimplifySetCC()
5336 dl, VT, N0.getOperand(1), in SimplifySetCC()
5338 dl, N0.getValueType()), in SimplifySetCC()
5351 if (SDValue V = foldSetCCWithBinOp(VT, N0, N1, Cond, dl, DCI)) in SimplifySetCC()
5357 if (SDValue V = foldSetCCWithBinOp(VT, N1, N0, Cond, dl, DCI)) in SimplifySetCC()
5360 if (SDValue V = foldSetCCWithAnd(VT, N0, N1, Cond, dl, DCI)) in SimplifySetCC()
5371 if (SDValue Folded = buildUREMEqFold(VT, N0, N1, Cond, DCI, dl)) in SimplifySetCC()
5374 if (SDValue Folded = buildSREMEqFold(VT, N0, N1, Cond, DCI, dl)) in SimplifySetCC()
5386 Temp = DAG.getNode(ISD::XOR, dl, OpVT, N0, N1); in SimplifySetCC()
5387 N0 = DAG.getNOT(dl, Temp, OpVT); in SimplifySetCC()
5392 N0 = DAG.getNode(ISD::XOR, dl, OpVT, N0, N1); in SimplifySetCC()
5396 Temp = DAG.getNOT(dl, N0, OpVT); in SimplifySetCC()
5397 N0 = DAG.getNode(ISD::AND, dl, OpVT, N1, Temp); in SimplifySetCC()
5403 Temp = DAG.getNOT(dl, N1, OpVT); in SimplifySetCC()
5404 N0 = DAG.getNode(ISD::AND, dl, OpVT, N0, Temp); in SimplifySetCC()
5410 Temp = DAG.getNOT(dl, N0, OpVT); in SimplifySetCC()
5411 N0 = DAG.getNode(ISD::OR, dl, OpVT, N1, Temp); in SimplifySetCC()
5417 Temp = DAG.getNOT(dl, N1, OpVT); in SimplifySetCC()
5418 N0 = DAG.getNode(ISD::OR, dl, OpVT, N0, Temp); in SimplifySetCC()
5426 N0 = DAG.getNode(ExtendCode, dl, VT, N0); in SimplifySetCC()
6097 const SDLoc &dl, SelectionDAG &DAG, in BuildExactSDIV() argument
6119 Shifts.push_back(DAG.getConstant(Shift, dl, ShSVT)); in BuildExactSDIV()
6120 Factors.push_back(DAG.getConstant(Factor, dl, SVT)); in BuildExactSDIV()
6130 Shift = DAG.getBuildVector(ShVT, dl, Shifts); in BuildExactSDIV()
6131 Factor = DAG.getBuildVector(VT, dl, Factors); in BuildExactSDIV()
6136 Shift = DAG.getSplatVector(ShVT, dl, Shifts[0]); in BuildExactSDIV()
6137 Factor = DAG.getSplatVector(VT, dl, Factors[0]); in BuildExactSDIV()
6148 Res = DAG.getNode(ISD::SRA, dl, VT, Res, Shift, Flags); in BuildExactSDIV()
6152 return DAG.getNode(ISD::MUL, dl, VT, Res, Factor); in BuildExactSDIV()
6159 const SDLoc &dl, SelectionDAG &DAG, in BuildExactUDIV() argument
6180 Shifts.push_back(DAG.getConstant(Shift, dl, ShSVT)); in BuildExactUDIV()
6181 Factors.push_back(DAG.getConstant(Factor, dl, SVT)); in BuildExactUDIV()
6193 Shift = DAG.getBuildVector(ShVT, dl, Shifts); in BuildExactUDIV()
6194 Factor = DAG.getBuildVector(VT, dl, Factors); in BuildExactUDIV()
6199 Shift = DAG.getSplatVector(ShVT, dl, Shifts[0]); in BuildExactUDIV()
6200 Factor = DAG.getSplatVector(VT, dl, Factors[0]); in BuildExactUDIV()
6211 Res = DAG.getNode(ISD::SRL, dl, VT, Res, Shift, Flags); in BuildExactUDIV()
6215 return DAG.getNode(ISD::MUL, dl, VT, Res, Factor); in BuildExactUDIV()
6289 SDLoc dl(N); in BuildSDIV() local
6317 return BuildExactSDIV(*this, N, dl, DAG, Created); in BuildSDIV()
6344 MagicFactors.push_back(DAG.getConstant(magics.Magic, dl, SVT)); in BuildSDIV()
6345 Factors.push_back(DAG.getConstant(NumeratorFactor, dl, SVT)); in BuildSDIV()
6346 Shifts.push_back(DAG.getConstant(magics.ShiftAmount, dl, ShSVT)); in BuildSDIV()
6347 ShiftMasks.push_back(DAG.getConstant(ShiftMask, dl, SVT)); in BuildSDIV()
6360 MagicFactor = DAG.getBuildVector(VT, dl, MagicFactors); in BuildSDIV()
6361 Factor = DAG.getBuildVector(VT, dl, Factors); in BuildSDIV()
6362 Shift = DAG.getBuildVector(ShVT, dl, Shifts); in BuildSDIV()
6363 ShiftMask = DAG.getBuildVector(VT, dl, ShiftMasks); in BuildSDIV()
6369 MagicFactor = DAG.getSplatVector(VT, dl, MagicFactors[0]); in BuildSDIV()
6370 Factor = DAG.getSplatVector(VT, dl, Factors[0]); in BuildSDIV()
6371 Shift = DAG.getSplatVector(ShVT, dl, Shifts[0]); in BuildSDIV()
6372 ShiftMask = DAG.getSplatVector(VT, dl, ShiftMasks[0]); in BuildSDIV()
6387 X = DAG.getNode(ISD::SIGN_EXTEND, dl, MulVT, X); in BuildSDIV()
6388 Y = DAG.getNode(ISD::SIGN_EXTEND, dl, MulVT, Y); in BuildSDIV()
6389 Y = DAG.getNode(ISD::MUL, dl, MulVT, X, Y); in BuildSDIV()
6390 Y = DAG.getNode(ISD::SRL, dl, MulVT, Y, in BuildSDIV()
6391 DAG.getShiftAmountConstant(EltBits, MulVT, dl)); in BuildSDIV()
6392 return DAG.getNode(ISD::TRUNCATE, dl, VT, Y); in BuildSDIV()
6396 return DAG.getNode(ISD::MULHS, dl, VT, X, Y); in BuildSDIV()
6399 DAG.getNode(ISD::SMUL_LOHI, dl, DAG.getVTList(VT, VT), X, Y); in BuildSDIV()
6409 X = DAG.getNode(ISD::SIGN_EXTEND, dl, WideVT, X); in BuildSDIV()
6410 Y = DAG.getNode(ISD::SIGN_EXTEND, dl, WideVT, Y); in BuildSDIV()
6411 Y = DAG.getNode(ISD::MUL, dl, WideVT, X, Y); in BuildSDIV()
6412 Y = DAG.getNode(ISD::SRL, dl, WideVT, Y, in BuildSDIV()
6413 DAG.getShiftAmountConstant(EltBits, WideVT, dl)); in BuildSDIV()
6414 return DAG.getNode(ISD::TRUNCATE, dl, VT, Y); in BuildSDIV()
6426 Factor = DAG.getNode(ISD::MUL, dl, VT, N0, Factor); in BuildSDIV()
6428 Q = DAG.getNode(ISD::ADD, dl, VT, Q, Factor); in BuildSDIV()
6432 Q = DAG.getNode(ISD::SRA, dl, VT, Q, Shift); in BuildSDIV()
6436 SDValue SignShift = DAG.getConstant(EltBits - 1, dl, ShVT); in BuildSDIV()
6437 SDValue T = DAG.getNode(ISD::SRL, dl, VT, Q, SignShift); in BuildSDIV()
6439 T = DAG.getNode(ISD::AND, dl, VT, T, ShiftMask); in BuildSDIV()
6441 return DAG.getNode(ISD::ADD, dl, VT, Q, T); in BuildSDIV()
6451 SDLoc dl(N); in BuildUDIV() local
6479 return BuildExactUDIV(*this, N, dl, DAG, Created); in BuildUDIV()
6508 MagicFactor = DAG.getConstant(magics.Magic, dl, SVT); in BuildUDIV()
6516 PreShift = DAG.getConstant(magics.PreShift, dl, ShSVT); in BuildUDIV()
6517 PostShift = DAG.getConstant(magics.PostShift, dl, ShSVT); in BuildUDIV()
6521 dl, SVT); in BuildUDIV()
6540 PreShift = DAG.getBuildVector(ShVT, dl, PreShifts); in BuildUDIV()
6541 MagicFactor = DAG.getBuildVector(VT, dl, MagicFactors); in BuildUDIV()
6542 NPQFactor = DAG.getBuildVector(VT, dl, NPQFactors); in BuildUDIV()
6543 PostShift = DAG.getBuildVector(ShVT, dl, PostShifts); in BuildUDIV()
6548 PreShift = DAG.getSplatVector(ShVT, dl, PreShifts[0]); in BuildUDIV()
6549 MagicFactor = DAG.getSplatVector(VT, dl, MagicFactors[0]); in BuildUDIV()
6550 NPQFactor = DAG.getSplatVector(VT, dl, NPQFactors[0]); in BuildUDIV()
6551 PostShift = DAG.getSplatVector(ShVT, dl, PostShifts[0]); in BuildUDIV()
6561 Q = DAG.getNode(ISD::SRL, dl, VT, Q, PreShift); in BuildUDIV()
6570 X = DAG.getNode(ISD::ZERO_EXTEND, dl, MulVT, X); in BuildUDIV()
6571 Y = DAG.getNode(ISD::ZERO_EXTEND, dl, MulVT, Y); in BuildUDIV()
6572 Y = DAG.getNode(ISD::MUL, dl, MulVT, X, Y); in BuildUDIV()
6573 Y = DAG.getNode(ISD::SRL, dl, MulVT, Y, in BuildUDIV()
6574 DAG.getShiftAmountConstant(EltBits, MulVT, dl)); in BuildUDIV()
6575 return DAG.getNode(ISD::TRUNCATE, dl, VT, Y); in BuildUDIV()
6579 return DAG.getNode(ISD::MULHU, dl, VT, X, Y); in BuildUDIV()
6582 DAG.getNode(ISD::UMUL_LOHI, dl, DAG.getVTList(VT, VT), X, Y); in BuildUDIV()
6592 X = DAG.getNode(ISD::ZERO_EXTEND, dl, WideVT, X); in BuildUDIV()
6593 Y = DAG.getNode(ISD::ZERO_EXTEND, dl, WideVT, Y); in BuildUDIV()
6594 Y = DAG.getNode(ISD::MUL, dl, WideVT, X, Y); in BuildUDIV()
6595 Y = DAG.getNode(ISD::SRL, dl, WideVT, Y, in BuildUDIV()
6596 DAG.getShiftAmountConstant(EltBits, WideVT, dl)); in BuildUDIV()
6597 return DAG.getNode(ISD::TRUNCATE, dl, VT, Y); in BuildUDIV()
6610 SDValue NPQ = DAG.getNode(ISD::SUB, dl, VT, N0, Q); in BuildUDIV()
6618 NPQ = DAG.getNode(ISD::SRL, dl, VT, NPQ, DAG.getConstant(1, dl, ShVT)); in BuildUDIV()
6622 Q = DAG.getNode(ISD::ADD, dl, VT, NPQ, Q); in BuildUDIV()
6627 Q = DAG.getNode(ISD::SRL, dl, VT, Q, PostShift); in BuildUDIV()
6633 SDValue One = DAG.getConstant(1, dl, VT); in BuildUDIV()
6634 SDValue IsOne = DAG.getSetCC(dl, SetCCVT, N1, One, ISD::SETEQ); in BuildUDIV()
6635 return DAG.getSelect(dl, VT, IsOne, N0, Q); in BuildUDIV()
7542 bool TargetLowering::expandMUL_LOHI(unsigned Opcode, EVT VT, const SDLoc &dl, in expandMUL_LOHI() argument
7574 Lo = DAG.getNode(Signed ? ISD::SMUL_LOHI : ISD::UMUL_LOHI, dl, VTs, L, R); in expandMUL_LOHI()
7579 Lo = DAG.getNode(ISD::MUL, dl, HiLoVT, L, R); in expandMUL_LOHI()
7580 Hi = DAG.getNode(Signed ? ISD::MULHS : ISD::MULHU, dl, HiLoVT, L, R); in expandMUL_LOHI()
7590 LL = DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, LHS); in expandMUL_LOHI()
7591 RL = DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, RHS); in expandMUL_LOHI()
7605 SDValue Zero = DAG.getConstant(0, dl, HiLoVT); in expandMUL_LOHI()
7626 SDValue Shift = DAG.getShiftAmountConstant(ShiftAmount, VT, dl); in expandMUL_LOHI()
7631 LH = DAG.getNode(ISD::SRL, dl, VT, LHS, Shift); in expandMUL_LOHI()
7632 LH = DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, LH); in expandMUL_LOHI()
7633 RH = DAG.getNode(ISD::SRL, dl, VT, RHS, Shift); in expandMUL_LOHI()
7634 RH = DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, RH); in expandMUL_LOHI()
7646 RH = DAG.getNode(ISD::MUL, dl, HiLoVT, LL, RH); in expandMUL_LOHI()
7647 LH = DAG.getNode(ISD::MUL, dl, HiLoVT, LH, RL); in expandMUL_LOHI()
7648 Hi = DAG.getNode(ISD::ADD, dl, HiLoVT, Hi, RH); in expandMUL_LOHI()
7649 Hi = DAG.getNode(ISD::ADD, dl, HiLoVT, Hi, LH); in expandMUL_LOHI()
7656 Lo = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Lo); in expandMUL_LOHI()
7657 Hi = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Hi); in expandMUL_LOHI()
7658 Hi = DAG.getNode(ISD::SHL, dl, VT, Hi, Shift); in expandMUL_LOHI()
7659 return DAG.getNode(ISD::OR, dl, VT, Lo, Hi); in expandMUL_LOHI()
7662 SDValue Next = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Hi); in expandMUL_LOHI()
7668 Next = DAG.getNode(ISD::ADD, dl, VT, Next, Merge(Lo, Hi)); in expandMUL_LOHI()
7673 SDValue Zero = DAG.getConstant(0, dl, HiLoVT); in expandMUL_LOHI()
7679 Next = DAG.getNode(ISD::ADDC, dl, DAG.getVTList(VT, MVT::Glue), Next, in expandMUL_LOHI()
7682 Next = DAG.getNode(ISD::UADDO_CARRY, dl, DAG.getVTList(VT, BoolType), Next, in expandMUL_LOHI()
7683 Merge(Lo, Hi), DAG.getConstant(0, dl, BoolType)); in expandMUL_LOHI()
7686 Result.push_back(DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, Next)); in expandMUL_LOHI()
7687 Next = DAG.getNode(ISD::SRL, dl, VT, Next, Shift); in expandMUL_LOHI()
7693 Hi = DAG.getNode(ISD::ADDE, dl, DAG.getVTList(HiLoVT, MVT::Glue), Hi, Zero, in expandMUL_LOHI()
7696 Hi = DAG.getNode(ISD::UADDO_CARRY, dl, DAG.getVTList(HiLoVT, BoolType), Hi, in expandMUL_LOHI()
7699 Next = DAG.getNode(ISD::ADD, dl, VT, Next, Merge(Lo, Hi)); in expandMUL_LOHI()
7702 SDValue NextSub = DAG.getNode(ISD::SUB, dl, VT, Next, in expandMUL_LOHI()
7703 DAG.getNode(ISD::ZERO_EXTEND, dl, VT, RL)); in expandMUL_LOHI()
7704 Next = DAG.getSelectCC(dl, LH, Zero, NextSub, Next, ISD::SETLT); in expandMUL_LOHI()
7706 NextSub = DAG.getNode(ISD::SUB, dl, VT, Next, in expandMUL_LOHI()
7707 DAG.getNode(ISD::ZERO_EXTEND, dl, VT, LL)); in expandMUL_LOHI()
7708 Next = DAG.getSelectCC(dl, RH, Zero, NextSub, Next, ISD::SETLT); in expandMUL_LOHI()
7711 Result.push_back(DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, Next)); in expandMUL_LOHI()
7712 Next = DAG.getNode(ISD::SRL, dl, VT, Next, Shift); in expandMUL_LOHI()
7713 Result.push_back(DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, Next)); in expandMUL_LOHI()
7804 SDLoc dl(N); in expandDIVREMByConstant() local
7815 std::tie(LL, LH) = DAG.SplitScalar(N->getOperand(0), dl, HiLoVT, HiLoVT); in expandDIVREMByConstant()
7823 PartialRem = DAG.getNode(ISD::AND, dl, HiLoVT, LL, in expandDIVREMByConstant()
7824 DAG.getConstant(Mask, dl, HiLoVT)); in expandDIVREMByConstant()
7828 ISD::OR, dl, HiLoVT, in expandDIVREMByConstant()
7829 DAG.getNode(ISD::SRL, dl, HiLoVT, LL, in expandDIVREMByConstant()
7830 DAG.getShiftAmountConstant(TrailingZeros, HiLoVT, dl)), in expandDIVREMByConstant()
7831 DAG.getNode(ISD::SHL, dl, HiLoVT, LH, in expandDIVREMByConstant()
7833 HiLoVT, dl))); in expandDIVREMByConstant()
7834 LH = DAG.getNode(ISD::SRL, dl, HiLoVT, LH, in expandDIVREMByConstant()
7835 DAG.getShiftAmountConstant(TrailingZeros, HiLoVT, dl)); in expandDIVREMByConstant()
7843 Sum = DAG.getNode(ISD::UADDO, dl, VTList, LL, LH); in expandDIVREMByConstant()
7844 Sum = DAG.getNode(ISD::UADDO_CARRY, dl, VTList, Sum, in expandDIVREMByConstant()
7845 DAG.getConstant(0, dl, HiLoVT), Sum.getValue(1)); in expandDIVREMByConstant()
7847 Sum = DAG.getNode(ISD::ADD, dl, HiLoVT, LL, LH); in expandDIVREMByConstant()
7848 SDValue Carry = DAG.getSetCC(dl, SetCCType, Sum, LL, ISD::SETULT); in expandDIVREMByConstant()
7853 Carry = DAG.getZExtOrTrunc(Carry, dl, HiLoVT); in expandDIVREMByConstant()
7855 Carry = DAG.getSelect(dl, HiLoVT, Carry, DAG.getConstant(1, dl, HiLoVT), in expandDIVREMByConstant()
7856 DAG.getConstant(0, dl, HiLoVT)); in expandDIVREMByConstant()
7857 Sum = DAG.getNode(ISD::ADD, dl, HiLoVT, Sum, Carry); in expandDIVREMByConstant()
7867 DAG.getNode(ISD::UREM, dl, HiLoVT, Sum, in expandDIVREMByConstant()
7868 DAG.getConstant(Divisor.trunc(HBitWidth), dl, HiLoVT)); in expandDIVREMByConstant()
7869 SDValue RemH = DAG.getConstant(0, dl, HiLoVT); in expandDIVREMByConstant()
7873 SDValue Dividend = DAG.getNode(ISD::BUILD_PAIR, dl, VT, LL, LH); in expandDIVREMByConstant()
7874 SDValue Rem = DAG.getNode(ISD::BUILD_PAIR, dl, VT, RemL, RemH); in expandDIVREMByConstant()
7876 Dividend = DAG.getNode(ISD::SUB, dl, VT, Dividend, Rem); in expandDIVREMByConstant()
7882 SDValue Quotient = DAG.getNode(ISD::MUL, dl, VT, Dividend, in expandDIVREMByConstant()
7883 DAG.getConstant(MulFactor, dl, VT)); in expandDIVREMByConstant()
7887 std::tie(QuotL, QuotH) = DAG.SplitScalar(Quotient, dl, HiLoVT, HiLoVT); in expandDIVREMByConstant()
7897 RemL = DAG.getNode(ISD::SHL, dl, HiLoVT, RemL, in expandDIVREMByConstant()
7898 DAG.getShiftAmountConstant(TrailingZeros, HiLoVT, dl)); in expandDIVREMByConstant()
7899 RemL = DAG.getNode(ISD::ADD, dl, HiLoVT, RemL, PartialRem); in expandDIVREMByConstant()
7902 Result.push_back(DAG.getConstant(0, dl, HiLoVT)); in expandDIVREMByConstant()
8132 SDLoc dl(Node); in expandShiftParts() local
8137 SDValue SafeShAmt = DAG.getNode(ISD::AND, dl, ShAmtVT, ShAmt, in expandShiftParts()
8138 DAG.getConstant(VTBits - 1, dl, ShAmtVT)); in expandShiftParts()
8139 SDValue Tmp1 = IsSRA ? DAG.getNode(ISD::SRA, dl, VT, ShOpHi, in expandShiftParts()
8140 DAG.getConstant(VTBits - 1, dl, ShAmtVT)) in expandShiftParts()
8141 : DAG.getConstant(0, dl, VT); in expandShiftParts()
8145 Tmp2 = DAG.getNode(ISD::FSHL, dl, VT, ShOpHi, ShOpLo, ShAmt); in expandShiftParts()
8146 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, ShOpLo, SafeShAmt); in expandShiftParts()
8148 Tmp2 = DAG.getNode(ISD::FSHR, dl, VT, ShOpHi, ShOpLo, ShAmt); in expandShiftParts()
8149 Tmp3 = DAG.getNode(IsSRA ? ISD::SRA : ISD::SRL, dl, VT, ShOpHi, SafeShAmt); in expandShiftParts()
8155 SDValue AndNode = DAG.getNode(ISD::AND, dl, ShAmtVT, ShAmt, in expandShiftParts()
8156 DAG.getConstant(VTBits, dl, ShAmtVT)); in expandShiftParts()
8157 SDValue Cond = DAG.getSetCC(dl, ShAmtCCVT, AndNode, in expandShiftParts()
8158 DAG.getConstant(0, dl, ShAmtVT), ISD::SETNE); in expandShiftParts()
8161 Hi = DAG.getNode(ISD::SELECT, dl, VT, Cond, Tmp3, Tmp2); in expandShiftParts()
8162 Lo = DAG.getNode(ISD::SELECT, dl, VT, Cond, Tmp1, Tmp3); in expandShiftParts()
8164 Lo = DAG.getNode(ISD::SELECT, dl, VT, Cond, Tmp3, Tmp2); in expandShiftParts()
8165 Hi = DAG.getNode(ISD::SELECT, dl, VT, Cond, Tmp1, Tmp3); in expandShiftParts()
8175 SDLoc dl(SDValue(Node, 0)); in expandFP_TO_SINT() local
8195 SDValue ExponentMask = DAG.getConstant(0x7F800000, dl, IntVT); in expandFP_TO_SINT()
8196 SDValue ExponentLoBit = DAG.getConstant(23, dl, IntVT); in expandFP_TO_SINT()
8197 SDValue Bias = DAG.getConstant(127, dl, IntVT); in expandFP_TO_SINT()
8198 SDValue SignMask = DAG.getConstant(APInt::getSignMask(SrcEltBits), dl, IntVT); in expandFP_TO_SINT()
8199 SDValue SignLowBit = DAG.getConstant(SrcEltBits - 1, dl, IntVT); in expandFP_TO_SINT()
8200 SDValue MantissaMask = DAG.getConstant(0x007FFFFF, dl, IntVT); in expandFP_TO_SINT()
8202 SDValue Bits = DAG.getNode(ISD::BITCAST, dl, IntVT, Src); in expandFP_TO_SINT()
8205 ISD::SRL, dl, IntVT, DAG.getNode(ISD::AND, dl, IntVT, Bits, ExponentMask), in expandFP_TO_SINT()
8206 DAG.getZExtOrTrunc(ExponentLoBit, dl, IntShVT)); in expandFP_TO_SINT()
8207 SDValue Exponent = DAG.getNode(ISD::SUB, dl, IntVT, ExponentBits, Bias); in expandFP_TO_SINT()
8209 SDValue Sign = DAG.getNode(ISD::SRA, dl, IntVT, in expandFP_TO_SINT()
8210 DAG.getNode(ISD::AND, dl, IntVT, Bits, SignMask), in expandFP_TO_SINT()
8211 DAG.getZExtOrTrunc(SignLowBit, dl, IntShVT)); in expandFP_TO_SINT()
8212 Sign = DAG.getSExtOrTrunc(Sign, dl, DstVT); in expandFP_TO_SINT()
8214 SDValue R = DAG.getNode(ISD::OR, dl, IntVT, in expandFP_TO_SINT()
8215 DAG.getNode(ISD::AND, dl, IntVT, Bits, MantissaMask), in expandFP_TO_SINT()
8216 DAG.getConstant(0x00800000, dl, IntVT)); in expandFP_TO_SINT()
8218 R = DAG.getZExtOrTrunc(R, dl, DstVT); in expandFP_TO_SINT()
8221 dl, Exponent, ExponentLoBit, in expandFP_TO_SINT()
8222 DAG.getNode(ISD::SHL, dl, DstVT, R, in expandFP_TO_SINT()
8224 DAG.getNode(ISD::SUB, dl, IntVT, Exponent, ExponentLoBit), in expandFP_TO_SINT()
8225 dl, IntShVT)), in expandFP_TO_SINT()
8226 DAG.getNode(ISD::SRL, dl, DstVT, R, in expandFP_TO_SINT()
8228 DAG.getNode(ISD::SUB, dl, IntVT, ExponentLoBit, Exponent), in expandFP_TO_SINT()
8229 dl, IntShVT)), in expandFP_TO_SINT()
8232 SDValue Ret = DAG.getNode(ISD::SUB, dl, DstVT, in expandFP_TO_SINT()
8233 DAG.getNode(ISD::XOR, dl, DstVT, R, Sign), Sign); in expandFP_TO_SINT()
8235 Result = DAG.getSelectCC(dl, Exponent, DAG.getConstant(0, dl, IntVT), in expandFP_TO_SINT()
8236 DAG.getConstant(0, dl, DstVT), Ret, ISD::SETLT); in expandFP_TO_SINT()
8243 SDLoc dl(SDValue(Node, 0)); in expandFP_TO_UINT() local
8270 Result = DAG.getNode(ISD::STRICT_FP_TO_SINT, dl, { DstVT, MVT::Other }, in expandFP_TO_UINT()
8274 Result = DAG.getNode(ISD::FP_TO_SINT, dl, DstVT, Src); in expandFP_TO_UINT()
8283 SDValue Cst = DAG.getConstantFP(APF, dl, SrcVT); in expandFP_TO_UINT()
8287 Sel = DAG.getSetCC(dl, SetCCVT, Src, Cst, ISD::SETLT, in expandFP_TO_UINT()
8291 Sel = DAG.getSetCC(dl, SetCCVT, Src, Cst, ISD::SETLT); in expandFP_TO_UINT()
8306 SDValue FltOfs = DAG.getSelect(dl, SrcVT, Sel, in expandFP_TO_UINT()
8307 DAG.getConstantFP(0.0, dl, SrcVT), Cst); in expandFP_TO_UINT()
8308 Sel = DAG.getBoolExtOrTrunc(Sel, dl, DstSetCCVT, DstVT); in expandFP_TO_UINT()
8309 SDValue IntOfs = DAG.getSelect(dl, DstVT, Sel, in expandFP_TO_UINT()
8310 DAG.getConstant(0, dl, DstVT), in expandFP_TO_UINT()
8311 DAG.getConstant(SignMask, dl, DstVT)); in expandFP_TO_UINT()
8314 SDValue Val = DAG.getNode(ISD::STRICT_FSUB, dl, { SrcVT, MVT::Other }, in expandFP_TO_UINT()
8316 SInt = DAG.getNode(ISD::STRICT_FP_TO_SINT, dl, { DstVT, MVT::Other }, in expandFP_TO_UINT()
8320 SDValue Val = DAG.getNode(ISD::FSUB, dl, SrcVT, Src, FltOfs); in expandFP_TO_UINT()
8321 SInt = DAG.getNode(ISD::FP_TO_SINT, dl, DstVT, Val); in expandFP_TO_UINT()
8323 Result = DAG.getNode(ISD::XOR, dl, DstVT, SInt, IntOfs); in expandFP_TO_UINT()
8330 SDValue True = DAG.getNode(ISD::FP_TO_SINT, dl, DstVT, Src); in expandFP_TO_UINT()
8332 SDValue False = DAG.getNode(ISD::FP_TO_SINT, dl, DstVT, in expandFP_TO_UINT()
8333 DAG.getNode(ISD::FSUB, dl, SrcVT, Src, Cst)); in expandFP_TO_UINT()
8334 False = DAG.getNode(ISD::XOR, dl, DstVT, False, in expandFP_TO_UINT()
8335 DAG.getConstant(SignMask, dl, DstVT)); in expandFP_TO_UINT()
8336 Sel = DAG.getBoolExtOrTrunc(Sel, dl, DstSetCCVT, DstVT); in expandFP_TO_UINT()
8337 Result = DAG.getSelect(dl, DstVT, Sel, True, False); in expandFP_TO_UINT()
8366 SDLoc dl(SDValue(Node, 0)); in expandUINT_TO_FP() local
8374 SDValue TwoP52 = DAG.getConstant(UINT64_C(0x4330000000000000), dl, SrcVT); in expandUINT_TO_FP()
8376 llvm::bit_cast<double>(UINT64_C(0x4530000000100000)), dl, DstVT); in expandUINT_TO_FP()
8377 SDValue TwoP84 = DAG.getConstant(UINT64_C(0x4530000000000000), dl, SrcVT); in expandUINT_TO_FP()
8378 SDValue LoMask = DAG.getConstant(UINT64_C(0x00000000FFFFFFFF), dl, SrcVT); in expandUINT_TO_FP()
8379 SDValue HiShift = DAG.getConstant(32, dl, ShiftVT); in expandUINT_TO_FP()
8381 SDValue Lo = DAG.getNode(ISD::AND, dl, SrcVT, Src, LoMask); in expandUINT_TO_FP()
8382 SDValue Hi = DAG.getNode(ISD::SRL, dl, SrcVT, Src, HiShift); in expandUINT_TO_FP()
8383 SDValue LoOr = DAG.getNode(ISD::OR, dl, SrcVT, Lo, TwoP52); in expandUINT_TO_FP()
8384 SDValue HiOr = DAG.getNode(ISD::OR, dl, SrcVT, Hi, TwoP84); in expandUINT_TO_FP()
8388 DAG.getNode(ISD::FSUB, dl, DstVT, HiFlt, TwoP84PlusTwoP52); in expandUINT_TO_FP()
8389 Result = DAG.getNode(ISD::FADD, dl, DstVT, LoFlt, HiSub); in expandUINT_TO_FP()
8419 SDLoc dl(Node); in expandFMINNUM_FMAXNUM() local
8436 Quiet0 = DAG.getNode(ISD::FCANONICALIZE, dl, VT, Quiet0, in expandFMINNUM_FMAXNUM()
8440 Quiet1 = DAG.getNode(ISD::FCANONICALIZE, dl, VT, Quiet1, in expandFMINNUM_FMAXNUM()
8445 return DAG.getNode(NewOp, dl, VT, Quiet0, Quiet1, Node->getFlags()); in expandFMINNUM_FMAXNUM()
8460 return DAG.getNode(IEEE2018Op, dl, VT, Node->getOperand(0), in expandFMINNUM_FMAXNUM()
8831 SDLoc dl(Node); in expandCTPOP() local
8849 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x55)), dl, VT); in expandCTPOP()
8851 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x33)), dl, VT); in expandCTPOP()
8853 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x0F)), dl, VT); in expandCTPOP()
8856 Op = DAG.getNode(ISD::SUB, dl, VT, Op, in expandCTPOP()
8857 DAG.getNode(ISD::AND, dl, VT, in expandCTPOP()
8858 DAG.getNode(ISD::SRL, dl, VT, Op, in expandCTPOP()
8859 DAG.getConstant(1, dl, ShVT)), in expandCTPOP()
8862 Op = DAG.getNode(ISD::ADD, dl, VT, DAG.getNode(ISD::AND, dl, VT, Op, Mask33), in expandCTPOP()
8863 DAG.getNode(ISD::AND, dl, VT, in expandCTPOP()
8864 DAG.getNode(ISD::SRL, dl, VT, Op, in expandCTPOP()
8865 DAG.getConstant(2, dl, ShVT)), in expandCTPOP()
8868 Op = DAG.getNode(ISD::AND, dl, VT, in expandCTPOP()
8869 DAG.getNode(ISD::ADD, dl, VT, Op, in expandCTPOP()
8870 DAG.getNode(ISD::SRL, dl, VT, Op, in expandCTPOP()
8871 DAG.getConstant(4, dl, ShVT))), in expandCTPOP()
8882 return DAG.getNode(ISD::AND, dl, VT, in expandCTPOP()
8883 DAG.getNode(ISD::ADD, dl, VT, Op, in expandCTPOP()
8884 DAG.getNode(ISD::SRL, dl, VT, Op, in expandCTPOP()
8885 DAG.getConstant(8, dl, ShVT))), in expandCTPOP()
8886 DAG.getConstant(0xFF, dl, VT)); in expandCTPOP()
8894 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x01)), dl, VT); in expandCTPOP()
8895 V = DAG.getNode(ISD::MUL, dl, VT, Op, Mask01); in expandCTPOP()
8899 SDValue ShiftC = DAG.getShiftAmountConstant(Shift, VT, dl); in expandCTPOP()
8900 V = DAG.getNode(ISD::ADD, dl, VT, V, in expandCTPOP()
8901 DAG.getNode(ISD::SHL, dl, VT, V, ShiftC)); in expandCTPOP()
8904 return DAG.getNode(ISD::SRL, dl, VT, V, DAG.getConstant(Len - 8, dl, ShVT)); in expandCTPOP()
8908 SDLoc dl(Node); in expandVPCTPOP() local
8924 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x55)), dl, VT); in expandVPCTPOP()
8926 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x33)), dl, VT); in expandVPCTPOP()
8928 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x0F)), dl, VT); in expandVPCTPOP()
8933 Tmp1 = DAG.getNode(ISD::VP_AND, dl, VT, in expandVPCTPOP()
8934 DAG.getNode(ISD::VP_SRL, dl, VT, Op, in expandVPCTPOP()
8935 DAG.getConstant(1, dl, ShVT), Mask, VL), in expandVPCTPOP()
8937 Op = DAG.getNode(ISD::VP_SUB, dl, VT, Op, Tmp1, Mask, VL); in expandVPCTPOP()
8940 Tmp2 = DAG.getNode(ISD::VP_AND, dl, VT, Op, Mask33, Mask, VL); in expandVPCTPOP()
8941 Tmp3 = DAG.getNode(ISD::VP_AND, dl, VT, in expandVPCTPOP()
8942 DAG.getNode(ISD::VP_SRL, dl, VT, Op, in expandVPCTPOP()
8943 DAG.getConstant(2, dl, ShVT), Mask, VL), in expandVPCTPOP()
8945 Op = DAG.getNode(ISD::VP_ADD, dl, VT, Tmp2, Tmp3, Mask, VL); in expandVPCTPOP()
8948 Tmp4 = DAG.getNode(ISD::VP_SRL, dl, VT, Op, DAG.getConstant(4, dl, ShVT), in expandVPCTPOP()
8950 Tmp5 = DAG.getNode(ISD::VP_ADD, dl, VT, Op, Tmp4, Mask, VL); in expandVPCTPOP()
8951 Op = DAG.getNode(ISD::VP_AND, dl, VT, Tmp5, Mask0F, Mask, VL); in expandVPCTPOP()
8961 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x01)), dl, VT); in expandVPCTPOP()
8962 V = DAG.getNode(ISD::VP_MUL, dl, VT, Op, Mask01, Mask, VL); in expandVPCTPOP()
8966 SDValue ShiftC = DAG.getShiftAmountConstant(Shift, VT, dl); in expandVPCTPOP()
8967 V = DAG.getNode(ISD::VP_ADD, dl, VT, V, in expandVPCTPOP()
8968 DAG.getNode(ISD::VP_SHL, dl, VT, V, ShiftC, Mask, VL), in expandVPCTPOP()
8972 return DAG.getNode(ISD::VP_SRL, dl, VT, V, DAG.getConstant(Len - 8, dl, ShVT), in expandVPCTPOP()
8977 SDLoc dl(Node); in expandCTLZ() local
8986 return DAG.getNode(ISD::CTLZ, dl, VT, Op); in expandCTLZ()
8992 SDValue CTLZ = DAG.getNode(ISD::CTLZ_ZERO_UNDEF, dl, VT, Op); in expandCTLZ()
8993 SDValue Zero = DAG.getConstant(0, dl, VT); in expandCTLZ()
8994 SDValue SrcIsZero = DAG.getSetCC(dl, SetCCVT, Op, Zero, ISD::SETEQ); in expandCTLZ()
8995 return DAG.getSelect(dl, VT, SrcIsZero, in expandCTLZ()
8996 DAG.getConstant(NumBitsPerElt, dl, VT), CTLZ); in expandCTLZ()
9018 SDValue Tmp = DAG.getConstant(1ULL << i, dl, ShVT); in expandCTLZ()
9019 Op = DAG.getNode(ISD::OR, dl, VT, Op, in expandCTLZ()
9020 DAG.getNode(ISD::SRL, dl, VT, Op, Tmp)); in expandCTLZ()
9022 Op = DAG.getNOT(dl, Op, VT); in expandCTLZ()
9023 return DAG.getNode(ISD::CTPOP, dl, VT, Op); in expandCTLZ()
9027 SDLoc dl(Node); in expandVPCTLZ() local
9043 SDValue Tmp = DAG.getConstant(1ULL << i, dl, ShVT); in expandVPCTLZ()
9044 Op = DAG.getNode(ISD::VP_OR, dl, VT, Op, in expandVPCTLZ()
9045 DAG.getNode(ISD::VP_SRL, dl, VT, Op, Tmp, Mask, VL), Mask, in expandVPCTLZ()
9048 Op = DAG.getNode(ISD::VP_XOR, dl, VT, Op, DAG.getConstant(-1, dl, VT), Mask, in expandVPCTLZ()
9050 return DAG.getNode(ISD::VP_CTPOP, dl, VT, Op, Mask, VL); in expandVPCTLZ()
9098 SDLoc dl(Node); in expandCTTZ() local
9106 return DAG.getNode(ISD::CTTZ, dl, VT, Op); in expandCTTZ()
9112 SDValue CTTZ = DAG.getNode(ISD::CTTZ_ZERO_UNDEF, dl, VT, Op); in expandCTTZ()
9113 SDValue Zero = DAG.getConstant(0, dl, VT); in expandCTTZ()
9114 SDValue SrcIsZero = DAG.getSetCC(dl, SetCCVT, Op, Zero, ISD::SETEQ); in expandCTTZ()
9115 return DAG.getSelect(dl, VT, SrcIsZero, in expandCTTZ()
9116 DAG.getConstant(NumBitsPerElt, dl, VT), CTTZ); in expandCTTZ()
9133 if (SDValue V = CTTZTableLookup(Node, DAG, dl, VT, Op, NumBitsPerElt)) in expandCTTZ()
9141 ISD::AND, dl, VT, DAG.getNOT(dl, Op, VT), in expandCTTZ()
9142 DAG.getNode(ISD::SUB, dl, VT, Op, DAG.getConstant(1, dl, VT))); in expandCTTZ()
9146 return DAG.getNode(ISD::SUB, dl, VT, DAG.getConstant(NumBitsPerElt, dl, VT), in expandCTTZ()
9147 DAG.getNode(ISD::CTLZ, dl, VT, Tmp)); in expandCTTZ()
9150 return DAG.getNode(ISD::CTPOP, dl, VT, Tmp); in expandCTTZ()
9157 SDLoc dl(Node); in expandVPCTTZ() local
9161 SDValue Not = DAG.getNode(ISD::VP_XOR, dl, VT, Op, in expandVPCTTZ()
9162 DAG.getConstant(-1, dl, VT), Mask, VL); in expandVPCTTZ()
9163 SDValue MinusOne = DAG.getNode(ISD::VP_SUB, dl, VT, Op, in expandVPCTTZ()
9164 DAG.getConstant(1, dl, VT), Mask, VL); in expandVPCTTZ()
9165 SDValue Tmp = DAG.getNode(ISD::VP_AND, dl, VT, Not, MinusOne, Mask, VL); in expandVPCTTZ()
9166 return DAG.getNode(ISD::VP_CTPOP, dl, VT, Tmp, Mask, VL); in expandVPCTTZ()
9204 SDLoc dl(N); in expandABS() local
9211 SDValue Zero = DAG.getConstant(0, dl, VT); in expandABS()
9213 return DAG.getNode(ISD::SMAX, dl, VT, Op, in expandABS()
9214 DAG.getNode(ISD::SUB, dl, VT, Zero, Op)); in expandABS()
9220 SDValue Zero = DAG.getConstant(0, dl, VT); in expandABS()
9222 return DAG.getNode(ISD::UMIN, dl, VT, Op, in expandABS()
9223 DAG.getNode(ISD::SUB, dl, VT, Zero, Op)); in expandABS()
9229 SDValue Zero = DAG.getConstant(0, dl, VT); in expandABS()
9231 return DAG.getNode(ISD::SMIN, dl, VT, Op, in expandABS()
9232 DAG.getNode(ISD::SUB, dl, VT, Zero, Op)); in expandABS()
9245 ISD::SRA, dl, VT, Op, in expandABS()
9246 DAG.getShiftAmountConstant(VT.getScalarSizeInBits() - 1, VT, dl)); in expandABS()
9247 SDValue Xor = DAG.getNode(ISD::XOR, dl, VT, Op, Shift); in expandABS()
9251 return DAG.getNode(ISD::SUB, dl, VT, Xor, Shift); in expandABS()
9254 return DAG.getNode(ISD::SUB, dl, VT, Shift, Xor); in expandABS()
9258 SDLoc dl(N); in expandABD() local
9269 SDValue Max = DAG.getNode(MaxOpc, dl, VT, LHS, RHS); in expandABD()
9270 SDValue Min = DAG.getNode(MinOpc, dl, VT, LHS, RHS); in expandABD()
9271 return DAG.getNode(ISD::SUB, dl, VT, Max, Min); in expandABD()
9276 return DAG.getNode(ISD::OR, dl, VT, in expandABD()
9277 DAG.getNode(ISD::USUBSAT, dl, VT, LHS, RHS), in expandABD()
9278 DAG.getNode(ISD::USUBSAT, dl, VT, RHS, LHS)); in expandABD()
9282 SDValue Cmp = DAG.getSetCC(dl, CCVT, LHS, RHS, CC); in expandABD()
9288 SDValue Diff = DAG.getNode(ISD::SUB, dl, VT, LHS, RHS); in expandABD()
9289 SDValue Xor = DAG.getNode(ISD::XOR, dl, VT, Diff, Cmp); in expandABD()
9290 return DAG.getNode(ISD::SUB, dl, VT, Cmp, Xor); in expandABD()
9295 return DAG.getSelect(dl, VT, Cmp, DAG.getNode(ISD::SUB, dl, VT, LHS, RHS), in expandABD()
9296 DAG.getNode(ISD::SUB, dl, VT, RHS, LHS)); in expandABD()
9300 SDLoc dl(N); in expandAVG() local
9323 SDValue Sum = DAG.getNode(ISD::ADD, dl, VT, LHS, RHS); in expandAVG()
9325 Sum = DAG.getNode(ISD::ADD, dl, VT, Sum, DAG.getConstant(1, dl, VT)); in expandAVG()
9326 return DAG.getNode(ShiftOpc, dl, VT, Sum, in expandAVG()
9327 DAG.getShiftAmountConstant(1, VT, dl)); in expandAVG()
9335 LHS = DAG.getNode(ExtOpc, dl, ExtVT, LHS); in expandAVG()
9336 RHS = DAG.getNode(ExtOpc, dl, ExtVT, RHS); in expandAVG()
9337 SDValue Avg = DAG.getNode(ISD::ADD, dl, ExtVT, LHS, RHS); in expandAVG()
9339 Avg = DAG.getNode(ISD::ADD, dl, ExtVT, Avg, in expandAVG()
9340 DAG.getConstant(1, dl, ExtVT)); in expandAVG()
9342 Avg = DAG.getNode(ISD::SRL, dl, ExtVT, Avg, in expandAVG()
9343 DAG.getShiftAmountConstant(1, ExtVT, dl)); in expandAVG()
9344 return DAG.getNode(ISD::TRUNCATE, dl, VT, Avg); in expandAVG()
9354 SDValue Sign = DAG.getNode(SignOpc, dl, VT, LHS, RHS); in expandAVG()
9355 SDValue Xor = DAG.getNode(ISD::XOR, dl, VT, LHS, RHS); in expandAVG()
9357 DAG.getNode(ShiftOpc, dl, VT, Xor, DAG.getShiftAmountConstant(1, VT, dl)); in expandAVG()
9358 return DAG.getNode(SumOpc, dl, VT, Sign, Shift); in expandAVG()
9362 SDLoc dl(N); in expandBSWAP() local
9376 return DAG.getNode(ISD::ROTL, dl, VT, Op, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
9378 Tmp4 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(24, dl, SHVT)); in expandBSWAP()
9379 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Op, in expandBSWAP()
9380 DAG.getConstant(0xFF00, dl, VT)); in expandBSWAP()
9381 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
9382 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
9383 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(0xFF00, dl, VT)); in expandBSWAP()
9384 Tmp1 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT)); in expandBSWAP()
9385 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp3); in expandBSWAP()
9386 Tmp2 = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp1); in expandBSWAP()
9387 return DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp2); in expandBSWAP()
9389 Tmp8 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(56, dl, SHVT)); in expandBSWAP()
9390 Tmp7 = DAG.getNode(ISD::AND, dl, VT, Op, in expandBSWAP()
9391 DAG.getConstant(255ULL<<8, dl, VT)); in expandBSWAP()
9392 Tmp7 = DAG.getNode(ISD::SHL, dl, VT, Tmp7, DAG.getConstant(40, dl, SHVT)); in expandBSWAP()
9393 Tmp6 = DAG.getNode(ISD::AND, dl, VT, Op, in expandBSWAP()
9394 DAG.getConstant(255ULL<<16, dl, VT)); in expandBSWAP()
9395 Tmp6 = DAG.getNode(ISD::SHL, dl, VT, Tmp6, DAG.getConstant(24, dl, SHVT)); in expandBSWAP()
9396 Tmp5 = DAG.getNode(ISD::AND, dl, VT, Op, in expandBSWAP()
9397 DAG.getConstant(255ULL<<24, dl, VT)); in expandBSWAP()
9398 Tmp5 = DAG.getNode(ISD::SHL, dl, VT, Tmp5, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
9399 Tmp4 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
9400 Tmp4 = DAG.getNode(ISD::AND, dl, VT, Tmp4, in expandBSWAP()
9401 DAG.getConstant(255ULL<<24, dl, VT)); in expandBSWAP()
9402 Tmp3 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT)); in expandBSWAP()
9403 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp3, in expandBSWAP()
9404 DAG.getConstant(255ULL<<16, dl, VT)); in expandBSWAP()
9405 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(40, dl, SHVT)); in expandBSWAP()
9406 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, in expandBSWAP()
9407 DAG.getConstant(255ULL<<8, dl, VT)); in expandBSWAP()
9408 Tmp1 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(56, dl, SHVT)); in expandBSWAP()
9409 Tmp8 = DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp7); in expandBSWAP()
9410 Tmp6 = DAG.getNode(ISD::OR, dl, VT, Tmp6, Tmp5); in expandBSWAP()
9411 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp3); in expandBSWAP()
9412 Tmp2 = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp1); in expandBSWAP()
9413 Tmp8 = DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp6); in expandBSWAP()
9414 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp2); in expandBSWAP()
9415 return DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp4); in expandBSWAP()
9420 SDLoc dl(N); in expandVPBSWAP() local
9435 Tmp1 = DAG.getNode(ISD::VP_SHL, dl, VT, Op, DAG.getConstant(8, dl, SHVT), in expandVPBSWAP()
9437 Tmp2 = DAG.getNode(ISD::VP_SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT), in expandVPBSWAP()
9439 return DAG.getNode(ISD::VP_OR, dl, VT, Tmp1, Tmp2, Mask, EVL); in expandVPBSWAP()
9441 Tmp4 = DAG.getNode(ISD::VP_SHL, dl, VT, Op, DAG.getConstant(24, dl, SHVT), in expandVPBSWAP()
9443 Tmp3 = DAG.getNode(ISD::VP_AND, dl, VT, Op, DAG.getConstant(0xFF00, dl, VT), in expandVPBSWAP()
9445 Tmp3 = DAG.getNode(ISD::VP_SHL, dl, VT, Tmp3, DAG.getConstant(8, dl, SHVT), in expandVPBSWAP()
9447 Tmp2 = DAG.getNode(ISD::VP_SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT), in expandVPBSWAP()
9449 Tmp2 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp2, in expandVPBSWAP()
9450 DAG.getConstant(0xFF00, dl, VT), Mask, EVL); in expandVPBSWAP()
9451 Tmp1 = DAG.getNode(ISD::VP_SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT), in expandVPBSWAP()
9453 Tmp4 = DAG.getNode(ISD::VP_OR, dl, VT, Tmp4, Tmp3, Mask, EVL); in expandVPBSWAP()
9454 Tmp2 = DAG.getNode(ISD::VP_OR, dl, VT, Tmp2, Tmp1, Mask, EVL); in expandVPBSWAP()
9455 return DAG.getNode(ISD::VP_OR, dl, VT, Tmp4, Tmp2, Mask, EVL); in expandVPBSWAP()
9457 Tmp8 = DAG.getNode(ISD::VP_SHL, dl, VT, Op, DAG.getConstant(56, dl, SHVT), in expandVPBSWAP()
9459 Tmp7 = DAG.getNode(ISD::VP_AND, dl, VT, Op, in expandVPBSWAP()
9460 DAG.getConstant(255ULL << 8, dl, VT), Mask, EVL); in expandVPBSWAP()
9461 Tmp7 = DAG.getNode(ISD::VP_SHL, dl, VT, Tmp7, DAG.getConstant(40, dl, SHVT), in expandVPBSWAP()
9463 Tmp6 = DAG.getNode(ISD::VP_AND, dl, VT, Op, in expandVPBSWAP()
9464 DAG.getConstant(255ULL << 16, dl, VT), Mask, EVL); in expandVPBSWAP()
9465 Tmp6 = DAG.getNode(ISD::VP_SHL, dl, VT, Tmp6, DAG.getConstant(24, dl, SHVT), in expandVPBSWAP()
9467 Tmp5 = DAG.getNode(ISD::VP_AND, dl, VT, Op, in expandVPBSWAP()
9468 DAG.getConstant(255ULL << 24, dl, VT), Mask, EVL); in expandVPBSWAP()
9469 Tmp5 = DAG.getNode(ISD::VP_SHL, dl, VT, Tmp5, DAG.getConstant(8, dl, SHVT), in expandVPBSWAP()
9471 Tmp4 = DAG.getNode(ISD::VP_SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT), in expandVPBSWAP()
9473 Tmp4 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp4, in expandVPBSWAP()
9474 DAG.getConstant(255ULL << 24, dl, VT), Mask, EVL); in expandVPBSWAP()
9475 Tmp3 = DAG.getNode(ISD::VP_SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT), in expandVPBSWAP()
9477 Tmp3 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp3, in expandVPBSWAP()
9478 DAG.getConstant(255ULL << 16, dl, VT), Mask, EVL); in expandVPBSWAP()
9479 Tmp2 = DAG.getNode(ISD::VP_SRL, dl, VT, Op, DAG.getConstant(40, dl, SHVT), in expandVPBSWAP()
9481 Tmp2 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp2, in expandVPBSWAP()
9482 DAG.getConstant(255ULL << 8, dl, VT), Mask, EVL); in expandVPBSWAP()
9483 Tmp1 = DAG.getNode(ISD::VP_SRL, dl, VT, Op, DAG.getConstant(56, dl, SHVT), in expandVPBSWAP()
9485 Tmp8 = DAG.getNode(ISD::VP_OR, dl, VT, Tmp8, Tmp7, Mask, EVL); in expandVPBSWAP()
9486 Tmp6 = DAG.getNode(ISD::VP_OR, dl, VT, Tmp6, Tmp5, Mask, EVL); in expandVPBSWAP()
9487 Tmp4 = DAG.getNode(ISD::VP_OR, dl, VT, Tmp4, Tmp3, Mask, EVL); in expandVPBSWAP()
9488 Tmp2 = DAG.getNode(ISD::VP_OR, dl, VT, Tmp2, Tmp1, Mask, EVL); in expandVPBSWAP()
9489 Tmp8 = DAG.getNode(ISD::VP_OR, dl, VT, Tmp8, Tmp6, Mask, EVL); in expandVPBSWAP()
9490 Tmp4 = DAG.getNode(ISD::VP_OR, dl, VT, Tmp4, Tmp2, Mask, EVL); in expandVPBSWAP()
9491 return DAG.getNode(ISD::VP_OR, dl, VT, Tmp8, Tmp4, Mask, EVL); in expandVPBSWAP()
9496 SDLoc dl(N); in expandBITREVERSE() local
9514 Tmp = (Sz > 8 ? DAG.getNode(ISD::BSWAP, dl, VT, Op) : Op); in expandBITREVERSE()
9517 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp, DAG.getConstant(4, dl, SHVT)); in expandBITREVERSE()
9518 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Mask4, dl, VT)); in expandBITREVERSE()
9519 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(Mask4, dl, VT)); in expandBITREVERSE()
9520 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(4, dl, SHVT)); in expandBITREVERSE()
9521 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3); in expandBITREVERSE()
9524 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp, DAG.getConstant(2, dl, SHVT)); in expandBITREVERSE()
9525 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Mask2, dl, VT)); in expandBITREVERSE()
9526 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(Mask2, dl, VT)); in expandBITREVERSE()
9527 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(2, dl, SHVT)); in expandBITREVERSE()
9528 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3); in expandBITREVERSE()
9531 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp, DAG.getConstant(1, dl, SHVT)); in expandBITREVERSE()
9532 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Mask1, dl, VT)); in expandBITREVERSE()
9533 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(Mask1, dl, VT)); in expandBITREVERSE()
9534 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(1, dl, SHVT)); in expandBITREVERSE()
9535 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3); in expandBITREVERSE()
9539 Tmp = DAG.getConstant(0, dl, VT); in expandBITREVERSE()
9543 DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(J - I, dl, SHVT)); in expandBITREVERSE()
9546 DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(I - J, dl, SHVT)); in expandBITREVERSE()
9549 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Shift, dl, VT)); in expandBITREVERSE()
9550 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp, Tmp2); in expandBITREVERSE()
9559 SDLoc dl(N); in expandVPBITREVERSE() local
9579 Tmp = (Sz > 8 ? DAG.getNode(ISD::VP_BSWAP, dl, VT, Op, Mask, EVL) : Op); in expandVPBITREVERSE()
9582 Tmp2 = DAG.getNode(ISD::VP_SRL, dl, VT, Tmp, DAG.getConstant(4, dl, SHVT), in expandVPBITREVERSE()
9584 Tmp2 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp2, in expandVPBITREVERSE()
9585 DAG.getConstant(Mask4, dl, VT), Mask, EVL); in expandVPBITREVERSE()
9586 Tmp3 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp, DAG.getConstant(Mask4, dl, VT), in expandVPBITREVERSE()
9588 Tmp3 = DAG.getNode(ISD::VP_SHL, dl, VT, Tmp3, DAG.getConstant(4, dl, SHVT), in expandVPBITREVERSE()
9590 Tmp = DAG.getNode(ISD::VP_OR, dl, VT, Tmp2, Tmp3, Mask, EVL); in expandVPBITREVERSE()
9593 Tmp2 = DAG.getNode(ISD::VP_SRL, dl, VT, Tmp, DAG.getConstant(2, dl, SHVT), in expandVPBITREVERSE()
9595 Tmp2 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp2, in expandVPBITREVERSE()
9596 DAG.getConstant(Mask2, dl, VT), Mask, EVL); in expandVPBITREVERSE()
9597 Tmp3 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp, DAG.getConstant(Mask2, dl, VT), in expandVPBITREVERSE()
9599 Tmp3 = DAG.getNode(ISD::VP_SHL, dl, VT, Tmp3, DAG.getConstant(2, dl, SHVT), in expandVPBITREVERSE()
9601 Tmp = DAG.getNode(ISD::VP_OR, dl, VT, Tmp2, Tmp3, Mask, EVL); in expandVPBITREVERSE()
9604 Tmp2 = DAG.getNode(ISD::VP_SRL, dl, VT, Tmp, DAG.getConstant(1, dl, SHVT), in expandVPBITREVERSE()
9606 Tmp2 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp2, in expandVPBITREVERSE()
9607 DAG.getConstant(Mask1, dl, VT), Mask, EVL); in expandVPBITREVERSE()
9608 Tmp3 = DAG.getNode(ISD::VP_AND, dl, VT, Tmp, DAG.getConstant(Mask1, dl, VT), in expandVPBITREVERSE()
9610 Tmp3 = DAG.getNode(ISD::VP_SHL, dl, VT, Tmp3, DAG.getConstant(1, dl, SHVT), in expandVPBITREVERSE()
9612 Tmp = DAG.getNode(ISD::VP_OR, dl, VT, Tmp2, Tmp3, Mask, EVL); in expandVPBITREVERSE()
9793 SDLoc dl(LD); in expandUnalignedLoad() local
9807 SDValue newLoad = DAG.getLoad(intVT, dl, Chain, Ptr, in expandUnalignedLoad()
9809 SDValue Result = DAG.getNode(ISD::BITCAST, dl, LoadedVT, newLoad); in expandUnalignedLoad()
9812 ISD::ANY_EXTEND, dl, VT, Result); in expandUnalignedLoad()
9834 SDValue PtrIncrement = DAG.getConstant(RegBytes, dl, PtrVT); in expandUnalignedLoad()
9835 SDValue StackPtrIncrement = DAG.getConstant(RegBytes, dl, StackPtrVT); in expandUnalignedLoad()
9841 RegVT, dl, Chain, Ptr, LD->getPointerInfo().getWithOffset(Offset), in expandUnalignedLoad()
9846 Load.getValue(1), dl, Load, StackPtr, in expandUnalignedLoad()
9851 Ptr = DAG.getObjectPtrOffset(dl, Ptr, PtrIncrement); in expandUnalignedLoad()
9852 StackPtr = DAG.getObjectPtrOffset(dl, StackPtr, StackPtrIncrement); in expandUnalignedLoad()
9859 DAG.getExtLoad(ISD::EXTLOAD, dl, RegVT, Chain, Ptr, in expandUnalignedLoad()
9867 Load.getValue(1), dl, Load, StackPtr, in expandUnalignedLoad()
9871 SDValue TF = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Stores); in expandUnalignedLoad()
9874 Load = DAG.getExtLoad(LD->getExtensionType(), dl, VT, TF, StackBase, in expandUnalignedLoad()
9903 Lo = DAG.getExtLoad(ISD::ZEXTLOAD, dl, VT, Chain, Ptr, LD->getPointerInfo(), in expandUnalignedLoad()
9907 Ptr = DAG.getObjectPtrOffset(dl, Ptr, TypeSize::getFixed(IncrementSize)); in expandUnalignedLoad()
9908 Hi = DAG.getExtLoad(HiExtType, dl, VT, Chain, Ptr, in expandUnalignedLoad()
9913 Hi = DAG.getExtLoad(HiExtType, dl, VT, Chain, Ptr, LD->getPointerInfo(), in expandUnalignedLoad()
9917 Ptr = DAG.getObjectPtrOffset(dl, Ptr, TypeSize::getFixed(IncrementSize)); in expandUnalignedLoad()
9918 Lo = DAG.getExtLoad(ISD::ZEXTLOAD, dl, VT, Chain, Ptr, in expandUnalignedLoad()
9925 SDValue ShiftAmount = DAG.getShiftAmountConstant(NumBits, VT, dl); in expandUnalignedLoad()
9926 SDValue Result = DAG.getNode(ISD::SHL, dl, VT, Hi, ShiftAmount); in expandUnalignedLoad()
9927 Result = DAG.getNode(ISD::OR, dl, VT, Result, Lo); in expandUnalignedLoad()
9929 SDValue TF = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo.getValue(1), in expandUnalignedLoad()
9947 SDLoc dl(ST); in expandUnalignedStore() local
9960 SDValue Result = DAG.getNode(ISD::BITCAST, dl, intVT, Val); in expandUnalignedStore()
9961 Result = DAG.getStore(Chain, dl, Result, Ptr, ST->getPointerInfo(), in expandUnalignedStore()
9981 Chain, dl, Val, StackPtr, in expandUnalignedStore()
9986 SDValue PtrIncrement = DAG.getConstant(RegBytes, dl, PtrVT); in expandUnalignedStore()
9987 SDValue StackPtrIncrement = DAG.getConstant(RegBytes, dl, StackPtrVT); in expandUnalignedStore()
9995 RegVT, dl, Store, StackPtr, in expandUnalignedStore()
9998 Stores.push_back(DAG.getStore(Load.getValue(1), dl, Load, Ptr, in expandUnalignedStore()
10004 StackPtr = DAG.getObjectPtrOffset(dl, StackPtr, StackPtrIncrement); in expandUnalignedStore()
10005 Ptr = DAG.getObjectPtrOffset(dl, Ptr, PtrIncrement); in expandUnalignedStore()
10016 ISD::EXTLOAD, dl, RegVT, Store, StackPtr, in expandUnalignedStore()
10020 DAG.getTruncStore(Load.getValue(1), dl, Load, Ptr, in expandUnalignedStore()
10025 SDValue Result = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Stores); in expandUnalignedStore()
10038 DAG.getShiftAmountConstant(NumBits, Val.getValueType(), dl); in expandUnalignedStore()
10045 ISD::AND, dl, VT, Lo, in expandUnalignedStore()
10046 DAG.getConstant(APInt::getLowBitsSet(VT.getSizeInBits(), NumBits), dl, in expandUnalignedStore()
10048 SDValue Hi = DAG.getNode(ISD::SRL, dl, VT, Val, ShiftAmount); in expandUnalignedStore()
10052 Store1 = DAG.getTruncStore(Chain, dl, in expandUnalignedStore()
10057 Ptr = DAG.getObjectPtrOffset(dl, Ptr, TypeSize::getFixed(IncrementSize)); in expandUnalignedStore()
10059 Chain, dl, DAG.getDataLayout().isLittleEndian() ? Hi : Lo, Ptr, in expandUnalignedStore()
10064 DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Store1, Store2); in expandUnalignedStore()
10108 EVT VecVT, const SDLoc &dl, in clampDynamicVectorIndex() argument
10125 DAG.getVScale(dl, IdxVT, APInt(IdxVT.getFixedSizeInBits(), NElts)); in clampDynamicVectorIndex()
10127 SDValue Sub = DAG.getNode(SubOpcode, dl, IdxVT, VS, in clampDynamicVectorIndex()
10128 DAG.getConstant(NumSubElts, dl, IdxVT)); in clampDynamicVectorIndex()
10129 return DAG.getNode(ISD::UMIN, dl, IdxVT, Idx, Sub); in clampDynamicVectorIndex()
10133 return DAG.getNode(ISD::AND, dl, IdxVT, Idx, in clampDynamicVectorIndex()
10134 DAG.getConstant(Imm, dl, IdxVT)); in clampDynamicVectorIndex()
10137 return DAG.getNode(ISD::UMIN, dl, IdxVT, Idx, in clampDynamicVectorIndex()
10138 DAG.getConstant(MaxIndex, dl, IdxVT)); in clampDynamicVectorIndex()
10154 SDLoc dl(Index); in getVectorSubVecPointer() local
10156 Index = DAG.getZExtOrTrunc(Index, dl, VecPtr.getValueType()); in getVectorSubVecPointer()
10166 Index = clampDynamicVectorIndex(DAG, Index, VecVT, dl, in getVectorSubVecPointer()
10172 DAG.getNode(ISD::MUL, dl, IdxVT, Index, in getVectorSubVecPointer()
10173 DAG.getVScale(dl, IdxVT, APInt(IdxVT.getSizeInBits(), 1))); in getVectorSubVecPointer()
10175 Index = DAG.getNode(ISD::MUL, dl, IdxVT, Index, in getVectorSubVecPointer()
10176 DAG.getConstant(EltSize, dl, IdxVT)); in getVectorSubVecPointer()
10177 return DAG.getMemBasePlusOffset(VecPtr, Index, dl); in getVectorSubVecPointer()
10190 SDLoc dl(GA); in LowerToTLSEmulatedModel() local
10199 Entry.Node = DAG.getGlobalAddress(EmuTlsVar, dl, PtrVT); in LowerToTLSEmulatedModel()
10206 CLI.setDebugLoc(dl).setChain(DAG.getEntryNode()); in LowerToTLSEmulatedModel()
10227 SDLoc dl(Op); in lowerCmpEqZeroToCtlzSrl() local
10233 Zext = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Op.getOperand(0)); in lowerCmpEqZeroToCtlzSrl()
10236 SDValue Clz = DAG.getNode(ISD::CTLZ, dl, VT, Zext); in lowerCmpEqZeroToCtlzSrl()
10237 SDValue Scc = DAG.getNode(ISD::SRL, dl, VT, Clz, in lowerCmpEqZeroToCtlzSrl()
10238 DAG.getConstant(Log2b, dl, MVT::i32)); in lowerCmpEqZeroToCtlzSrl()
10239 return DAG.getNode(ISD::TRUNCATE, dl, MVT::i32, Scc); in lowerCmpEqZeroToCtlzSrl()
10330 SDLoc dl(Node); in expandAddSubSat() local
10337 SDValue Max = DAG.getNode(ISD::UMAX, dl, VT, LHS, RHS); in expandAddSubSat()
10338 return DAG.getNode(ISD::SUB, dl, VT, Max, RHS); in expandAddSubSat()
10343 SDValue InvRHS = DAG.getNOT(dl, RHS, VT); in expandAddSubSat()
10344 SDValue Min = DAG.getNode(ISD::UMIN, dl, VT, LHS, InvRHS); in expandAddSubSat()
10345 return DAG.getNode(ISD::ADD, dl, VT, Min, RHS); in expandAddSubSat()
10374 SDValue Result = DAG.getNode(OverflowOp, dl, DAG.getVTList(VT, BoolVT), LHS, RHS); in expandAddSubSat()
10377 SDValue Zero = DAG.getConstant(0, dl, VT); in expandAddSubSat()
10378 SDValue AllOnes = DAG.getAllOnesConstant(dl, VT); in expandAddSubSat()
10383 SDValue OverflowMask = DAG.getSExtOrTrunc(Overflow, dl, VT); in expandAddSubSat()
10384 return DAG.getNode(ISD::OR, dl, VT, SumDiff, OverflowMask); in expandAddSubSat()
10387 return DAG.getSelect(dl, VT, Overflow, AllOnes, SumDiff); in expandAddSubSat()
10393 SDValue OverflowMask = DAG.getSExtOrTrunc(Overflow, dl, VT); in expandAddSubSat()
10394 SDValue Not = DAG.getNOT(dl, OverflowMask, VT); in expandAddSubSat()
10395 return DAG.getNode(ISD::AND, dl, VT, SumDiff, Not); in expandAddSubSat()
10398 return DAG.getSelect(dl, VT, Overflow, Zero, SumDiff); in expandAddSubSat()
10419 SDValue SatMax = DAG.getConstant(MaxVal, dl, VT); in expandAddSubSat()
10420 return DAG.getSelect(dl, VT, Overflow, SatMax, SumDiff); in expandAddSubSat()
10427 SDValue SatMin = DAG.getConstant(MinVal, dl, VT); in expandAddSubSat()
10428 return DAG.getSelect(dl, VT, Overflow, SatMin, SumDiff); in expandAddSubSat()
10434 SDValue SatMin = DAG.getConstant(MinVal, dl, VT); in expandAddSubSat()
10435 SDValue Shift = DAG.getNode(ISD::SRA, dl, VT, SumDiff, in expandAddSubSat()
10436 DAG.getConstant(BitWidth - 1, dl, VT)); in expandAddSubSat()
10437 Result = DAG.getNode(ISD::XOR, dl, VT, Shift, SatMin); in expandAddSubSat()
10438 return DAG.getSelect(dl, VT, Overflow, Result, SumDiff); in expandAddSubSat()
10448 SDLoc dl(Node); in expandCMP() local
10452 SDValue IsLT = DAG.getSetCC(dl, BoolVT, LHS, RHS, LTPredicate); in expandCMP()
10453 SDValue IsGT = DAG.getSetCC(dl, BoolVT, LHS, RHS, GTPredicate); in expandCMP()
10464 DAG.getSelect(dl, ResVT, IsGT, DAG.getConstant(1, dl, ResVT), in expandCMP()
10465 DAG.getConstant(0, dl, ResVT)); in expandCMP()
10466 return DAG.getSelect(dl, ResVT, IsLT, DAG.getConstant(-1, dl, ResVT), in expandCMP()
10472 return DAG.getSExtOrTrunc(DAG.getNode(ISD::SUB, dl, BoolVT, IsGT, IsLT), dl, in expandCMP()
10482 SDLoc dl(Node); in expandShlSat() local
10497 SDValue Result = DAG.getNode(ISD::SHL, dl, VT, LHS, RHS); in expandShlSat()
10499 DAG.getNode(IsSigned ? ISD::SRA : ISD::SRL, dl, VT, Result, RHS); in expandShlSat()
10503 SDValue SatMin = DAG.getConstant(APInt::getSignedMinValue(BW), dl, VT); in expandShlSat()
10504 SDValue SatMax = DAG.getConstant(APInt::getSignedMaxValue(BW), dl, VT); in expandShlSat()
10506 DAG.getSetCC(dl, BoolVT, LHS, DAG.getConstant(0, dl, VT), ISD::SETLT); in expandShlSat()
10507 SatVal = DAG.getSelect(dl, VT, Cond, SatMin, SatMax); in expandShlSat()
10509 SatVal = DAG.getConstant(APInt::getMaxValue(BW), dl, VT); in expandShlSat()
10511 SDValue Cond = DAG.getSetCC(dl, BoolVT, LHS, Orig, ISD::SETNE); in expandShlSat()
10512 return DAG.getSelect(dl, VT, Cond, SatVal, Result); in expandShlSat()
10515 void TargetLowering::forceExpandWideMUL(SelectionDAG &DAG, const SDLoc &dl, in forceExpandWideMUL() argument
10543 DAG.getConstant(APInt::getLowBitsSet(Bits, HalfBits), dl, VT); in forceExpandWideMUL()
10544 SDValue LLL = DAG.getNode(ISD::AND, dl, VT, LL, Mask); in forceExpandWideMUL()
10545 SDValue RLL = DAG.getNode(ISD::AND, dl, VT, RL, Mask); in forceExpandWideMUL()
10547 SDValue T = DAG.getNode(ISD::MUL, dl, VT, LLL, RLL); in forceExpandWideMUL()
10548 SDValue TL = DAG.getNode(ISD::AND, dl, VT, T, Mask); in forceExpandWideMUL()
10550 SDValue Shift = DAG.getShiftAmountConstant(HalfBits, VT, dl); in forceExpandWideMUL()
10551 SDValue TH = DAG.getNode(ISD::SRL, dl, VT, T, Shift); in forceExpandWideMUL()
10552 SDValue LLH = DAG.getNode(ISD::SRL, dl, VT, LL, Shift); in forceExpandWideMUL()
10553 SDValue RLH = DAG.getNode(ISD::SRL, dl, VT, RL, Shift); in forceExpandWideMUL()
10555 SDValue U = DAG.getNode(ISD::ADD, dl, VT, in forceExpandWideMUL()
10556 DAG.getNode(ISD::MUL, dl, VT, LLH, RLL), TH); in forceExpandWideMUL()
10557 SDValue UL = DAG.getNode(ISD::AND, dl, VT, U, Mask); in forceExpandWideMUL()
10558 SDValue UH = DAG.getNode(ISD::SRL, dl, VT, U, Shift); in forceExpandWideMUL()
10560 SDValue V = DAG.getNode(ISD::ADD, dl, VT, in forceExpandWideMUL()
10561 DAG.getNode(ISD::MUL, dl, VT, LLL, RLH), UL); in forceExpandWideMUL()
10562 SDValue VH = DAG.getNode(ISD::SRL, dl, VT, V, Shift); in forceExpandWideMUL()
10565 DAG.getNode(ISD::ADD, dl, VT, DAG.getNode(ISD::MUL, dl, VT, LLH, RLH), in forceExpandWideMUL()
10566 DAG.getNode(ISD::ADD, dl, VT, UH, VH)); in forceExpandWideMUL()
10567 Lo = DAG.getNode(ISD::ADD, dl, VT, TL, in forceExpandWideMUL()
10568 DAG.getNode(ISD::SHL, dl, VT, V, Shift)); in forceExpandWideMUL()
10570 Hi = DAG.getNode(ISD::ADD, dl, VT, W, in forceExpandWideMUL()
10571 DAG.getNode(ISD::ADD, dl, VT, in forceExpandWideMUL()
10572 DAG.getNode(ISD::MUL, dl, VT, RH, LL), in forceExpandWideMUL()
10573 DAG.getNode(ISD::MUL, dl, VT, RL, LH))); in forceExpandWideMUL()
10586 Ret = makeLibCall(DAG, LC, WideVT, Args, CallOptions, dl).first; in forceExpandWideMUL()
10589 Ret = makeLibCall(DAG, LC, WideVT, Args, CallOptions, dl).first; in forceExpandWideMUL()
10604 void TargetLowering::forceExpandWideMUL(SelectionDAG &DAG, const SDLoc &dl, in forceExpandWideMUL() argument
10618 ISD::SRA, dl, VT, LHS, in forceExpandWideMUL()
10619 DAG.getConstant(LoSize - 1, dl, getPointerTy(DAG.getDataLayout()))); in forceExpandWideMUL()
10621 ISD::SRA, dl, VT, RHS, in forceExpandWideMUL()
10622 DAG.getConstant(LoSize - 1, dl, getPointerTy(DAG.getDataLayout()))); in forceExpandWideMUL()
10624 HiLHS = DAG.getConstant(0, dl, VT); in forceExpandWideMUL()
10625 HiRHS = DAG.getConstant(0, dl, VT); in forceExpandWideMUL()
10628 forceExpandWideMUL(DAG, dl, Signed, WideVT, LHS, HiLHS, RHS, HiRHS, Lo, Hi); in forceExpandWideMUL()
10639 SDLoc dl(Node); in expandFixedPointMul() local
10655 return DAG.getNode(ISD::MUL, dl, VT, LHS, RHS); in expandFixedPointMul()
10658 DAG.getNode(ISD::SMULO, dl, DAG.getVTList(VT, BoolVT), LHS, RHS); in expandFixedPointMul()
10661 SDValue Zero = DAG.getConstant(0, dl, VT); in expandFixedPointMul()
10665 SDValue SatMin = DAG.getConstant(MinVal, dl, VT); in expandFixedPointMul()
10666 SDValue SatMax = DAG.getConstant(MaxVal, dl, VT); in expandFixedPointMul()
10669 SDValue Xor = DAG.getNode(ISD::XOR, dl, VT, LHS, RHS); in expandFixedPointMul()
10670 SDValue ProdNeg = DAG.getSetCC(dl, BoolVT, Xor, Zero, ISD::SETLT); in expandFixedPointMul()
10671 Result = DAG.getSelect(dl, VT, ProdNeg, SatMin, SatMax); in expandFixedPointMul()
10672 return DAG.getSelect(dl, VT, Overflow, Result, Product); in expandFixedPointMul()
10675 DAG.getNode(ISD::UMULO, dl, DAG.getVTList(VT, BoolVT), LHS, RHS); in expandFixedPointMul()
10680 SDValue SatMax = DAG.getConstant(MaxVal, dl, VT); in expandFixedPointMul()
10681 return DAG.getSelect(dl, VT, Overflow, SatMax, Product); in expandFixedPointMul()
10697 SDValue Result = DAG.getNode(LoHiOp, dl, DAG.getVTList(VT, VT), LHS, RHS); in expandFixedPointMul()
10701 Lo = DAG.getNode(ISD::MUL, dl, VT, LHS, RHS); in expandFixedPointMul()
10702 Hi = DAG.getNode(HiOp, dl, VT, LHS, RHS); in expandFixedPointMul()
10706 SDValue LHSExt = DAG.getNode(Ext, dl, WideVT, LHS); in expandFixedPointMul()
10707 SDValue RHSExt = DAG.getNode(Ext, dl, WideVT, RHS); in expandFixedPointMul()
10708 SDValue Res = DAG.getNode(ISD::MUL, dl, WideVT, LHSExt, RHSExt); in expandFixedPointMul()
10709 Lo = DAG.getNode(ISD::TRUNCATE, dl, VT, Res); in expandFixedPointMul()
10711 DAG.getNode(ISD::SRA, dl, WideVT, Res, in expandFixedPointMul()
10712 DAG.getShiftAmountConstant(VTSize, WideVT, dl)); in expandFixedPointMul()
10713 Hi = DAG.getNode(ISD::TRUNCATE, dl, VT, Shifted); in expandFixedPointMul()
10717 forceExpandWideMUL(DAG, dl, Signed, LHS, RHS, Lo, Hi); in expandFixedPointMul()
10729 SDValue Result = DAG.getNode(ISD::FSHR, dl, VT, Hi, Lo, in expandFixedPointMul()
10730 DAG.getShiftAmountConstant(Scale, VT, dl)); in expandFixedPointMul()
10742 dl, VT); in expandFixedPointMul()
10743 Result = DAG.getSelectCC(dl, Hi, LowMask, in expandFixedPointMul()
10744 DAG.getConstant(MaxVal, dl, VT), Result, in expandFixedPointMul()
10753 SDValue SatMin = DAG.getConstant(APInt::getSignedMinValue(VTSize), dl, VT); in expandFixedPointMul()
10754 SDValue SatMax = DAG.getConstant(APInt::getSignedMaxValue(VTSize), dl, VT); in expandFixedPointMul()
10757 SDValue Sign = DAG.getNode(ISD::SRA, dl, VT, Lo, in expandFixedPointMul()
10758 DAG.getShiftAmountConstant(VTSize - 1, VT, dl)); in expandFixedPointMul()
10759 SDValue Overflow = DAG.getSetCC(dl, BoolVT, Hi, Sign, ISD::SETNE); in expandFixedPointMul()
10762 SDValue Zero = DAG.getConstant(0, dl, VT); in expandFixedPointMul()
10763 SDValue ResultIfOverflow = DAG.getSelectCC(dl, Hi, Zero, SatMin, SatMax, in expandFixedPointMul()
10766 return DAG.getSelect(dl, VT, Overflow, ResultIfOverflow, Result); in expandFixedPointMul()
10774 dl, VT); in expandFixedPointMul()
10775 Result = DAG.getSelectCC(dl, Hi, LowMask, SatMax, Result, ISD::SETGT); in expandFixedPointMul()
10780 dl, VT); in expandFixedPointMul()
10781 Result = DAG.getSelectCC(dl, Hi, HighMask, SatMin, Result, ISD::SETLT); in expandFixedPointMul()
10786 TargetLowering::expandFixedPointDiv(unsigned Opcode, const SDLoc &dl, in expandFixedPointDiv() argument
10826 LHS = DAG.getNode(ISD::SHL, dl, VT, LHS, in expandFixedPointDiv()
10827 DAG.getShiftAmountConstant(LHSShift, VT, dl)); in expandFixedPointDiv()
10829 RHS = DAG.getNode(Signed ? ISD::SRA : ISD::SRL, dl, VT, RHS, in expandFixedPointDiv()
10830 DAG.getShiftAmountConstant(RHSShift, VT, dl)); in expandFixedPointDiv()
10843 Quot = DAG.getNode(ISD::SDIVREM, dl, in expandFixedPointDiv()
10849 Quot = DAG.getNode(ISD::SDIV, dl, VT, in expandFixedPointDiv()
10851 Rem = DAG.getNode(ISD::SREM, dl, VT, in expandFixedPointDiv()
10854 SDValue Zero = DAG.getConstant(0, dl, VT); in expandFixedPointDiv()
10855 SDValue RemNonZero = DAG.getSetCC(dl, BoolVT, Rem, Zero, ISD::SETNE); in expandFixedPointDiv()
10856 SDValue LHSNeg = DAG.getSetCC(dl, BoolVT, LHS, Zero, ISD::SETLT); in expandFixedPointDiv()
10857 SDValue RHSNeg = DAG.getSetCC(dl, BoolVT, RHS, Zero, ISD::SETLT); in expandFixedPointDiv()
10858 SDValue QuotNeg = DAG.getNode(ISD::XOR, dl, BoolVT, LHSNeg, RHSNeg); in expandFixedPointDiv()
10859 SDValue Sub1 = DAG.getNode(ISD::SUB, dl, VT, Quot, in expandFixedPointDiv()
10860 DAG.getConstant(1, dl, VT)); in expandFixedPointDiv()
10861 Quot = DAG.getSelect(dl, VT, in expandFixedPointDiv()
10862 DAG.getNode(ISD::AND, dl, BoolVT, RemNonZero, QuotNeg), in expandFixedPointDiv()
10865 Quot = DAG.getNode(ISD::UDIV, dl, VT, in expandFixedPointDiv()
10873 SDLoc dl(Node); in expandUADDSUBO() local
10881 SDValue CarryIn = DAG.getConstant(0, dl, Node->getValueType(1)); in expandUADDSUBO()
10882 SDValue NodeCarry = DAG.getNode(OpcCarry, dl, Node->getVTList(), in expandUADDSUBO()
10889 Result = DAG.getNode(IsAdd ? ISD::ADD : ISD::SUB, dl, in expandUADDSUBO()
10903 DAG.getSetCC(dl, SetCCType, Result, in expandUADDSUBO()
10904 DAG.getConstant(0, dl, Node->getValueType(0)), ISD::SETEQ); in expandUADDSUBO()
10908 DAG.getSetCC(dl, SetCCType, LHS, in expandUADDSUBO()
10909 DAG.getConstant(0, dl, Node->getValueType(0)), ISD::SETNE); in expandUADDSUBO()
10912 SetCC = DAG.getSetCC(dl, SetCCType, Result, LHS, CC); in expandUADDSUBO()
10914 Overflow = DAG.getBoolExtOrTrunc(SetCC, dl, ResultType, ResultType); in expandUADDSUBO()
10919 SDLoc dl(Node); in expandSADDSUBO() local
10924 Result = DAG.getNode(IsAdd ? ISD::ADD : ISD::SUB, dl, in expandSADDSUBO()
10934 SDValue Sat = DAG.getNode(OpcSat, dl, LHS.getValueType(), LHS, RHS); in expandSADDSUBO()
10935 SDValue SetCC = DAG.getSetCC(dl, OType, Result, Sat, ISD::SETNE); in expandSADDSUBO()
10936 Overflow = DAG.getBoolExtOrTrunc(SetCC, dl, ResultType, ResultType); in expandSADDSUBO()
10940 SDValue Zero = DAG.getConstant(0, dl, LHS.getValueType()); in expandSADDSUBO()
10948 SDValue ResultLowerThanLHS = DAG.getSetCC(dl, OType, Result, LHS, ISD::SETLT); in expandSADDSUBO()
10950 DAG.getSetCC(dl, OType, RHS, Zero, IsAdd ? ISD::SETLT : ISD::SETGT); in expandSADDSUBO()
10953 DAG.getNode(ISD::XOR, dl, OType, ConditionRHS, ResultLowerThanLHS), dl, in expandSADDSUBO()
10959 SDLoc dl(Node); in expandMULO() local
10973 SDValue ShiftAmt = DAG.getShiftAmountConstant(C.logBase2(), VT, dl); in expandMULO()
10974 Result = DAG.getNode(ISD::SHL, dl, VT, LHS, ShiftAmt); in expandMULO()
10975 Overflow = DAG.getSetCC(dl, SetCCVT, in expandMULO()
10977 dl, VT, Result, ShiftAmt), in expandMULO()
10994 BottomHalf = DAG.getNode(ISD::MUL, dl, VT, LHS, RHS); in expandMULO()
10995 TopHalf = DAG.getNode(Ops[isSigned][0], dl, VT, LHS, RHS); in expandMULO()
10997 BottomHalf = DAG.getNode(Ops[isSigned][1], dl, DAG.getVTList(VT, VT), LHS, in expandMULO()
11001 LHS = DAG.getNode(Ops[isSigned][2], dl, WideVT, LHS); in expandMULO()
11002 RHS = DAG.getNode(Ops[isSigned][2], dl, WideVT, RHS); in expandMULO()
11003 SDValue Mul = DAG.getNode(ISD::MUL, dl, WideVT, LHS, RHS); in expandMULO()
11004 BottomHalf = DAG.getNode(ISD::TRUNCATE, dl, VT, Mul); in expandMULO()
11006 DAG.getShiftAmountConstant(VT.getScalarSizeInBits(), WideVT, dl); in expandMULO()
11007 TopHalf = DAG.getNode(ISD::TRUNCATE, dl, VT, in expandMULO()
11008 DAG.getNode(ISD::SRL, dl, WideVT, Mul, ShiftAmt)); in expandMULO()
11013 forceExpandWideMUL(DAG, dl, isSigned, LHS, RHS, BottomHalf, TopHalf); in expandMULO()
11019 VT.getScalarSizeInBits() - 1, BottomHalf.getValueType(), dl); in expandMULO()
11020 SDValue Sign = DAG.getNode(ISD::SRA, dl, VT, BottomHalf, ShiftAmt); in expandMULO()
11021 Overflow = DAG.getSetCC(dl, SetCCVT, TopHalf, Sign, ISD::SETNE); in expandMULO()
11023 Overflow = DAG.getSetCC(dl, SetCCVT, TopHalf, in expandMULO()
11024 DAG.getConstant(0, dl, VT), ISD::SETNE); in expandMULO()
11030 Overflow = DAG.getNode(ISD::TRUNCATE, dl, RType, Overflow); in expandMULO()
11038 SDLoc dl(Node); in expandVecReduce() local
11055 std::tie(Lo, Hi) = DAG.SplitVector(Op, dl); in expandVecReduce()
11056 Op = DAG.getNode(BaseOpcode, dl, HalfVT, Lo, Hi, Node->getFlags()); in expandVecReduce()
11069 Res = DAG.getNode(BaseOpcode, dl, EltVT, Res, Ops[i], Node->getFlags()); in expandVecReduce()
11073 Res = DAG.getNode(ISD::ANY_EXTEND, dl, Node->getValueType(0), Res); in expandVecReduce()
11078 SDLoc dl(Node); in expandVecReduceSeq() local
11099 Res = DAG.getNode(BaseOpcode, dl, EltVT, Res, Ops[i], Flags); in expandVecReduceSeq()
11107 SDLoc dl(Node); in expandREM() local
11115 Result = DAG.getNode(DivRemOpc, dl, VTs, Dividend, Divisor).getValue(1); in expandREM()
11120 SDValue Divide = DAG.getNode(DivOpc, dl, VT, Dividend, Divisor); in expandREM()
11121 SDValue Mul = DAG.getNode(ISD::MUL, dl, VT, Divide, Divisor); in expandREM()
11122 Result = DAG.getNode(ISD::SUB, dl, VT, Dividend, Mul); in expandREM()
11131 SDLoc dl(SDValue(Node, 0)); in expandFP_TO_INT_SAT() local
11158 Src = DAG.getNode(ISD::FP_EXTEND, dl, MVT::f32, Src); in expandFP_TO_INT_SAT()
11172 SDValue MinFloatNode = DAG.getConstantFP(MinFloat, dl, SrcVT); in expandFP_TO_INT_SAT()
11173 SDValue MaxFloatNode = DAG.getConstantFP(MaxFloat, dl, SrcVT); in expandFP_TO_INT_SAT()
11184 Clamped = DAG.getNode(ISD::FMAXNUM, dl, SrcVT, Clamped, MinFloatNode); in expandFP_TO_INT_SAT()
11186 Clamped = DAG.getNode(ISD::FMINNUM, dl, SrcVT, Clamped, MaxFloatNode); in expandFP_TO_INT_SAT()
11189 dl, DstVT, Clamped); in expandFP_TO_INT_SAT()
11197 SDValue ZeroInt = DAG.getConstant(0, dl, DstVT); in expandFP_TO_INT_SAT()
11200 SDValue IsNan = DAG.getSetCC(dl, SetCCVT, Src, Src, ISD::CondCode::SETUO); in expandFP_TO_INT_SAT()
11201 return DAG.getSelect(dl, DstVT, IsNan, ZeroInt, FpToInt); in expandFP_TO_INT_SAT()
11204 SDValue MinIntNode = DAG.getConstant(MinInt, dl, DstVT); in expandFP_TO_INT_SAT()
11205 SDValue MaxIntNode = DAG.getConstant(MaxInt, dl, DstVT); in expandFP_TO_INT_SAT()
11211 DAG.getNode(IsSigned ? ISD::FP_TO_SINT : ISD::FP_TO_UINT, dl, DstVT, Src); in expandFP_TO_INT_SAT()
11220 SDValue ULT = DAG.getSetCC(dl, SetCCVT, Src, MinFloatNode, ISD::SETULT); in expandFP_TO_INT_SAT()
11221 Select = DAG.getSelect(dl, DstVT, ULT, MinIntNode, Select); in expandFP_TO_INT_SAT()
11223 SDValue OGT = DAG.getSetCC(dl, SetCCVT, Src, MaxFloatNode, ISD::SETOGT); in expandFP_TO_INT_SAT()
11224 Select = DAG.getSelect(dl, DstVT, OGT, MaxIntNode, Select); in expandFP_TO_INT_SAT()
11232 SDValue ZeroInt = DAG.getConstant(0, dl, DstVT); in expandFP_TO_INT_SAT()
11233 SDValue IsNan = DAG.getSetCC(dl, SetCCVT, Src, Src, ISD::CondCode::SETUO); in expandFP_TO_INT_SAT()
11234 return DAG.getSelect(dl, DstVT, IsNan, ZeroInt, Select); in expandFP_TO_INT_SAT()
11238 const SDLoc &dl, in expandRoundInexactToOdd() argument
11253 DAG.getNode(ISD::AND, dl, WideIntVT, OpAsInt, in expandRoundInexactToOdd()
11254 DAG.getConstant(APInt::getSignMask(BitSize), dl, WideIntVT)); in expandRoundInexactToOdd()
11257 AbsWide = DAG.getNode(ISD::FABS, dl, OperandVT, Op); in expandRoundInexactToOdd()
11260 ISD::AND, dl, WideIntVT, OpAsInt, in expandRoundInexactToOdd()
11261 DAG.getConstant(APInt::getSignedMaxValue(BitSize), dl, WideIntVT)); in expandRoundInexactToOdd()
11264 SDValue AbsNarrow = DAG.getFPExtendOrRound(AbsWide, dl, ResultVT); in expandRoundInexactToOdd()
11265 SDValue AbsNarrowAsWide = DAG.getFPExtendOrRound(AbsNarrow, dl, OperandVT); in expandRoundInexactToOdd()
11270 SDValue NarrowBits = DAG.getNode(ISD::BITCAST, dl, ResultIntVT, AbsNarrow); in expandRoundInexactToOdd()
11271 SDValue One = DAG.getConstant(1, dl, ResultIntVT); in expandRoundInexactToOdd()
11272 SDValue NegativeOne = DAG.getAllOnesConstant(dl, ResultIntVT); in expandRoundInexactToOdd()
11273 SDValue And = DAG.getNode(ISD::AND, dl, ResultIntVT, NarrowBits, One); in expandRoundInexactToOdd()
11276 SDValue Zero = DAG.getConstant(0, dl, ResultIntVT); in expandRoundInexactToOdd()
11278 SDValue AlreadyOdd = DAG.getSetCC(dl, ResultIntVTCCVT, And, Zero, ISD::SETNE); in expandRoundInexactToOdd()
11284 DAG.getSetCC(dl, WideSetCCVT, AbsWide, AbsNarrowAsWide, ISD::SETUEQ); in expandRoundInexactToOdd()
11285 KeepNarrow = DAG.getNode(ISD::OR, dl, WideSetCCVT, KeepNarrow, AlreadyOdd); in expandRoundInexactToOdd()
11289 DAG.getSetCC(dl, WideSetCCVT, AbsWide, AbsNarrowAsWide, ISD::SETOGT); in expandRoundInexactToOdd()
11294 SDValue Adjust = DAG.getSelect(dl, ResultIntVT, NarrowIsRd, One, NegativeOne); in expandRoundInexactToOdd()
11295 SDValue Adjusted = DAG.getNode(ISD::ADD, dl, ResultIntVT, NarrowBits, Adjust); in expandRoundInexactToOdd()
11296 Op = DAG.getSelect(dl, ResultIntVT, KeepNarrow, NarrowBits, Adjusted); in expandRoundInexactToOdd()
11298 SDValue ShiftCnst = DAG.getShiftAmountConstant(ShiftAmount, WideIntVT, dl); in expandRoundInexactToOdd()
11299 SignBit = DAG.getNode(ISD::SRL, dl, WideIntVT, SignBit, ShiftCnst); in expandRoundInexactToOdd()
11300 SignBit = DAG.getNode(ISD::TRUNCATE, dl, ResultIntVT, SignBit); in expandRoundInexactToOdd()
11301 Op = DAG.getNode(ISD::OR, dl, ResultIntVT, Op, SignBit); in expandRoundInexactToOdd()
11302 return DAG.getNode(ISD::BITCAST, dl, ResultVT, Op); in expandRoundInexactToOdd()
11309 SDLoc dl(Node); in expandFP_ROUND() local
11312 return DAG.getNode(ISD::FP_TO_BF16, dl, VT, Node->getOperand(0)); in expandFP_ROUND()
11316 dl, in expandFP_ROUND()
11327 Op = expandRoundInexactToOdd(F32, Op, dl, DAG); in expandFP_ROUND()
11328 Op = DAG.getNode(ISD::BITCAST, dl, I32, Op); in expandFP_ROUND()
11333 DAG.getNode(ISD::OR, dl, I32, Op, DAG.getConstant(0x400000, dl, I32)); in expandFP_ROUND()
11336 SDValue One = DAG.getConstant(1, dl, I32); in expandFP_ROUND()
11337 SDValue Lsb = DAG.getNode(ISD::SRL, dl, I32, Op, in expandFP_ROUND()
11338 DAG.getShiftAmountConstant(16, I32, dl)); in expandFP_ROUND()
11339 Lsb = DAG.getNode(ISD::AND, dl, I32, Lsb, One); in expandFP_ROUND()
11341 DAG.getNode(ISD::ADD, dl, I32, DAG.getConstant(0x7fff, dl, I32), Lsb); in expandFP_ROUND()
11342 SDValue Add = DAG.getNode(ISD::ADD, dl, I32, Op, RoundingBias); in expandFP_ROUND()
11346 Op = DAG.getSelect(dl, I32, IsNaN, NaN, Add); in expandFP_ROUND()
11349 Op = DAG.getNode(ISD::SRL, dl, I32, Op, in expandFP_ROUND()
11350 DAG.getShiftAmountConstant(16, I32, dl)); in expandFP_ROUND()
11351 Op = DAG.getNode(ISD::BITCAST, dl, I32, Op); in expandFP_ROUND()
11353 Op = DAG.getNode(ISD::TRUNCATE, dl, I16, Op); in expandFP_ROUND()
11354 return DAG.getNode(ISD::BITCAST, dl, VT, Op); in expandFP_ROUND()
11539 const SDLoc &dl, SDValue &Chain, in LegalizeSetCCCondCode() argument
11654 SetCC1 = DAG.getSetCC(dl, VT, LHS, RHS, CC1, Chain, IsSignaling); in LegalizeSetCCCondCode()
11655 SetCC2 = DAG.getSetCC(dl, VT, LHS, RHS, CC2, Chain, IsSignaling); in LegalizeSetCCCondCode()
11657 SetCC1 = DAG.getSetCCVP(dl, VT, LHS, RHS, CC1, Mask, EVL); in LegalizeSetCCCondCode()
11658 SetCC2 = DAG.getSetCCVP(dl, VT, LHS, RHS, CC2, Mask, EVL); in LegalizeSetCCCondCode()
11663 SetCC1 = DAG.getSetCC(dl, VT, LHS, LHS, CC1, Chain, IsSignaling); in LegalizeSetCCCondCode()
11664 SetCC2 = DAG.getSetCC(dl, VT, RHS, RHS, CC2, Chain, IsSignaling); in LegalizeSetCCCondCode()
11666 SetCC1 = DAG.getSetCCVP(dl, VT, LHS, LHS, CC1, Mask, EVL); in LegalizeSetCCCondCode()
11667 SetCC2 = DAG.getSetCCVP(dl, VT, RHS, RHS, CC2, Mask, EVL); in LegalizeSetCCCondCode()
11671 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, SetCC1.getValue(1), in LegalizeSetCCCondCode()
11674 LHS = DAG.getNode(Opc, dl, VT, SetCC1, SetCC2); in LegalizeSetCCCondCode()
11679 LHS = DAG.getNode(Opc, dl, VT, SetCC1, SetCC2, Mask, EVL); in LegalizeSetCCCondCode()