Lines Matching refs:dl
146 const SDLoc &dl, in makeLibCall() argument
185 CLI.setDebugLoc(dl) in makeLibCall()
291 const SDLoc &dl, const SDValue OldLHS, in softenSetCCOperands() argument
294 return softenSetCCOperands(DAG, VT, NewLHS, NewRHS, CCCode, dl, OldLHS, in softenSetCCOperands()
301 const SDLoc &dl, const SDValue OldLHS, in softenSetCCOperands() argument
407 auto Call = makeLibCall(DAG, LC1, RetVT, Ops, CallOptions, dl, Chain); in softenSetCCOperands()
409 NewRHS = DAG.getConstant(0, dl, RetVT); in softenSetCCOperands()
423 SDValue Tmp = DAG.getSetCC(dl, SetCCVT, NewLHS, NewRHS, CCCode); in softenSetCCOperands()
424 auto Call2 = makeLibCall(DAG, LC2, RetVT, Ops, CallOptions, dl, Chain); in softenSetCCOperands()
428 NewLHS = DAG.getSetCC(dl, SetCCVT, Call2.first, NewRHS, CCCode); in softenSetCCOperands()
430 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Call.second, in softenSetCCOperands()
432 NewLHS = DAG.getNode(ShouldInvertCC ? ISD::AND : ISD::OR, dl, in softenSetCCOperands()
562 SDLoc dl(Op); in ShrinkDemandedOp() local
586 Op.getOpcode(), dl, SmallVT, in ShrinkDemandedOp()
587 DAG.getNode(ISD::TRUNCATE, dl, SmallVT, Op.getOperand(0)), in ShrinkDemandedOp()
588 DAG.getNode(ISD::TRUNCATE, dl, SmallVT, Op.getOperand(1))); in ShrinkDemandedOp()
590 SDValue Z = DAG.getNode(ISD::ANY_EXTEND, dl, Op.getValueType(), X); in ShrinkDemandedOp()
1085 SDLoc dl(Op); in SimplifyDemandedBits() local
1238 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, NewSrc, NewSub, in SimplifyDemandedBits()
1263 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, DemandedSrc, in SimplifyDemandedBits()
1339 SDValue NewOp = TLO.DAG.getVectorShuffle(VT, dl, Op0, Op1, ShuffleMask); in SimplifyDemandedBits()
1374 SDValue Xor = TLO.DAG.getNode(ISD::XOR, dl, VT, Op0.getOperand(0), Op1); in SimplifyDemandedBits()
1394 TLO.DAG.getNode(ISD::AND, dl, VT, Op0.getOperand(0), Op1); in SimplifyDemandedBits()
1396 TLO.DAG.getNode(ISD::INSERT_SUBVECTOR, dl, VT, NewAnd, in SimplifyDemandedBits()
1419 return TLO.CombineTo(Op, TLO.DAG.getConstant(0, dl, VT)); in SimplifyDemandedBits()
1437 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Op1); in SimplifyDemandedBits()
1480 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Op1); in SimplifyDemandedBits()
1499 if (SDValue C12 = TLO.DAG.FoldConstantArithmetic(ISD::OR, dl, VT, in SimplifyDemandedBits()
1501 SDValue MaskX = TLO.DAG.getNode(ISD::AND, dl, VT, X, C12); in SimplifyDemandedBits()
1502 SDValue MaskY = TLO.DAG.getNode(ISD::AND, dl, VT, Y, C2); in SimplifyDemandedBits()
1504 Op, TLO.DAG.getNode(ISD::OR, dl, VT, MaskX, MaskY)); in SimplifyDemandedBits()
1542 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::OR, dl, VT, Op0, Op1)); in SimplifyDemandedBits()
1553 TLO.DAG.getConstant(~C->getAPIntValue() & DemandedBits, dl, VT); in SimplifyDemandedBits()
1554 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::AND, dl, VT, Op0, ANDC)); in SimplifyDemandedBits()
1562 SDValue New = TLO.DAG.getNOT(dl, Op0, VT); in SimplifyDemandedBits()
1584 SDValue Not = TLO.DAG.getNOT(dl, Op0.getOperand(0), VT); in SimplifyDemandedBits()
1585 return TLO.CombineTo(Op, TLO.DAG.getNode(Op0Opcode, dl, VT, Not, in SimplifyDemandedBits()
1607 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Op1); in SimplifyDemandedBits()
1716 SDValue NewSA = TLO.DAG.getConstant(Diff, dl, ShiftVT); in SimplifyDemandedBits()
1718 Op, TLO.DAG.getNode(Opc, dl, VT, Op0.getOperand(0), NewSA)); in SimplifyDemandedBits()
1736 TLO.DAG.getNode(ISD::SHL, dl, InnerVT, InnerOp, in SimplifyDemandedBits()
1737 TLO.DAG.getConstant(ShAmt, dl, ShTy)); in SimplifyDemandedBits()
1739 Op, TLO.DAG.getNode(ISD::ANY_EXTEND, dl, VT, NarrowShl)); in SimplifyDemandedBits()
1758 TLO.DAG.getConstant(ShAmt - InnerShAmt, dl, ShiftVT); in SimplifyDemandedBits()
1759 SDValue NewExt = TLO.DAG.getNode(ISD::ANY_EXTEND, dl, VT, in SimplifyDemandedBits()
1762 Op, TLO.DAG.getNode(ISD::SHL, dl, VT, NewExt, NewSA)); in SimplifyDemandedBits()
1783 SDValue NewOp = TLO.DAG.getNode(ISD::SHL, dl, VT, DemandedOp0, Op1); in SimplifyDemandedBits()
1859 SDValue NewSA = TLO.DAG.getConstant(Diff, dl, ShiftVT); in SimplifyDemandedBits()
1861 Op, TLO.DAG.getNode(Opc, dl, VT, Op0.getOperand(0), NewSA)); in SimplifyDemandedBits()
1902 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::SRL, dl, VT, Op0, Op1)); in SimplifyDemandedBits()
1941 Op, TLO.DAG.getNode(ISD::SRL, dl, VT, Op0, Op1, Flags)); in SimplifyDemandedBits()
1947 SDValue NewSA = TLO.DAG.getConstant(BitWidth - 1 - Log2, dl, ShiftVT); in SimplifyDemandedBits()
1948 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::SRL, dl, VT, Op0, NewSA)); in SimplifyDemandedBits()
1960 SDValue NewOp = TLO.DAG.getNode(ISD::SRA, dl, VT, DemandedOp0, Op1); in SimplifyDemandedBits()
2014 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, DemandedOp0, in SimplifyDemandedBits()
2058 Op1 = TLO.DAG.getConstant(IsROTL ? Amt : RevAmt, dl, Op1.getValueType()); in SimplifyDemandedBits()
2059 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::SHL, dl, VT, Op0, Op1)); in SimplifyDemandedBits()
2063 Op1 = TLO.DAG.getConstant(IsROTL ? RevAmt : Amt, dl, Op1.getValueType()); in SimplifyDemandedBits()
2064 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::SRL, dl, VT, Op0, Op1)); in SimplifyDemandedBits()
2134 SDValue ShAmt = TLO.DAG.getConstant(ShiftAmount, dl, ShiftAmtTy); in SimplifyDemandedBits()
2135 SDValue NewOp = TLO.DAG.getNode(ShiftOpcode, dl, VT, Src, ShAmt); in SimplifyDemandedBits()
2153 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::PARITY, dl, VT, in SimplifyDemandedBits()
2174 SDValue ShiftAmt = TLO.DAG.getConstant(BitWidth - ExVTBits, dl, in SimplifyDemandedBits()
2177 TLO.DAG.getNode(ISD::SHL, dl, VT, Op0, ShiftAmt)); in SimplifyDemandedBits()
2201 return TLO.CombineTo(Op, TLO.DAG.getZeroExtendInReg(Op0, dl, ExVT)); in SimplifyDemandedBits()
2254 return TLO.CombineTo(Op, TLO.DAG.getNode(Opc, dl, VT, Src)); in SimplifyDemandedBits()
2269 return TLO.CombineTo(Op, TLO.DAG.getNode(Op.getOpcode(), dl, VT, NewSrc)); in SimplifyDemandedBits()
2291 return TLO.CombineTo(Op, TLO.DAG.getNode(Opc, dl, VT, Src)); in SimplifyDemandedBits()
2315 return TLO.CombineTo(Op, TLO.DAG.getNode(Opc, dl, VT, Src)); in SimplifyDemandedBits()
2321 return TLO.CombineTo(Op, TLO.DAG.getNode(Op.getOpcode(), dl, VT, NewSrc)); in SimplifyDemandedBits()
2350 return TLO.CombineTo(Op, TLO.DAG.getNode(Op.getOpcode(), dl, VT, NewSrc)); in SimplifyDemandedBits()
2368 return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::TRUNCATE, dl, VT, NewSrc)); in SimplifyDemandedBits()
2399 ShVal, dl, getShiftAmountTy(VT, DL, TLO.LegalTypes())); in SimplifyDemandedBits()
2401 TLO.DAG.getNode(ISD::TRUNCATE, dl, VT, Src.getOperand(0)); in SimplifyDemandedBits()
2403 Op, TLO.DAG.getNode(ISD::SRL, dl, VT, NewTrunc, NewShAmt)); in SimplifyDemandedBits()
2456 TLO.DAG.getNode(Op.getOpcode(), dl, VT, DemandedSrc, Idx); in SimplifyDemandedBits()
2484 SDValue Sign = TLO.DAG.getNode(ISD::FGETSIGN, dl, Ty, Src); in SimplifyDemandedBits()
2487 Sign = TLO.DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Sign); in SimplifyDemandedBits()
2489 SDValue ShAmt = TLO.DAG.getConstant(ShVal, dl, VT); in SimplifyDemandedBits()
2491 TLO.DAG.getNode(ISD::SHL, dl, VT, Sign, ShAmt)); in SimplifyDemandedBits()
2566 SDValue AmtC = TLO.DAG.getConstant(CTZ, dl, ShiftAmtTy); in SimplifyDemandedBits()
2567 SDValue Shl = TLO.DAG.getNode(ISD::SHL, dl, VT, Op.getOperand(0), AmtC); in SimplifyDemandedBits()
2575 SDValue One = TLO.DAG.getConstant(1, dl, VT); in SimplifyDemandedBits()
2576 SDValue And1 = TLO.DAG.getNode(ISD::AND, dl, VT, Op.getOperand(0), One); in SimplifyDemandedBits()
2616 TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Op1, Flags); in SimplifyDemandedBits()
2630 SDValue Neg1 = TLO.DAG.getAllOnesConstant(dl, VT); in SimplifyDemandedBits()
2635 SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Neg1, Flags); in SimplifyDemandedBits()
2660 SDValue ShlAmtC = TLO.DAG.getConstant(ShlAmt, dl, ShiftAmtTy); in SimplifyDemandedBits()
2661 SDValue Shl = TLO.DAG.getNode(ISD::SHL, dl, VT, X, ShlAmtC); in SimplifyDemandedBits()
2662 SDValue Res = TLO.DAG.getNode(NT, dl, VT, Y, Shl); in SimplifyDemandedBits()
2710 return TLO.CombineTo(Op, TLO.DAG.getConstant(Known.One, dl, VT)); in SimplifyDemandedBits()
2715 APFloat(TLO.DAG.EVTToAPFloatSemantics(VT), Known.One), dl, VT)); in SimplifyDemandedBits()
3956 ISD::CondCode Cond, const SDLoc &dl, in simplifySetCCWithCTPOP() argument
3987 SDValue NegOne = DAG.getAllOnesConstant(dl, CTVT); in simplifySetCCWithCTPOP()
3990 SDValue Add = DAG.getNode(ISD::ADD, dl, CTVT, Result, NegOne); in simplifySetCCWithCTPOP()
3991 Result = DAG.getNode(ISD::AND, dl, CTVT, Result, Add); in simplifySetCCWithCTPOP()
3994 return DAG.getSetCC(dl, VT, Result, DAG.getConstant(0, dl, CTVT), CC); in simplifySetCCWithCTPOP()
4007 SDValue Zero = DAG.getConstant(0, dl, CTVT); in simplifySetCCWithCTPOP()
4008 SDValue NegOne = DAG.getAllOnesConstant(dl, CTVT); in simplifySetCCWithCTPOP()
4011 SDValue Add = DAG.getNode(ISD::ADD, dl, CTVT, CTOp, NegOne); in simplifySetCCWithCTPOP()
4012 SDValue And = DAG.getNode(ISD::AND, dl, CTVT, CTOp, Add); in simplifySetCCWithCTPOP()
4013 SDValue LHS = DAG.getSetCC(dl, VT, CTOp, Zero, InvCond); in simplifySetCCWithCTPOP()
4014 SDValue RHS = DAG.getSetCC(dl, VT, And, Zero, Cond); in simplifySetCCWithCTPOP()
4016 return DAG.getNode(LogicOpcode, dl, VT, LHS, RHS); in simplifySetCCWithCTPOP()
4023 ISD::CondCode Cond, const SDLoc &dl, in foldSetCCWithRotate() argument
4042 return DAG.getSetCC(dl, VT, R, N1, Cond); in foldSetCCWithRotate()
4053 SDValue NewOr = DAG.getNode(ISD::OR, dl, OpVT, R, N0.getOperand(1)); in foldSetCCWithRotate()
4054 return DAG.getSetCC(dl, VT, NewOr, N1, Cond); in foldSetCCWithRotate()
4057 SDValue NewOr = DAG.getNode(ISD::OR, dl, OpVT, R, N0.getOperand(0)); in foldSetCCWithRotate()
4058 return DAG.getSetCC(dl, VT, NewOr, N1, Cond); in foldSetCCWithRotate()
4066 ISD::CondCode Cond, const SDLoc &dl, in foldSetCCWithFunnelShift() argument
4115 SDValue NewShAmt = DAG.getConstant(ShAmt, dl, ShAmtVT); in foldSetCCWithFunnelShift()
4116 SDValue Shift = DAG.getNode(ISD::SHL, dl, OpVT, Y, NewShAmt); in foldSetCCWithFunnelShift()
4117 SDValue NewOr = DAG.getNode(ISD::OR, dl, OpVT, Shift, X); in foldSetCCWithFunnelShift()
4118 return DAG.getSetCC(dl, VT, NewOr, N1, Cond); in foldSetCCWithFunnelShift()
4122 SDValue NewShAmt = DAG.getConstant(BitWidth - ShAmt, dl, ShAmtVT); in foldSetCCWithFunnelShift()
4123 SDValue Shift = DAG.getNode(ISD::SRL, dl, OpVT, Y, NewShAmt); in foldSetCCWithFunnelShift()
4124 SDValue NewOr = DAG.getNode(ISD::OR, dl, OpVT, Shift, X); in foldSetCCWithFunnelShift()
4125 return DAG.getSetCC(dl, VT, NewOr, N1, Cond); in foldSetCCWithFunnelShift()
4136 const SDLoc &dl) const { in SimplifySetCC()
4142 if (SDValue Fold = DAG.FoldSetCC(VT, N0, N1, Cond, dl)) in SimplifySetCC()
4158 return DAG.getSetCC(dl, VT, N1, N0, SwappedCC); in SimplifySetCC()
4169 return DAG.getSetCC(dl, VT, N1, N0, SwappedCC); in SimplifySetCC()
4171 if (SDValue V = foldSetCCWithRotate(VT, N0, N1, Cond, dl, DAG)) in SimplifySetCC()
4174 if (SDValue V = foldSetCCWithFunnelShift(VT, N0, N1, Cond, dl, DAG)) in SimplifySetCC()
4181 if (SDValue V = simplifySetCCWithCTPOP(*this, VT, N0, C1, Cond, dl, DAG)) in SimplifySetCC()
4202 SDValue Zero = DAG.getConstant(0, dl, N0.getValueType()); in SimplifySetCC()
4203 return DAG.getSetCC(dl, VT, N0.getOperand(0).getOperand(0), Zero, in SimplifySetCC()
4259 SDValue Trunc = DAG.getNode(ISD::TRUNCATE, dl, MinVT, PreExt); in SimplifySetCC()
4262 return DAG.getSetCC(dl, VT, Trunc, DAG.getConstant(0, dl, MVT::i1), in SimplifySetCC()
4264 SDValue C = DAG.getConstant(C1.trunc(MinBits), dl, MinVT); in SimplifySetCC()
4265 return DAG.getSetCC(dl, VT, Trunc, C, Cond); in SimplifySetCC()
4294 return DAG.getSetCC(dl, VT, TopSetCC.getOperand(0), in SimplifySetCC()
4345 DAG.getMemBasePlusOffset(Ptr, TypeSize::Fixed(bestOffset), dl); in SimplifySetCC()
4347 DAG.getLoad(newVT, dl, Lod->getChain(), Ptr, in SimplifySetCC()
4350 return DAG.getSetCC(dl, VT, in SimplifySetCC()
4351 DAG.getNode(ISD::AND, dl, newVT, NewLoad, in SimplifySetCC()
4353 dl, newVT)), in SimplifySetCC()
4354 DAG.getConstant(0LL, dl, newVT), Cond); in SimplifySetCC()
4371 return DAG.getConstant(0, dl, VT); in SimplifySetCC()
4375 return DAG.getConstant(1, dl, VT); in SimplifySetCC()
4379 return DAG.getConstant(C1.isNegative(), dl, VT); in SimplifySetCC()
4383 return DAG.getConstant(C1.isNonNegative(), dl, VT); in SimplifySetCC()
4402 SDValue NewConst = DAG.getConstant(C1.trunc(InSize), dl, newVT); in SimplifySetCC()
4404 SDValue NewSetCC = DAG.getSetCC(dl, NewSetCCVT, N0.getOperand(0), in SimplifySetCC()
4406 return DAG.getBoolExtOrTrunc(NewSetCC, dl, VT, N0.getValueType()); in SimplifySetCC()
4425 return DAG.getBoolConstant(Cond == ISD::SETNE, dl, VT, OpVT); in SimplifySetCC()
4430 SDValue ZextOp = DAG.getNode(ISD::AND, dl, ExtDstTy, N0.getOperand(0), in SimplifySetCC()
4431 DAG.getConstant(Imm, dl, ExtDstTy)); in SimplifySetCC()
4435 return DAG.getSetCC(dl, VT, ZextOp, in SimplifySetCC()
4436 DAG.getConstant(C1 & Imm, dl, ExtDstTy), Cond); in SimplifySetCC()
4447 return DAG.getNode(ISD::TRUNCATE, dl, VT, N0); in SimplifySetCC()
4453 return DAG.getSetCC(dl, VT, N0.getOperand(0), N0.getOperand(1), CC); in SimplifySetCC()
4475 Val = DAG.getNode(ISD::AND, dl, N0.getValueType(), in SimplifySetCC()
4480 return DAG.getSetCC(dl, VT, Val, N1, in SimplifySetCC()
4501 return DAG.getSetCC(dl, VT, XorLHS, XorRHS, Cond); in SimplifySetCC()
4507 Op0 = DAG.getNode(ISD::AND, dl, VT, in SimplifySetCC()
4508 DAG.getNode(ISD::TRUNCATE, dl, VT, Op0.getOperand(0)), in SimplifySetCC()
4509 DAG.getConstant(1, dl, VT)); in SimplifySetCC()
4511 Op0 = DAG.getNode(ISD::AND, dl, VT, in SimplifySetCC()
4512 DAG.getNode(ISD::ANY_EXTEND, dl, VT, Op0.getOperand(0)), in SimplifySetCC()
4513 DAG.getConstant(1, dl, VT)); in SimplifySetCC()
4515 return DAG.getSetCC(dl, VT, Op0, in SimplifySetCC()
4516 DAG.getConstant(0, dl, Op0.getValueType()), in SimplifySetCC()
4521 return DAG.getSetCC(dl, VT, Op0, in SimplifySetCC()
4522 DAG.getConstant(0, dl, Op0.getValueType()), in SimplifySetCC()
4536 return DAG.getSetCC(dl, VT, N0.getOperand(0), N1, Cond); in SimplifySetCC()
4545 return DAG.getSetCC(dl, VT, N0.getOperand(0), in SimplifySetCC()
4546 DAG.getConstant(0, dl, OpVT), in SimplifySetCC()
4551 optimizeSetCCOfSignedTruncationCheck(VT, N0, N1, Cond, DCI, dl)) in SimplifySetCC()
4574 return DAG.getBoolConstant(true, dl, VT, OpVT); in SimplifySetCC()
4584 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4585 DAG.getConstant(C, dl, N1.getValueType()), in SimplifySetCC()
4594 return DAG.getBoolConstant(true, dl, VT, OpVT); in SimplifySetCC()
4604 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4605 DAG.getConstant(C, dl, N1.getValueType()), in SimplifySetCC()
4613 return DAG.getBoolConstant(false, dl, VT, OpVT); // X < MIN --> false in SimplifySetCC()
4619 return DAG.getSetCC(dl, VT, N0, N1, ISD::SETNE); in SimplifySetCC()
4623 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4624 DAG.getConstant(MinVal, dl, N0.getValueType()), in SimplifySetCC()
4631 return DAG.getBoolConstant(false, dl, VT, OpVT); // X > MAX --> false in SimplifySetCC()
4637 return DAG.getSetCC(dl, VT, N0, N1, ISD::SETNE); in SimplifySetCC()
4641 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4642 DAG.getConstant(MaxVal, dl, N0.getValueType()), in SimplifySetCC()
4651 VT, N0, N1, Cond, DCI, dl)) in SimplifySetCC()
4693 SDValue LoBits = DAG.getConstant(~HiBits, dl, OpVT); in SimplifySetCC()
4694 SDValue HiMask = DAG.getNode(ISD::AND, dl, OpVT, Hi, LoBits); in SimplifySetCC()
4696 DAG.getNode(CmpZero ? ISD::OR : ISD::AND, dl, OpVT, Lo, HiMask); in SimplifySetCC()
4697 SDValue NewN1 = CmpZero ? DAG.getConstant(0, dl, OpVT) : LoBits; in SimplifySetCC()
4698 return DAG.getSetCC(dl, VT, NewN0, NewN1, Cond); in SimplifySetCC()
4709 return MergeConcat(DAG.getNode(N0.getOpcode(), dl, OpVT, Lo0, Lo1), in SimplifySetCC()
4710 DAG.getNode(N0.getOpcode(), dl, OpVT, Hi0, Hi1)); in SimplifySetCC()
4724 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4725 DAG.getConstant(0, dl, N1.getValueType()), in SimplifySetCC()
4732 return DAG.getSetCC(dl, VT, N0, in SimplifySetCC()
4733 DAG.getAllOnesConstant(dl, N1.getValueType()), in SimplifySetCC()
4762 return DAG.getNode(ISD::TRUNCATE, dl, VT, in SimplifySetCC()
4763 DAG.getNode(ISD::SRL, dl, ShValTy, N0, in SimplifySetCC()
4764 DAG.getConstant(ShCt, dl, ShiftTy))); in SimplifySetCC()
4772 return DAG.getNode(ISD::TRUNCATE, dl, VT, in SimplifySetCC()
4773 DAG.getNode(ISD::SRL, dl, ShValTy, N0, in SimplifySetCC()
4774 DAG.getConstant(ShCt, dl, ShiftTy))); in SimplifySetCC()
4792 DAG.getNode(ISD::SRL, dl, ShValTy, N0.getOperand(0), in SimplifySetCC()
4793 DAG.getConstant(ShiftBits, dl, ShiftTy)); in SimplifySetCC()
4794 SDValue CmpRHS = DAG.getConstant(C1.lshr(ShiftBits), dl, ShValTy); in SimplifySetCC()
4795 return DAG.getSetCC(dl, VT, Shift, CmpRHS, Cond); in SimplifySetCC()
4820 SDValue Shift = DAG.getNode(ISD::SRL, dl, ShValTy, N0, in SimplifySetCC()
4821 DAG.getConstant(ShiftBits, dl, ShiftTy)); in SimplifySetCC()
4822 SDValue CmpRHS = DAG.getConstant(NewC, dl, ShValTy); in SimplifySetCC()
4823 return DAG.getSetCC(dl, VT, Shift, CmpRHS, NewCond); in SimplifySetCC()
4838 return DAG.getSetCC(dl, VT, N0, N0, Cond); in SimplifySetCC()
4845 SDValue NegN1 = DAG.getNode(ISD::FNEG, dl, N0.getValueType(), N1); in SimplifySetCC()
4846 return DAG.getSetCC(dl, VT, N0.getOperand(0), NegN1, SwapCond); in SimplifySetCC()
4868 return DAG.getSetCC(dl, VT, N0, N1, NewCond); in SimplifySetCC()
4882 return DAG.getBoolConstant(EqTrue, dl, VT, OpVT); in SimplifySetCC()
4884 return DAG.getBoolConstant(EqTrue, dl, VT, OpVT); in SimplifySetCC()
4891 return DAG.getSetCC(dl, VT, N0, N1, NewCond); in SimplifySetCC()
4901 return DAG.getSetCC(dl, VT, N0.getOperand(1), N1.getOperand(1), Cond); in SimplifySetCC()
4903 return DAG.getSetCC(dl, VT, N0.getOperand(0), N1.getOperand(0), Cond); in SimplifySetCC()
4907 return DAG.getSetCC(dl, VT, N0.getOperand(1), N1.getOperand(0), in SimplifySetCC()
4910 return DAG.getSetCC(dl, VT, N0.getOperand(0), N1.getOperand(1), in SimplifySetCC()
4924 dl, VT, N0.getOperand(0), in SimplifySetCC()
4926 dl, N0.getValueType()), in SimplifySetCC()
4932 dl, VT, N0.getOperand(0), in SimplifySetCC()
4934 dl, N0.getValueType()), in SimplifySetCC()
4942 dl, VT, N0.getOperand(1), in SimplifySetCC()
4944 dl, N0.getValueType()), in SimplifySetCC()
4957 if (SDValue V = foldSetCCWithBinOp(VT, N0, N1, Cond, dl, DCI)) in SimplifySetCC()
4963 if (SDValue V = foldSetCCWithBinOp(VT, N1, N0, Cond, dl, DCI)) in SimplifySetCC()
4966 if (SDValue V = foldSetCCWithAnd(VT, N0, N1, Cond, dl, DCI)) in SimplifySetCC()
4979 if (SDValue Folded = buildUREMEqFold(VT, N0, N1, Cond, DCI, dl)) in SimplifySetCC()
4982 if (SDValue Folded = buildSREMEqFold(VT, N0, N1, Cond, DCI, dl)) in SimplifySetCC()
4994 Temp = DAG.getNode(ISD::XOR, dl, OpVT, N0, N1); in SimplifySetCC()
4995 N0 = DAG.getNOT(dl, Temp, OpVT); in SimplifySetCC()
5000 N0 = DAG.getNode(ISD::XOR, dl, OpVT, N0, N1); in SimplifySetCC()
5004 Temp = DAG.getNOT(dl, N0, OpVT); in SimplifySetCC()
5005 N0 = DAG.getNode(ISD::AND, dl, OpVT, N1, Temp); in SimplifySetCC()
5011 Temp = DAG.getNOT(dl, N1, OpVT); in SimplifySetCC()
5012 N0 = DAG.getNode(ISD::AND, dl, OpVT, N0, Temp); in SimplifySetCC()
5018 Temp = DAG.getNOT(dl, N0, OpVT); in SimplifySetCC()
5019 N0 = DAG.getNode(ISD::OR, dl, OpVT, N1, Temp); in SimplifySetCC()
5025 Temp = DAG.getNOT(dl, N1, OpVT); in SimplifySetCC()
5026 N0 = DAG.getNode(ISD::OR, dl, OpVT, N0, Temp); in SimplifySetCC()
5034 N0 = DAG.getNode(ExtendCode, dl, VT, N0); in SimplifySetCC()
5680 const SDLoc &dl, SelectionDAG &DAG, in BuildExactSDIV() argument
5706 Shifts.push_back(DAG.getConstant(Shift, dl, ShSVT)); in BuildExactSDIV()
5707 Factors.push_back(DAG.getConstant(Factor, dl, SVT)); in BuildExactSDIV()
5717 Shift = DAG.getBuildVector(ShVT, dl, Shifts); in BuildExactSDIV()
5718 Factor = DAG.getBuildVector(VT, dl, Factors); in BuildExactSDIV()
5723 Shift = DAG.getSplatVector(ShVT, dl, Shifts[0]); in BuildExactSDIV()
5724 Factor = DAG.getSplatVector(VT, dl, Factors[0]); in BuildExactSDIV()
5738 Res = DAG.getNode(ISD::SRA, dl, VT, Res, Shift, Flags); in BuildExactSDIV()
5742 return DAG.getNode(ISD::MUL, dl, VT, Res, Factor); in BuildExactSDIV()
5773 SDLoc dl(N); in BuildSDIV() local
5801 return BuildExactSDIV(*this, N, dl, DAG, Created); in BuildSDIV()
5828 MagicFactors.push_back(DAG.getConstant(magics.Magic, dl, SVT)); in BuildSDIV()
5829 Factors.push_back(DAG.getConstant(NumeratorFactor, dl, SVT)); in BuildSDIV()
5830 Shifts.push_back(DAG.getConstant(magics.ShiftAmount, dl, ShSVT)); in BuildSDIV()
5831 ShiftMasks.push_back(DAG.getConstant(ShiftMask, dl, SVT)); in BuildSDIV()
5844 MagicFactor = DAG.getBuildVector(VT, dl, MagicFactors); in BuildSDIV()
5845 Factor = DAG.getBuildVector(VT, dl, Factors); in BuildSDIV()
5846 Shift = DAG.getBuildVector(ShVT, dl, Shifts); in BuildSDIV()
5847 ShiftMask = DAG.getBuildVector(VT, dl, ShiftMasks); in BuildSDIV()
5853 MagicFactor = DAG.getSplatVector(VT, dl, MagicFactors[0]); in BuildSDIV()
5854 Factor = DAG.getSplatVector(VT, dl, Factors[0]); in BuildSDIV()
5855 Shift = DAG.getSplatVector(ShVT, dl, Shifts[0]); in BuildSDIV()
5856 ShiftMask = DAG.getSplatVector(VT, dl, ShiftMasks[0]); in BuildSDIV()
5871 X = DAG.getNode(ISD::SIGN_EXTEND, dl, MulVT, X); in BuildSDIV()
5872 Y = DAG.getNode(ISD::SIGN_EXTEND, dl, MulVT, Y); in BuildSDIV()
5873 Y = DAG.getNode(ISD::MUL, dl, MulVT, X, Y); in BuildSDIV()
5874 Y = DAG.getNode(ISD::SRL, dl, MulVT, Y, in BuildSDIV()
5875 DAG.getShiftAmountConstant(EltBits, MulVT, dl)); in BuildSDIV()
5876 return DAG.getNode(ISD::TRUNCATE, dl, VT, Y); in BuildSDIV()
5880 return DAG.getNode(ISD::MULHS, dl, VT, X, Y); in BuildSDIV()
5883 DAG.getNode(ISD::SMUL_LOHI, dl, DAG.getVTList(VT, VT), X, Y); in BuildSDIV()
5896 Factor = DAG.getNode(ISD::MUL, dl, VT, N0, Factor); in BuildSDIV()
5898 Q = DAG.getNode(ISD::ADD, dl, VT, Q, Factor); in BuildSDIV()
5902 Q = DAG.getNode(ISD::SRA, dl, VT, Q, Shift); in BuildSDIV()
5906 SDValue SignShift = DAG.getConstant(EltBits - 1, dl, ShVT); in BuildSDIV()
5907 SDValue T = DAG.getNode(ISD::SRL, dl, VT, Q, SignShift); in BuildSDIV()
5909 T = DAG.getNode(ISD::AND, dl, VT, T, ShiftMask); in BuildSDIV()
5911 return DAG.getNode(ISD::ADD, dl, VT, Q, T); in BuildSDIV()
5921 SDLoc dl(N); in BuildUDIV() local
5981 PreShifts.push_back(DAG.getConstant(PreShift, dl, ShSVT)); in BuildUDIV()
5982 MagicFactors.push_back(DAG.getConstant(magics.Magic, dl, SVT)); in BuildUDIV()
5986 dl, SVT)); in BuildUDIV()
5987 PostShifts.push_back(DAG.getConstant(PostShift, dl, ShSVT)); in BuildUDIV()
6001 PreShift = DAG.getBuildVector(ShVT, dl, PreShifts); in BuildUDIV()
6002 MagicFactor = DAG.getBuildVector(VT, dl, MagicFactors); in BuildUDIV()
6003 NPQFactor = DAG.getBuildVector(VT, dl, NPQFactors); in BuildUDIV()
6004 PostShift = DAG.getBuildVector(ShVT, dl, PostShifts); in BuildUDIV()
6009 PreShift = DAG.getSplatVector(ShVT, dl, PreShifts[0]); in BuildUDIV()
6010 MagicFactor = DAG.getSplatVector(VT, dl, MagicFactors[0]); in BuildUDIV()
6011 NPQFactor = DAG.getSplatVector(VT, dl, NPQFactors[0]); in BuildUDIV()
6012 PostShift = DAG.getSplatVector(ShVT, dl, PostShifts[0]); in BuildUDIV()
6021 Q = DAG.getNode(ISD::SRL, dl, VT, Q, PreShift); in BuildUDIV()
6029 X = DAG.getNode(ISD::ZERO_EXTEND, dl, MulVT, X); in BuildUDIV()
6030 Y = DAG.getNode(ISD::ZERO_EXTEND, dl, MulVT, Y); in BuildUDIV()
6031 Y = DAG.getNode(ISD::MUL, dl, MulVT, X, Y); in BuildUDIV()
6032 Y = DAG.getNode(ISD::SRL, dl, MulVT, Y, in BuildUDIV()
6033 DAG.getShiftAmountConstant(EltBits, MulVT, dl)); in BuildUDIV()
6034 return DAG.getNode(ISD::TRUNCATE, dl, VT, Y); in BuildUDIV()
6038 return DAG.getNode(ISD::MULHU, dl, VT, X, Y); in BuildUDIV()
6041 DAG.getNode(ISD::UMUL_LOHI, dl, DAG.getVTList(VT, VT), X, Y); in BuildUDIV()
6055 SDValue NPQ = DAG.getNode(ISD::SUB, dl, VT, N0, Q); in BuildUDIV()
6063 NPQ = DAG.getNode(ISD::SRL, dl, VT, NPQ, DAG.getConstant(1, dl, ShVT)); in BuildUDIV()
6067 Q = DAG.getNode(ISD::ADD, dl, VT, NPQ, Q); in BuildUDIV()
6071 Q = DAG.getNode(ISD::SRL, dl, VT, Q, PostShift); in BuildUDIV()
6076 SDValue One = DAG.getConstant(1, dl, VT); in BuildUDIV()
6077 SDValue IsOne = DAG.getSetCC(dl, SetCCVT, N1, One, ISD::SETEQ); in BuildUDIV()
6078 return DAG.getSelect(dl, VT, IsOne, N0, Q); in BuildUDIV()
6933 bool TargetLowering::expandMUL_LOHI(unsigned Opcode, EVT VT, const SDLoc &dl, in expandMUL_LOHI() argument
6965 Lo = DAG.getNode(Signed ? ISD::SMUL_LOHI : ISD::UMUL_LOHI, dl, VTs, L, R); in expandMUL_LOHI()
6970 Lo = DAG.getNode(ISD::MUL, dl, HiLoVT, L, R); in expandMUL_LOHI()
6971 Hi = DAG.getNode(Signed ? ISD::MULHS : ISD::MULHU, dl, HiLoVT, L, R); in expandMUL_LOHI()
6981 LL = DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, LHS); in expandMUL_LOHI()
6982 RL = DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, RHS); in expandMUL_LOHI()
6996 SDValue Zero = DAG.getConstant(0, dl, HiLoVT); in expandMUL_LOHI()
7018 SDValue Shift = DAG.getConstant(ShiftAmount, dl, ShiftAmountTy); in expandMUL_LOHI()
7023 LH = DAG.getNode(ISD::SRL, dl, VT, LHS, Shift); in expandMUL_LOHI()
7024 LH = DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, LH); in expandMUL_LOHI()
7025 RH = DAG.getNode(ISD::SRL, dl, VT, RHS, Shift); in expandMUL_LOHI()
7026 RH = DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, RH); in expandMUL_LOHI()
7038 RH = DAG.getNode(ISD::MUL, dl, HiLoVT, LL, RH); in expandMUL_LOHI()
7039 LH = DAG.getNode(ISD::MUL, dl, HiLoVT, LH, RL); in expandMUL_LOHI()
7040 Hi = DAG.getNode(ISD::ADD, dl, HiLoVT, Hi, RH); in expandMUL_LOHI()
7041 Hi = DAG.getNode(ISD::ADD, dl, HiLoVT, Hi, LH); in expandMUL_LOHI()
7048 Lo = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Lo); in expandMUL_LOHI()
7049 Hi = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Hi); in expandMUL_LOHI()
7050 Hi = DAG.getNode(ISD::SHL, dl, VT, Hi, Shift); in expandMUL_LOHI()
7051 return DAG.getNode(ISD::OR, dl, VT, Lo, Hi); in expandMUL_LOHI()
7054 SDValue Next = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Hi); in expandMUL_LOHI()
7060 Next = DAG.getNode(ISD::ADD, dl, VT, Next, Merge(Lo, Hi)); in expandMUL_LOHI()
7065 SDValue Zero = DAG.getConstant(0, dl, HiLoVT); in expandMUL_LOHI()
7071 Next = DAG.getNode(ISD::ADDC, dl, DAG.getVTList(VT, MVT::Glue), Next, in expandMUL_LOHI()
7074 Next = DAG.getNode(ISD::ADDCARRY, dl, DAG.getVTList(VT, BoolType), Next, in expandMUL_LOHI()
7075 Merge(Lo, Hi), DAG.getConstant(0, dl, BoolType)); in expandMUL_LOHI()
7078 Result.push_back(DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, Next)); in expandMUL_LOHI()
7079 Next = DAG.getNode(ISD::SRL, dl, VT, Next, Shift); in expandMUL_LOHI()
7085 Hi = DAG.getNode(ISD::ADDE, dl, DAG.getVTList(HiLoVT, MVT::Glue), Hi, Zero, in expandMUL_LOHI()
7088 Hi = DAG.getNode(ISD::ADDCARRY, dl, DAG.getVTList(HiLoVT, BoolType), Hi, in expandMUL_LOHI()
7091 Next = DAG.getNode(ISD::ADD, dl, VT, Next, Merge(Lo, Hi)); in expandMUL_LOHI()
7094 SDValue NextSub = DAG.getNode(ISD::SUB, dl, VT, Next, in expandMUL_LOHI()
7095 DAG.getNode(ISD::ZERO_EXTEND, dl, VT, RL)); in expandMUL_LOHI()
7096 Next = DAG.getSelectCC(dl, LH, Zero, NextSub, Next, ISD::SETLT); in expandMUL_LOHI()
7098 NextSub = DAG.getNode(ISD::SUB, dl, VT, Next, in expandMUL_LOHI()
7099 DAG.getNode(ISD::ZERO_EXTEND, dl, VT, LL)); in expandMUL_LOHI()
7100 Next = DAG.getSelectCC(dl, RH, Zero, NextSub, Next, ISD::SETLT); in expandMUL_LOHI()
7103 Result.push_back(DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, Next)); in expandMUL_LOHI()
7104 Next = DAG.getNode(ISD::SRL, dl, VT, Next, Shift); in expandMUL_LOHI()
7105 Result.push_back(DAG.getNode(ISD::TRUNCATE, dl, HiLoVT, Next)); in expandMUL_LOHI()
7289 SDLoc dl(Node); in expandShiftParts() local
7294 SDValue SafeShAmt = DAG.getNode(ISD::AND, dl, ShAmtVT, ShAmt, in expandShiftParts()
7295 DAG.getConstant(VTBits - 1, dl, ShAmtVT)); in expandShiftParts()
7296 SDValue Tmp1 = IsSRA ? DAG.getNode(ISD::SRA, dl, VT, ShOpHi, in expandShiftParts()
7297 DAG.getConstant(VTBits - 1, dl, ShAmtVT)) in expandShiftParts()
7298 : DAG.getConstant(0, dl, VT); in expandShiftParts()
7302 Tmp2 = DAG.getNode(ISD::FSHL, dl, VT, ShOpHi, ShOpLo, ShAmt); in expandShiftParts()
7303 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, ShOpLo, SafeShAmt); in expandShiftParts()
7305 Tmp2 = DAG.getNode(ISD::FSHR, dl, VT, ShOpHi, ShOpLo, ShAmt); in expandShiftParts()
7306 Tmp3 = DAG.getNode(IsSRA ? ISD::SRA : ISD::SRL, dl, VT, ShOpHi, SafeShAmt); in expandShiftParts()
7312 SDValue AndNode = DAG.getNode(ISD::AND, dl, ShAmtVT, ShAmt, in expandShiftParts()
7313 DAG.getConstant(VTBits, dl, ShAmtVT)); in expandShiftParts()
7314 SDValue Cond = DAG.getSetCC(dl, ShAmtCCVT, AndNode, in expandShiftParts()
7315 DAG.getConstant(0, dl, ShAmtVT), ISD::SETNE); in expandShiftParts()
7318 Hi = DAG.getNode(ISD::SELECT, dl, VT, Cond, Tmp3, Tmp2); in expandShiftParts()
7319 Lo = DAG.getNode(ISD::SELECT, dl, VT, Cond, Tmp1, Tmp3); in expandShiftParts()
7321 Lo = DAG.getNode(ISD::SELECT, dl, VT, Cond, Tmp3, Tmp2); in expandShiftParts()
7322 Hi = DAG.getNode(ISD::SELECT, dl, VT, Cond, Tmp1, Tmp3); in expandShiftParts()
7332 SDLoc dl(SDValue(Node, 0)); in expandFP_TO_SINT() local
7352 SDValue ExponentMask = DAG.getConstant(0x7F800000, dl, IntVT); in expandFP_TO_SINT()
7353 SDValue ExponentLoBit = DAG.getConstant(23, dl, IntVT); in expandFP_TO_SINT()
7354 SDValue Bias = DAG.getConstant(127, dl, IntVT); in expandFP_TO_SINT()
7355 SDValue SignMask = DAG.getConstant(APInt::getSignMask(SrcEltBits), dl, IntVT); in expandFP_TO_SINT()
7356 SDValue SignLowBit = DAG.getConstant(SrcEltBits - 1, dl, IntVT); in expandFP_TO_SINT()
7357 SDValue MantissaMask = DAG.getConstant(0x007FFFFF, dl, IntVT); in expandFP_TO_SINT()
7359 SDValue Bits = DAG.getNode(ISD::BITCAST, dl, IntVT, Src); in expandFP_TO_SINT()
7362 ISD::SRL, dl, IntVT, DAG.getNode(ISD::AND, dl, IntVT, Bits, ExponentMask), in expandFP_TO_SINT()
7363 DAG.getZExtOrTrunc(ExponentLoBit, dl, IntShVT)); in expandFP_TO_SINT()
7364 SDValue Exponent = DAG.getNode(ISD::SUB, dl, IntVT, ExponentBits, Bias); in expandFP_TO_SINT()
7366 SDValue Sign = DAG.getNode(ISD::SRA, dl, IntVT, in expandFP_TO_SINT()
7367 DAG.getNode(ISD::AND, dl, IntVT, Bits, SignMask), in expandFP_TO_SINT()
7368 DAG.getZExtOrTrunc(SignLowBit, dl, IntShVT)); in expandFP_TO_SINT()
7369 Sign = DAG.getSExtOrTrunc(Sign, dl, DstVT); in expandFP_TO_SINT()
7371 SDValue R = DAG.getNode(ISD::OR, dl, IntVT, in expandFP_TO_SINT()
7372 DAG.getNode(ISD::AND, dl, IntVT, Bits, MantissaMask), in expandFP_TO_SINT()
7373 DAG.getConstant(0x00800000, dl, IntVT)); in expandFP_TO_SINT()
7375 R = DAG.getZExtOrTrunc(R, dl, DstVT); in expandFP_TO_SINT()
7378 dl, Exponent, ExponentLoBit, in expandFP_TO_SINT()
7379 DAG.getNode(ISD::SHL, dl, DstVT, R, in expandFP_TO_SINT()
7381 DAG.getNode(ISD::SUB, dl, IntVT, Exponent, ExponentLoBit), in expandFP_TO_SINT()
7382 dl, IntShVT)), in expandFP_TO_SINT()
7383 DAG.getNode(ISD::SRL, dl, DstVT, R, in expandFP_TO_SINT()
7385 DAG.getNode(ISD::SUB, dl, IntVT, ExponentLoBit, Exponent), in expandFP_TO_SINT()
7386 dl, IntShVT)), in expandFP_TO_SINT()
7389 SDValue Ret = DAG.getNode(ISD::SUB, dl, DstVT, in expandFP_TO_SINT()
7390 DAG.getNode(ISD::XOR, dl, DstVT, R, Sign), Sign); in expandFP_TO_SINT()
7392 Result = DAG.getSelectCC(dl, Exponent, DAG.getConstant(0, dl, IntVT), in expandFP_TO_SINT()
7393 DAG.getConstant(0, dl, DstVT), Ret, ISD::SETLT); in expandFP_TO_SINT()
7400 SDLoc dl(SDValue(Node, 0)); in expandFP_TO_UINT() local
7427 Result = DAG.getNode(ISD::STRICT_FP_TO_SINT, dl, { DstVT, MVT::Other }, in expandFP_TO_UINT()
7431 Result = DAG.getNode(ISD::FP_TO_SINT, dl, DstVT, Src); in expandFP_TO_UINT()
7440 SDValue Cst = DAG.getConstantFP(APF, dl, SrcVT); in expandFP_TO_UINT()
7444 Sel = DAG.getSetCC(dl, SetCCVT, Src, Cst, ISD::SETLT, in expandFP_TO_UINT()
7448 Sel = DAG.getSetCC(dl, SetCCVT, Src, Cst, ISD::SETLT); in expandFP_TO_UINT()
7463 SDValue FltOfs = DAG.getSelect(dl, SrcVT, Sel, in expandFP_TO_UINT()
7464 DAG.getConstantFP(0.0, dl, SrcVT), Cst); in expandFP_TO_UINT()
7465 Sel = DAG.getBoolExtOrTrunc(Sel, dl, DstSetCCVT, DstVT); in expandFP_TO_UINT()
7466 SDValue IntOfs = DAG.getSelect(dl, DstVT, Sel, in expandFP_TO_UINT()
7467 DAG.getConstant(0, dl, DstVT), in expandFP_TO_UINT()
7468 DAG.getConstant(SignMask, dl, DstVT)); in expandFP_TO_UINT()
7471 SDValue Val = DAG.getNode(ISD::STRICT_FSUB, dl, { SrcVT, MVT::Other }, in expandFP_TO_UINT()
7473 SInt = DAG.getNode(ISD::STRICT_FP_TO_SINT, dl, { DstVT, MVT::Other }, in expandFP_TO_UINT()
7477 SDValue Val = DAG.getNode(ISD::FSUB, dl, SrcVT, Src, FltOfs); in expandFP_TO_UINT()
7478 SInt = DAG.getNode(ISD::FP_TO_SINT, dl, DstVT, Val); in expandFP_TO_UINT()
7480 Result = DAG.getNode(ISD::XOR, dl, DstVT, SInt, IntOfs); in expandFP_TO_UINT()
7487 SDValue True = DAG.getNode(ISD::FP_TO_SINT, dl, DstVT, Src); in expandFP_TO_UINT()
7489 SDValue False = DAG.getNode(ISD::FP_TO_SINT, dl, DstVT, in expandFP_TO_UINT()
7490 DAG.getNode(ISD::FSUB, dl, SrcVT, Src, Cst)); in expandFP_TO_UINT()
7491 False = DAG.getNode(ISD::XOR, dl, DstVT, False, in expandFP_TO_UINT()
7492 DAG.getConstant(SignMask, dl, DstVT)); in expandFP_TO_UINT()
7493 Sel = DAG.getBoolExtOrTrunc(Sel, dl, DstSetCCVT, DstVT); in expandFP_TO_UINT()
7494 Result = DAG.getSelect(dl, DstVT, Sel, True, False); in expandFP_TO_UINT()
7523 SDLoc dl(SDValue(Node, 0)); in expandUINT_TO_FP() local
7531 SDValue TwoP52 = DAG.getConstant(UINT64_C(0x4330000000000000), dl, SrcVT); in expandUINT_TO_FP()
7533 BitsToDouble(UINT64_C(0x4530000000100000)), dl, DstVT); in expandUINT_TO_FP()
7534 SDValue TwoP84 = DAG.getConstant(UINT64_C(0x4530000000000000), dl, SrcVT); in expandUINT_TO_FP()
7535 SDValue LoMask = DAG.getConstant(UINT64_C(0x00000000FFFFFFFF), dl, SrcVT); in expandUINT_TO_FP()
7536 SDValue HiShift = DAG.getConstant(32, dl, ShiftVT); in expandUINT_TO_FP()
7538 SDValue Lo = DAG.getNode(ISD::AND, dl, SrcVT, Src, LoMask); in expandUINT_TO_FP()
7539 SDValue Hi = DAG.getNode(ISD::SRL, dl, SrcVT, Src, HiShift); in expandUINT_TO_FP()
7540 SDValue LoOr = DAG.getNode(ISD::OR, dl, SrcVT, Lo, TwoP52); in expandUINT_TO_FP()
7541 SDValue HiOr = DAG.getNode(ISD::OR, dl, SrcVT, Hi, TwoP84); in expandUINT_TO_FP()
7545 DAG.getNode(ISD::FSUB, dl, DstVT, HiFlt, TwoP84PlusTwoP52); in expandUINT_TO_FP()
7546 Result = DAG.getNode(ISD::FADD, dl, DstVT, LoFlt, HiSub); in expandUINT_TO_FP()
7576 SDLoc dl(Node); in expandFMINNUM_FMAXNUM() local
7593 Quiet0 = DAG.getNode(ISD::FCANONICALIZE, dl, VT, Quiet0, in expandFMINNUM_FMAXNUM()
7597 Quiet1 = DAG.getNode(ISD::FCANONICALIZE, dl, VT, Quiet1, in expandFMINNUM_FMAXNUM()
7602 return DAG.getNode(NewOp, dl, VT, Quiet0, Quiet1, Node->getFlags()); in expandFMINNUM_FMAXNUM()
7611 return DAG.getNode(IEEE2018Op, dl, VT, Node->getOperand(0), in expandFMINNUM_FMAXNUM()
7856 SDLoc dl(Node); in expandCTPOP() local
7874 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x55)), dl, VT); in expandCTPOP()
7876 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x33)), dl, VT); in expandCTPOP()
7878 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x0F)), dl, VT); in expandCTPOP()
7881 Op = DAG.getNode(ISD::SUB, dl, VT, Op, in expandCTPOP()
7882 DAG.getNode(ISD::AND, dl, VT, in expandCTPOP()
7883 DAG.getNode(ISD::SRL, dl, VT, Op, in expandCTPOP()
7884 DAG.getConstant(1, dl, ShVT)), in expandCTPOP()
7887 Op = DAG.getNode(ISD::ADD, dl, VT, DAG.getNode(ISD::AND, dl, VT, Op, Mask33), in expandCTPOP()
7888 DAG.getNode(ISD::AND, dl, VT, in expandCTPOP()
7889 DAG.getNode(ISD::SRL, dl, VT, Op, in expandCTPOP()
7890 DAG.getConstant(2, dl, ShVT)), in expandCTPOP()
7893 Op = DAG.getNode(ISD::AND, dl, VT, in expandCTPOP()
7894 DAG.getNode(ISD::ADD, dl, VT, Op, in expandCTPOP()
7895 DAG.getNode(ISD::SRL, dl, VT, Op, in expandCTPOP()
7896 DAG.getConstant(4, dl, ShVT))), in expandCTPOP()
7907 return DAG.getNode(ISD::AND, dl, VT, in expandCTPOP()
7908 DAG.getNode(ISD::ADD, dl, VT, Op, in expandCTPOP()
7909 DAG.getNode(ISD::SRL, dl, VT, Op, in expandCTPOP()
7910 DAG.getConstant(8, dl, ShVT))), in expandCTPOP()
7911 DAG.getConstant(0xFF, dl, VT)); in expandCTPOP()
7916 DAG.getConstant(APInt::getSplat(Len, APInt(8, 0x01)), dl, VT); in expandCTPOP()
7917 return DAG.getNode(ISD::SRL, dl, VT, in expandCTPOP()
7918 DAG.getNode(ISD::MUL, dl, VT, Op, Mask01), in expandCTPOP()
7919 DAG.getConstant(Len - 8, dl, ShVT)); in expandCTPOP()
7923 SDLoc dl(Node); in expandCTLZ() local
7932 return DAG.getNode(ISD::CTLZ, dl, VT, Op); in expandCTLZ()
7938 SDValue CTLZ = DAG.getNode(ISD::CTLZ_ZERO_UNDEF, dl, VT, Op); in expandCTLZ()
7939 SDValue Zero = DAG.getConstant(0, dl, VT); in expandCTLZ()
7940 SDValue SrcIsZero = DAG.getSetCC(dl, SetCCVT, Op, Zero, ISD::SETEQ); in expandCTLZ()
7941 return DAG.getSelect(dl, VT, SrcIsZero, in expandCTLZ()
7942 DAG.getConstant(NumBitsPerElt, dl, VT), CTLZ); in expandCTLZ()
7964 SDValue Tmp = DAG.getConstant(1ULL << i, dl, ShVT); in expandCTLZ()
7965 Op = DAG.getNode(ISD::OR, dl, VT, Op, in expandCTLZ()
7966 DAG.getNode(ISD::SRL, dl, VT, Op, Tmp)); in expandCTLZ()
7968 Op = DAG.getNOT(dl, Op, VT); in expandCTLZ()
7969 return DAG.getNode(ISD::CTPOP, dl, VT, Op); in expandCTLZ()
7973 SDLoc dl(Node); in expandCTTZ() local
7981 return DAG.getNode(ISD::CTTZ, dl, VT, Op); in expandCTTZ()
7987 SDValue CTTZ = DAG.getNode(ISD::CTTZ_ZERO_UNDEF, dl, VT, Op); in expandCTTZ()
7988 SDValue Zero = DAG.getConstant(0, dl, VT); in expandCTTZ()
7989 SDValue SrcIsZero = DAG.getSetCC(dl, SetCCVT, Op, Zero, ISD::SETEQ); in expandCTTZ()
7990 return DAG.getSelect(dl, VT, SrcIsZero, in expandCTTZ()
7991 DAG.getConstant(NumBitsPerElt, dl, VT), CTTZ); in expandCTTZ()
8010 ISD::AND, dl, VT, DAG.getNOT(dl, Op, VT), in expandCTTZ()
8011 DAG.getNode(ISD::SUB, dl, VT, Op, DAG.getConstant(1, dl, VT))); in expandCTTZ()
8015 return DAG.getNode(ISD::SUB, dl, VT, DAG.getConstant(NumBitsPerElt, dl, VT), in expandCTTZ()
8016 DAG.getNode(ISD::CTLZ, dl, VT, Tmp)); in expandCTTZ()
8019 return DAG.getNode(ISD::CTPOP, dl, VT, Tmp); in expandCTTZ()
8024 SDLoc dl(N); in expandABS() local
8032 SDValue Zero = DAG.getConstant(0, dl, VT); in expandABS()
8033 return DAG.getNode(ISD::SMAX, dl, VT, Op, in expandABS()
8034 DAG.getNode(ISD::SUB, dl, VT, Zero, Op)); in expandABS()
8040 SDValue Zero = DAG.getConstant(0, dl, VT); in expandABS()
8042 return DAG.getNode(ISD::UMIN, dl, VT, Op, in expandABS()
8043 DAG.getNode(ISD::SUB, dl, VT, Zero, Op)); in expandABS()
8050 SDValue Zero = DAG.getConstant(0, dl, VT); in expandABS()
8051 return DAG.getNode(ISD::SMIN, dl, VT, Op, in expandABS()
8052 DAG.getNode(ISD::SUB, dl, VT, Zero, Op)); in expandABS()
8065 DAG.getNode(ISD::SRA, dl, VT, Op, in expandABS()
8066 DAG.getConstant(VT.getScalarSizeInBits() - 1, dl, ShVT)); in expandABS()
8067 SDValue Xor = DAG.getNode(ISD::XOR, dl, VT, Op, Shift); in expandABS()
8071 return DAG.getNode(ISD::SUB, dl, VT, Xor, Shift); in expandABS()
8074 return DAG.getNode(ISD::SUB, dl, VT, Shift, Xor); in expandABS()
8078 SDLoc dl(N); in expandBSWAP() local
8092 return DAG.getNode(ISD::ROTL, dl, VT, Op, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
8094 Tmp4 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(24, dl, SHVT)); in expandBSWAP()
8095 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
8096 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
8097 Tmp1 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT)); in expandBSWAP()
8098 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp3, in expandBSWAP()
8099 DAG.getConstant(0xFF0000, dl, VT)); in expandBSWAP()
8100 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(0xFF00, dl, VT)); in expandBSWAP()
8101 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp3); in expandBSWAP()
8102 Tmp2 = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp1); in expandBSWAP()
8103 return DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp2); in expandBSWAP()
8105 Tmp8 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(56, dl, SHVT)); in expandBSWAP()
8106 Tmp7 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(40, dl, SHVT)); in expandBSWAP()
8107 Tmp6 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(24, dl, SHVT)); in expandBSWAP()
8108 Tmp5 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
8109 Tmp4 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT)); in expandBSWAP()
8110 Tmp3 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT)); in expandBSWAP()
8111 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(40, dl, SHVT)); in expandBSWAP()
8112 Tmp1 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(56, dl, SHVT)); in expandBSWAP()
8113 Tmp7 = DAG.getNode(ISD::AND, dl, VT, Tmp7, in expandBSWAP()
8114 DAG.getConstant(255ULL<<48, dl, VT)); in expandBSWAP()
8115 Tmp6 = DAG.getNode(ISD::AND, dl, VT, Tmp6, in expandBSWAP()
8116 DAG.getConstant(255ULL<<40, dl, VT)); in expandBSWAP()
8117 Tmp5 = DAG.getNode(ISD::AND, dl, VT, Tmp5, in expandBSWAP()
8118 DAG.getConstant(255ULL<<32, dl, VT)); in expandBSWAP()
8119 Tmp4 = DAG.getNode(ISD::AND, dl, VT, Tmp4, in expandBSWAP()
8120 DAG.getConstant(255ULL<<24, dl, VT)); in expandBSWAP()
8121 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp3, in expandBSWAP()
8122 DAG.getConstant(255ULL<<16, dl, VT)); in expandBSWAP()
8123 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, in expandBSWAP()
8124 DAG.getConstant(255ULL<<8 , dl, VT)); in expandBSWAP()
8125 Tmp8 = DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp7); in expandBSWAP()
8126 Tmp6 = DAG.getNode(ISD::OR, dl, VT, Tmp6, Tmp5); in expandBSWAP()
8127 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp3); in expandBSWAP()
8128 Tmp2 = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp1); in expandBSWAP()
8129 Tmp8 = DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp6); in expandBSWAP()
8130 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp2); in expandBSWAP()
8131 return DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp4); in expandBSWAP()
8136 SDLoc dl(N); in expandBITREVERSE() local
8154 Tmp = (Sz > 8 ? DAG.getNode(ISD::BSWAP, dl, VT, Op) : Op); in expandBITREVERSE()
8157 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp, DAG.getConstant(4, dl, SHVT)); in expandBITREVERSE()
8158 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Mask4, dl, VT)); in expandBITREVERSE()
8159 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(Mask4, dl, VT)); in expandBITREVERSE()
8160 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(4, dl, SHVT)); in expandBITREVERSE()
8161 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3); in expandBITREVERSE()
8164 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp, DAG.getConstant(2, dl, SHVT)); in expandBITREVERSE()
8165 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Mask2, dl, VT)); in expandBITREVERSE()
8166 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(Mask2, dl, VT)); in expandBITREVERSE()
8167 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(2, dl, SHVT)); in expandBITREVERSE()
8168 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3); in expandBITREVERSE()
8171 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp, DAG.getConstant(1, dl, SHVT)); in expandBITREVERSE()
8172 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Mask1, dl, VT)); in expandBITREVERSE()
8173 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(Mask1, dl, VT)); in expandBITREVERSE()
8174 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(1, dl, SHVT)); in expandBITREVERSE()
8175 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3); in expandBITREVERSE()
8179 Tmp = DAG.getConstant(0, dl, VT); in expandBITREVERSE()
8183 DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(J - I, dl, SHVT)); in expandBITREVERSE()
8186 DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(I - J, dl, SHVT)); in expandBITREVERSE()
8190 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Shift, dl, VT)); in expandBITREVERSE()
8191 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp, Tmp2); in expandBITREVERSE()
8373 SDLoc dl(LD); in expandUnalignedLoad() local
8387 SDValue newLoad = DAG.getLoad(intVT, dl, Chain, Ptr, in expandUnalignedLoad()
8389 SDValue Result = DAG.getNode(ISD::BITCAST, dl, LoadedVT, newLoad); in expandUnalignedLoad()
8392 ISD::ANY_EXTEND, dl, VT, Result); in expandUnalignedLoad()
8414 SDValue PtrIncrement = DAG.getConstant(RegBytes, dl, PtrVT); in expandUnalignedLoad()
8415 SDValue StackPtrIncrement = DAG.getConstant(RegBytes, dl, StackPtrVT); in expandUnalignedLoad()
8421 RegVT, dl, Chain, Ptr, LD->getPointerInfo().getWithOffset(Offset), in expandUnalignedLoad()
8426 Load.getValue(1), dl, Load, StackPtr, in expandUnalignedLoad()
8431 Ptr = DAG.getObjectPtrOffset(dl, Ptr, PtrIncrement); in expandUnalignedLoad()
8432 StackPtr = DAG.getObjectPtrOffset(dl, StackPtr, StackPtrIncrement); in expandUnalignedLoad()
8439 DAG.getExtLoad(ISD::EXTLOAD, dl, RegVT, Chain, Ptr, in expandUnalignedLoad()
8447 Load.getValue(1), dl, Load, StackPtr, in expandUnalignedLoad()
8451 SDValue TF = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Stores); in expandUnalignedLoad()
8454 Load = DAG.getExtLoad(LD->getExtensionType(), dl, VT, TF, StackBase, in expandUnalignedLoad()
8483 Lo = DAG.getExtLoad(ISD::ZEXTLOAD, dl, VT, Chain, Ptr, LD->getPointerInfo(), in expandUnalignedLoad()
8487 Ptr = DAG.getObjectPtrOffset(dl, Ptr, TypeSize::Fixed(IncrementSize)); in expandUnalignedLoad()
8488 Hi = DAG.getExtLoad(HiExtType, dl, VT, Chain, Ptr, in expandUnalignedLoad()
8493 Hi = DAG.getExtLoad(HiExtType, dl, VT, Chain, Ptr, LD->getPointerInfo(), in expandUnalignedLoad()
8497 Ptr = DAG.getObjectPtrOffset(dl, Ptr, TypeSize::Fixed(IncrementSize)); in expandUnalignedLoad()
8498 Lo = DAG.getExtLoad(ISD::ZEXTLOAD, dl, VT, Chain, Ptr, in expandUnalignedLoad()
8506 DAG.getConstant(NumBits, dl, getShiftAmountTy(Hi.getValueType(), in expandUnalignedLoad()
8508 SDValue Result = DAG.getNode(ISD::SHL, dl, VT, Hi, ShiftAmount); in expandUnalignedLoad()
8509 Result = DAG.getNode(ISD::OR, dl, VT, Result, Lo); in expandUnalignedLoad()
8511 SDValue TF = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo.getValue(1), in expandUnalignedLoad()
8529 SDLoc dl(ST); in expandUnalignedStore() local
8542 SDValue Result = DAG.getNode(ISD::BITCAST, dl, intVT, Val); in expandUnalignedStore()
8543 Result = DAG.getStore(Chain, dl, Result, Ptr, ST->getPointerInfo(), in expandUnalignedStore()
8563 Chain, dl, Val, StackPtr, in expandUnalignedStore()
8568 SDValue PtrIncrement = DAG.getConstant(RegBytes, dl, PtrVT); in expandUnalignedStore()
8569 SDValue StackPtrIncrement = DAG.getConstant(RegBytes, dl, StackPtrVT); in expandUnalignedStore()
8577 RegVT, dl, Store, StackPtr, in expandUnalignedStore()
8580 Stores.push_back(DAG.getStore(Load.getValue(1), dl, Load, Ptr, in expandUnalignedStore()
8586 StackPtr = DAG.getObjectPtrOffset(dl, StackPtr, StackPtrIncrement); in expandUnalignedStore()
8587 Ptr = DAG.getObjectPtrOffset(dl, Ptr, PtrIncrement); in expandUnalignedStore()
8598 ISD::EXTLOAD, dl, RegVT, Store, StackPtr, in expandUnalignedStore()
8602 DAG.getTruncStore(Load.getValue(1), dl, Load, Ptr, in expandUnalignedStore()
8607 SDValue Result = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Stores); in expandUnalignedStore()
8620 NumBits, dl, getShiftAmountTy(Val.getValueType(), DAG.getDataLayout())); in expandUnalignedStore()
8622 SDValue Hi = DAG.getNode(ISD::SRL, dl, VT, Val, ShiftAmount); in expandUnalignedStore()
8626 Store1 = DAG.getTruncStore(Chain, dl, in expandUnalignedStore()
8631 Ptr = DAG.getObjectPtrOffset(dl, Ptr, TypeSize::Fixed(IncrementSize)); in expandUnalignedStore()
8633 Chain, dl, DAG.getDataLayout().isLittleEndian() ? Hi : Lo, Ptr, in expandUnalignedStore()
8638 DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Store1, Store2); in expandUnalignedStore()
8682 EVT VecVT, const SDLoc &dl, in clampDynamicVectorIndex() argument
8699 DAG.getVScale(dl, IdxVT, APInt(IdxVT.getFixedSizeInBits(), NElts)); in clampDynamicVectorIndex()
8701 SDValue Sub = DAG.getNode(SubOpcode, dl, IdxVT, VS, in clampDynamicVectorIndex()
8702 DAG.getConstant(NumSubElts, dl, IdxVT)); in clampDynamicVectorIndex()
8703 return DAG.getNode(ISD::UMIN, dl, IdxVT, Idx, Sub); in clampDynamicVectorIndex()
8707 return DAG.getNode(ISD::AND, dl, IdxVT, Idx, in clampDynamicVectorIndex()
8708 DAG.getConstant(Imm, dl, IdxVT)); in clampDynamicVectorIndex()
8711 return DAG.getNode(ISD::UMIN, dl, IdxVT, Idx, in clampDynamicVectorIndex()
8712 DAG.getConstant(MaxIndex, dl, IdxVT)); in clampDynamicVectorIndex()
8728 SDLoc dl(Index); in getVectorSubVecPointer() local
8730 Index = DAG.getZExtOrTrunc(Index, dl, VecPtr.getValueType()); in getVectorSubVecPointer()
8740 Index = clampDynamicVectorIndex(DAG, Index, VecVT, dl, in getVectorSubVecPointer()
8746 DAG.getNode(ISD::MUL, dl, IdxVT, Index, in getVectorSubVecPointer()
8747 DAG.getVScale(dl, IdxVT, APInt(IdxVT.getSizeInBits(), 1))); in getVectorSubVecPointer()
8749 Index = DAG.getNode(ISD::MUL, dl, IdxVT, Index, in getVectorSubVecPointer()
8750 DAG.getConstant(EltSize, dl, IdxVT)); in getVectorSubVecPointer()
8751 return DAG.getMemBasePlusOffset(VecPtr, Index, dl); in getVectorSubVecPointer()
8764 SDLoc dl(GA); in LowerToTLSEmulatedModel() local
8773 Entry.Node = DAG.getGlobalAddress(EmuTlsVar, dl, PtrVT); in LowerToTLSEmulatedModel()
8780 CLI.setDebugLoc(dl).setChain(DAG.getEntryNode()); in LowerToTLSEmulatedModel()
8801 SDLoc dl(Op); in lowerCmpEqZeroToCtlzSrl() local
8808 Zext = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Op.getOperand(0)); in lowerCmpEqZeroToCtlzSrl()
8811 SDValue Clz = DAG.getNode(ISD::CTLZ, dl, VT, Zext); in lowerCmpEqZeroToCtlzSrl()
8812 SDValue Scc = DAG.getNode(ISD::SRL, dl, VT, Clz, in lowerCmpEqZeroToCtlzSrl()
8813 DAG.getConstant(Log2b, dl, MVT::i32)); in lowerCmpEqZeroToCtlzSrl()
8814 return DAG.getNode(ISD::TRUNCATE, dl, MVT::i32, Scc); in lowerCmpEqZeroToCtlzSrl()
8866 SDLoc dl(Node); in expandAddSubSat() local
8873 SDValue Max = DAG.getNode(ISD::UMAX, dl, VT, LHS, RHS); in expandAddSubSat()
8874 return DAG.getNode(ISD::SUB, dl, VT, Max, RHS); in expandAddSubSat()
8879 SDValue InvRHS = DAG.getNOT(dl, RHS, VT); in expandAddSubSat()
8880 SDValue Min = DAG.getNode(ISD::UMIN, dl, VT, LHS, InvRHS); in expandAddSubSat()
8881 return DAG.getNode(ISD::ADD, dl, VT, Min, RHS); in expandAddSubSat()
8910 SDValue Result = DAG.getNode(OverflowOp, dl, DAG.getVTList(VT, BoolVT), LHS, RHS); in expandAddSubSat()
8913 SDValue Zero = DAG.getConstant(0, dl, VT); in expandAddSubSat()
8914 SDValue AllOnes = DAG.getAllOnesConstant(dl, VT); in expandAddSubSat()
8919 SDValue OverflowMask = DAG.getSExtOrTrunc(Overflow, dl, VT); in expandAddSubSat()
8920 return DAG.getNode(ISD::OR, dl, VT, SumDiff, OverflowMask); in expandAddSubSat()
8923 return DAG.getSelect(dl, VT, Overflow, AllOnes, SumDiff); in expandAddSubSat()
8929 SDValue OverflowMask = DAG.getSExtOrTrunc(Overflow, dl, VT); in expandAddSubSat()
8930 SDValue Not = DAG.getNOT(dl, OverflowMask, VT); in expandAddSubSat()
8931 return DAG.getNode(ISD::AND, dl, VT, SumDiff, Not); in expandAddSubSat()
8934 return DAG.getSelect(dl, VT, Overflow, Zero, SumDiff); in expandAddSubSat()
8939 SDValue SatMin = DAG.getConstant(MinVal, dl, VT); in expandAddSubSat()
8940 SDValue Shift = DAG.getNode(ISD::SRA, dl, VT, SumDiff, in expandAddSubSat()
8941 DAG.getConstant(BitWidth - 1, dl, VT)); in expandAddSubSat()
8942 Result = DAG.getNode(ISD::XOR, dl, VT, Shift, SatMin); in expandAddSubSat()
8943 return DAG.getSelect(dl, VT, Overflow, Result, SumDiff); in expandAddSubSat()
8952 SDLoc dl(Node); in expandShlSat() local
8963 SDValue Result = DAG.getNode(ISD::SHL, dl, VT, LHS, RHS); in expandShlSat()
8965 DAG.getNode(IsSigned ? ISD::SRA : ISD::SRL, dl, VT, Result, RHS); in expandShlSat()
8969 SDValue SatMin = DAG.getConstant(APInt::getSignedMinValue(BW), dl, VT); in expandShlSat()
8970 SDValue SatMax = DAG.getConstant(APInt::getSignedMaxValue(BW), dl, VT); in expandShlSat()
8971 SatVal = DAG.getSelectCC(dl, LHS, DAG.getConstant(0, dl, VT), in expandShlSat()
8974 SatVal = DAG.getConstant(APInt::getMaxValue(BW), dl, VT); in expandShlSat()
8976 Result = DAG.getSelectCC(dl, LHS, Orig, SatVal, Result, ISD::SETNE); in expandShlSat()
8989 SDLoc dl(Node); in expandFixedPointMul() local
9005 return DAG.getNode(ISD::MUL, dl, VT, LHS, RHS); in expandFixedPointMul()
9008 DAG.getNode(ISD::SMULO, dl, DAG.getVTList(VT, BoolVT), LHS, RHS); in expandFixedPointMul()
9011 SDValue Zero = DAG.getConstant(0, dl, VT); in expandFixedPointMul()
9015 SDValue SatMin = DAG.getConstant(MinVal, dl, VT); in expandFixedPointMul()
9016 SDValue SatMax = DAG.getConstant(MaxVal, dl, VT); in expandFixedPointMul()
9019 SDValue Xor = DAG.getNode(ISD::XOR, dl, VT, LHS, RHS); in expandFixedPointMul()
9020 SDValue ProdNeg = DAG.getSetCC(dl, BoolVT, Xor, Zero, ISD::SETLT); in expandFixedPointMul()
9021 Result = DAG.getSelect(dl, VT, ProdNeg, SatMin, SatMax); in expandFixedPointMul()
9022 return DAG.getSelect(dl, VT, Overflow, Result, Product); in expandFixedPointMul()
9025 DAG.getNode(ISD::UMULO, dl, DAG.getVTList(VT, BoolVT), LHS, RHS); in expandFixedPointMul()
9030 SDValue SatMax = DAG.getConstant(MaxVal, dl, VT); in expandFixedPointMul()
9031 return DAG.getSelect(dl, VT, Overflow, SatMax, Product); in expandFixedPointMul()
9046 SDValue Result = DAG.getNode(LoHiOp, dl, DAG.getVTList(VT, VT), LHS, RHS); in expandFixedPointMul()
9050 Lo = DAG.getNode(ISD::MUL, dl, VT, LHS, RHS); in expandFixedPointMul()
9051 Hi = DAG.getNode(HiOp, dl, VT, LHS, RHS); in expandFixedPointMul()
9068 SDValue Result = DAG.getNode(ISD::FSHR, dl, VT, Hi, Lo, in expandFixedPointMul()
9069 DAG.getConstant(Scale, dl, ShiftTy)); in expandFixedPointMul()
9081 dl, VT); in expandFixedPointMul()
9082 Result = DAG.getSelectCC(dl, Hi, LowMask, in expandFixedPointMul()
9083 DAG.getConstant(MaxVal, dl, VT), Result, in expandFixedPointMul()
9092 SDValue SatMin = DAG.getConstant(APInt::getSignedMinValue(VTSize), dl, VT); in expandFixedPointMul()
9093 SDValue SatMax = DAG.getConstant(APInt::getSignedMaxValue(VTSize), dl, VT); in expandFixedPointMul()
9096 SDValue Sign = DAG.getNode(ISD::SRA, dl, VT, Lo, in expandFixedPointMul()
9097 DAG.getConstant(VTSize - 1, dl, ShiftTy)); in expandFixedPointMul()
9098 SDValue Overflow = DAG.getSetCC(dl, BoolVT, Hi, Sign, ISD::SETNE); in expandFixedPointMul()
9101 SDValue Zero = DAG.getConstant(0, dl, VT); in expandFixedPointMul()
9102 SDValue ResultIfOverflow = DAG.getSelectCC(dl, Hi, Zero, SatMin, SatMax, in expandFixedPointMul()
9105 return DAG.getSelect(dl, VT, Overflow, ResultIfOverflow, Result); in expandFixedPointMul()
9113 dl, VT); in expandFixedPointMul()
9114 Result = DAG.getSelectCC(dl, Hi, LowMask, SatMax, Result, ISD::SETGT); in expandFixedPointMul()
9119 dl, VT); in expandFixedPointMul()
9120 Result = DAG.getSelectCC(dl, Hi, HighMask, SatMin, Result, ISD::SETLT); in expandFixedPointMul()
9125 TargetLowering::expandFixedPointDiv(unsigned Opcode, const SDLoc &dl, in expandFixedPointDiv() argument
9166 LHS = DAG.getNode(ISD::SHL, dl, VT, LHS, in expandFixedPointDiv()
9167 DAG.getConstant(LHSShift, dl, ShiftTy)); in expandFixedPointDiv()
9169 RHS = DAG.getNode(Signed ? ISD::SRA : ISD::SRL, dl, VT, RHS, in expandFixedPointDiv()
9170 DAG.getConstant(RHSShift, dl, ShiftTy)); in expandFixedPointDiv()
9183 Quot = DAG.getNode(ISD::SDIVREM, dl, in expandFixedPointDiv()
9189 Quot = DAG.getNode(ISD::SDIV, dl, VT, in expandFixedPointDiv()
9191 Rem = DAG.getNode(ISD::SREM, dl, VT, in expandFixedPointDiv()
9194 SDValue Zero = DAG.getConstant(0, dl, VT); in expandFixedPointDiv()
9195 SDValue RemNonZero = DAG.getSetCC(dl, BoolVT, Rem, Zero, ISD::SETNE); in expandFixedPointDiv()
9196 SDValue LHSNeg = DAG.getSetCC(dl, BoolVT, LHS, Zero, ISD::SETLT); in expandFixedPointDiv()
9197 SDValue RHSNeg = DAG.getSetCC(dl, BoolVT, RHS, Zero, ISD::SETLT); in expandFixedPointDiv()
9198 SDValue QuotNeg = DAG.getNode(ISD::XOR, dl, BoolVT, LHSNeg, RHSNeg); in expandFixedPointDiv()
9199 SDValue Sub1 = DAG.getNode(ISD::SUB, dl, VT, Quot, in expandFixedPointDiv()
9200 DAG.getConstant(1, dl, VT)); in expandFixedPointDiv()
9201 Quot = DAG.getSelect(dl, VT, in expandFixedPointDiv()
9202 DAG.getNode(ISD::AND, dl, BoolVT, RemNonZero, QuotNeg), in expandFixedPointDiv()
9205 Quot = DAG.getNode(ISD::UDIV, dl, VT, in expandFixedPointDiv()
9213 SDLoc dl(Node); in expandUADDSUBO() local
9221 SDValue CarryIn = DAG.getConstant(0, dl, Node->getValueType(1)); in expandUADDSUBO()
9222 SDValue NodeCarry = DAG.getNode(OpcCarry, dl, Node->getVTList(), in expandUADDSUBO()
9229 Result = DAG.getNode(IsAdd ? ISD::ADD : ISD::SUB, dl, in expandUADDSUBO()
9243 DAG.getSetCC(dl, SetCCType, Result, in expandUADDSUBO()
9244 DAG.getConstant(0, dl, Node->getValueType(0)), ISD::SETEQ); in expandUADDSUBO()
9247 SetCC = DAG.getSetCC(dl, SetCCType, Result, LHS, CC); in expandUADDSUBO()
9249 Overflow = DAG.getBoolExtOrTrunc(SetCC, dl, ResultType, ResultType); in expandUADDSUBO()
9254 SDLoc dl(Node); in expandSADDSUBO() local
9259 Result = DAG.getNode(IsAdd ? ISD::ADD : ISD::SUB, dl, in expandSADDSUBO()
9269 SDValue Sat = DAG.getNode(OpcSat, dl, LHS.getValueType(), LHS, RHS); in expandSADDSUBO()
9270 SDValue SetCC = DAG.getSetCC(dl, OType, Result, Sat, ISD::SETNE); in expandSADDSUBO()
9271 Overflow = DAG.getBoolExtOrTrunc(SetCC, dl, ResultType, ResultType); in expandSADDSUBO()
9275 SDValue Zero = DAG.getConstant(0, dl, LHS.getValueType()); in expandSADDSUBO()
9283 SDValue ResultLowerThanLHS = DAG.getSetCC(dl, OType, Result, LHS, ISD::SETLT); in expandSADDSUBO()
9285 DAG.getSetCC(dl, OType, RHS, Zero, IsAdd ? ISD::SETLT : ISD::SETGT); in expandSADDSUBO()
9288 DAG.getNode(ISD::XOR, dl, OType, ConditionRHS, ResultLowerThanLHS), dl, in expandSADDSUBO()
9294 SDLoc dl(Node); in expandMULO() local
9309 SDValue ShiftAmt = DAG.getConstant(C.logBase2(), dl, ShiftAmtTy); in expandMULO()
9310 Result = DAG.getNode(ISD::SHL, dl, VT, LHS, ShiftAmt); in expandMULO()
9311 Overflow = DAG.getSetCC(dl, SetCCVT, in expandMULO()
9313 dl, VT, Result, ShiftAmt), in expandMULO()
9330 BottomHalf = DAG.getNode(ISD::MUL, dl, VT, LHS, RHS); in expandMULO()
9331 TopHalf = DAG.getNode(Ops[isSigned][0], dl, VT, LHS, RHS); in expandMULO()
9333 BottomHalf = DAG.getNode(Ops[isSigned][1], dl, DAG.getVTList(VT, VT), LHS, in expandMULO()
9337 LHS = DAG.getNode(Ops[isSigned][2], dl, WideVT, LHS); in expandMULO()
9338 RHS = DAG.getNode(Ops[isSigned][2], dl, WideVT, RHS); in expandMULO()
9339 SDValue Mul = DAG.getNode(ISD::MUL, dl, WideVT, LHS, RHS); in expandMULO()
9340 BottomHalf = DAG.getNode(ISD::TRUNCATE, dl, VT, Mul); in expandMULO()
9341 SDValue ShiftAmt = DAG.getConstant(VT.getScalarSizeInBits(), dl, in expandMULO()
9343 TopHalf = DAG.getNode(ISD::TRUNCATE, dl, VT, in expandMULO()
9344 DAG.getNode(ISD::SRL, dl, WideVT, Mul, ShiftAmt)); in expandMULO()
9371 DAG.getNode(ISD::SRA, dl, VT, LHS, in expandMULO()
9372 DAG.getConstant(LoSize - 1, dl, in expandMULO()
9375 DAG.getNode(ISD::SRA, dl, VT, RHS, in expandMULO()
9376 DAG.getConstant(LoSize - 1, dl, in expandMULO()
9379 HiLHS = DAG.getConstant(0, dl, VT); in expandMULO()
9380 HiRHS = DAG.getConstant(0, dl, VT); in expandMULO()
9397 Ret = makeLibCall(DAG, LC, WideVT, Args, CallOptions, dl).first; in expandMULO()
9400 Ret = makeLibCall(DAG, LC, WideVT, Args, CallOptions, dl).first; in expandMULO()
9417 VT.getScalarSizeInBits() - 1, dl, in expandMULO()
9419 SDValue Sign = DAG.getNode(ISD::SRA, dl, VT, BottomHalf, ShiftAmt); in expandMULO()
9420 Overflow = DAG.getSetCC(dl, SetCCVT, TopHalf, Sign, ISD::SETNE); in expandMULO()
9422 Overflow = DAG.getSetCC(dl, SetCCVT, TopHalf, in expandMULO()
9423 DAG.getConstant(0, dl, VT), ISD::SETNE); in expandMULO()
9429 Overflow = DAG.getNode(ISD::TRUNCATE, dl, RType, Overflow); in expandMULO()
9437 SDLoc dl(Node); in expandVecReduce() local
9454 std::tie(Lo, Hi) = DAG.SplitVector(Op, dl); in expandVecReduce()
9455 Op = DAG.getNode(BaseOpcode, dl, HalfVT, Lo, Hi); in expandVecReduce()
9468 Res = DAG.getNode(BaseOpcode, dl, EltVT, Res, Ops[i], Node->getFlags()); in expandVecReduce()
9472 Res = DAG.getNode(ISD::ANY_EXTEND, dl, Node->getValueType(0), Res); in expandVecReduce()
9477 SDLoc dl(Node); in expandVecReduceSeq() local
9498 Res = DAG.getNode(BaseOpcode, dl, EltVT, Res, Ops[i], Flags); in expandVecReduceSeq()
9506 SDLoc dl(Node); in expandREM() local
9514 Result = DAG.getNode(DivRemOpc, dl, VTs, Dividend, Divisor).getValue(1); in expandREM()
9519 SDValue Divide = DAG.getNode(DivOpc, dl, VT, Dividend, Divisor); in expandREM()
9520 SDValue Mul = DAG.getNode(ISD::MUL, dl, VT, Divide, Divisor); in expandREM()
9521 Result = DAG.getNode(ISD::SUB, dl, VT, Dividend, Mul); in expandREM()
9530 SDLoc dl(SDValue(Node, 0)); in expandFP_TO_INT_SAT() local
9557 Src = DAG.getNode(ISD::FP_EXTEND, dl, MVT::f32, Src); in expandFP_TO_INT_SAT()
9571 SDValue MinFloatNode = DAG.getConstantFP(MinFloat, dl, SrcVT); in expandFP_TO_INT_SAT()
9572 SDValue MaxFloatNode = DAG.getConstantFP(MaxFloat, dl, SrcVT); in expandFP_TO_INT_SAT()
9583 Clamped = DAG.getNode(ISD::FMAXNUM, dl, SrcVT, Clamped, MinFloatNode); in expandFP_TO_INT_SAT()
9585 Clamped = DAG.getNode(ISD::FMINNUM, dl, SrcVT, Clamped, MaxFloatNode); in expandFP_TO_INT_SAT()
9588 dl, DstVT, Clamped); in expandFP_TO_INT_SAT()
9596 SDValue ZeroInt = DAG.getConstant(0, dl, DstVT); in expandFP_TO_INT_SAT()
9597 return DAG.getSelectCC(dl, Src, Src, ZeroInt, FpToInt, in expandFP_TO_INT_SAT()
9601 SDValue MinIntNode = DAG.getConstant(MinInt, dl, DstVT); in expandFP_TO_INT_SAT()
9602 SDValue MaxIntNode = DAG.getConstant(MaxInt, dl, DstVT); in expandFP_TO_INT_SAT()
9608 DAG.getNode(IsSigned ? ISD::FP_TO_SINT : ISD::FP_TO_UINT, dl, DstVT, Src); in expandFP_TO_INT_SAT()
9614 Select = DAG.getSelectCC(dl, Src, MinFloatNode, MinIntNode, Select, in expandFP_TO_INT_SAT()
9617 Select = DAG.getSelectCC(dl, Src, MaxFloatNode, MaxIntNode, Select, in expandFP_TO_INT_SAT()
9626 SDValue ZeroInt = DAG.getConstant(0, dl, DstVT); in expandFP_TO_INT_SAT()
9627 return DAG.getSelectCC(dl, Src, Src, ZeroInt, Select, ISD::CondCode::SETUO); in expandFP_TO_INT_SAT()
9707 const SDLoc &dl, SDValue &Chain, in LegalizeSetCCCondCode() argument
9822 SetCC1 = DAG.getSetCC(dl, VT, LHS, RHS, CC1, Chain, IsSignaling); in LegalizeSetCCCondCode()
9823 SetCC2 = DAG.getSetCC(dl, VT, LHS, RHS, CC2, Chain, IsSignaling); in LegalizeSetCCCondCode()
9825 SetCC1 = DAG.getSetCCVP(dl, VT, LHS, RHS, CC1, Mask, EVL); in LegalizeSetCCCondCode()
9826 SetCC2 = DAG.getSetCCVP(dl, VT, LHS, RHS, CC2, Mask, EVL); in LegalizeSetCCCondCode()
9831 SetCC1 = DAG.getSetCC(dl, VT, LHS, LHS, CC1, Chain, IsSignaling); in LegalizeSetCCCondCode()
9832 SetCC2 = DAG.getSetCC(dl, VT, RHS, RHS, CC2, Chain, IsSignaling); in LegalizeSetCCCondCode()
9834 SetCC1 = DAG.getSetCCVP(dl, VT, LHS, LHS, CC1, Mask, EVL); in LegalizeSetCCCondCode()
9835 SetCC2 = DAG.getSetCCVP(dl, VT, RHS, RHS, CC2, Mask, EVL); in LegalizeSetCCCondCode()
9839 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, SetCC1.getValue(1), in LegalizeSetCCCondCode()
9842 LHS = DAG.getNode(Opc, dl, VT, SetCC1, SetCC2); in LegalizeSetCCCondCode()
9847 LHS = DAG.getNode(Opc, dl, VT, SetCC1, SetCC2, Mask, EVL); in LegalizeSetCCCondCode()