|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
References
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp 98 return TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT);
98 return TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT);
207 LLVM_DEBUG(dbgs() << " ... replacing: "; Old->dump(&DAG);
208 dbgs() << " with: "; New->dump(&DAG));
213 DAG.ReplaceAllUsesWith(Old, New);
220 LLVM_DEBUG(dbgs() << " ... replacing: "; Old->dump(&DAG);
221 dbgs() << " with: "; New->dump(&DAG));
223 DAG.ReplaceAllUsesWith(Old, New);
230 LLVM_DEBUG(dbgs() << " ... replacing: "; Old->dump(&DAG));
232 DAG.ReplaceAllUsesWith(Old, New);
235 New[i]->dump(&DAG));
243 LLVM_DEBUG(dbgs() << " ... replacing: "; Old->dump(&DAG);
244 dbgs() << " with: "; New->dump(&DAG));
246 DAG.ReplaceAllUsesOfValueWith(Old, New);
269 return DAG.getVectorShuffle(NVT, dl, N1, N2, Mask);
283 return DAG.getVectorShuffle(NVT, dl, N1, N2, NewMask);
303 return DAG.getConstant(LLVMC->getValueAPF().bitcastToAPInt(), dl,
321 Type *SType = SVT.getTypeForEVT(*DAG.getContext());
330 DAG.getConstantPool(LLVMC, TLI.getPointerTy(DAG.getDataLayout()));
330 DAG.getConstantPool(LLVMC, TLI.getPointerTy(DAG.getDataLayout()));
333 SDValue Result = DAG.getExtLoad(
334 ISD::EXTLOAD, dl, OrigVT, DAG.getEntryNode(), CPIdx,
335 MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), VT,
339 SDValue Result = DAG.getLoad(
340 OrigVT, dl, DAG.getEntryNode(), CPIdx,
341 MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), Alignment);
349 SDValue CPIdx = DAG.getConstantPool(CP->getConstantIntValue(),
350 TLI.getPointerTy(DAG.getDataLayout()));
352 SDValue Result = DAG.getLoad(
353 VT, dl, DAG.getEntryNode(), CPIdx,
354 MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), Alignment);
378 SDValue StackPtr = DAG.CreateStackTemporary(VT);
383 SDValue Ch = DAG.getStore(
384 DAG.getEntryNode(), dl, Tmp1, StackPtr,
385 MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI));
387 SDValue StackPtr2 = TLI.getVectorElementPointer(DAG, StackPtr, VT, Tmp3);
390 Ch = DAG.getTruncStore(Ch, dl, Tmp2, StackPtr2, MachinePointerInfo(), EltVT);
392 return DAG.getLoad(VT, dl, Ch, StackPtr, MachinePointerInfo::getFixedStack(
393 DAG.getMachineFunction(), SPFI));
406 SDValue ScVec = DAG.getNode(ISD::SCALAR_TO_VECTOR, dl,
417 return DAG.getVectorShuffle(Vec.getValueType(), dl, Vec, ScVec, ShufOps);
441 SDValue Con = DAG.getConstant(CFP->getValueAPF().
444 return DAG.getStore(Chain, dl, Con, Ptr, ST->getPointerInfo(), Alignment,
451 SDValue Con = DAG.getConstant(CFP->getValueAPF().bitcastToAPInt().
453 return DAG.getStore(Chain, dl, Con, Ptr, ST->getPointerInfo(),
462 SDValue Lo = DAG.getConstant(IntVal.trunc(32), dl, MVT::i32);
463 SDValue Hi = DAG.getConstant(IntVal.lshr(32).trunc(32), dl, MVT::i32);
464 if (DAG.getDataLayout().isBigEndian())
467 Lo = DAG.getStore(Chain, dl, Lo, Ptr, ST->getPointerInfo(), Alignment,
469 Ptr = DAG.getNode(ISD::ADD, dl, Ptr.getValueType(), Ptr,
470 DAG.getConstant(4, dl, Ptr.getValueType()));
471 Hi = DAG.getStore(Chain, dl, Hi, Ptr,
475 return DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo, Hi);
507 const DataLayout &DL = DAG.getDataLayout();
508 if (!TLI.allowsMemoryAccessForAlignment(*DAG.getContext(), DL, MemVT,
511 SDValue Result = TLI.expandUnalignedStore(ST, DAG);
519 SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG);
528 Value = DAG.getNode(ISD::BITCAST, dl, NVT, Value);
530 DAG.getStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),
543 auto &DL = DAG.getDataLayout();
549 EVT NVT = EVT::getIntegerVT(*DAG.getContext(),
551 Value = DAG.getZeroExtendInReg(Value, dl, StVT);
553 DAG.getTruncStore(Chain, dl, Value, Ptr, ST->getPointerInfo(), NVT,
567 EVT RoundVT = EVT::getIntegerVT(*DAG.getContext(), RoundWidth);
568 EVT ExtraVT = EVT::getIntegerVT(*DAG.getContext(), ExtraWidth);
575 Lo = DAG.getTruncStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),
580 Ptr = DAG.getNode(ISD::ADD, dl, Ptr.getValueType(), Ptr,
581 DAG.getConstant(IncrementSize, dl,
583 Hi = DAG.getNode(
585 DAG.getConstant(RoundWidth, dl,
587 Hi = DAG.getTruncStore(
595 Hi = DAG.getNode(
597 DAG.getConstant(ExtraWidth, dl,
599 Hi = DAG.getTruncStore(Chain, dl, Hi, Ptr, ST->getPointerInfo(),
604 Ptr = DAG.getNode(ISD::ADD, dl, Ptr.getValueType(), Ptr,
605 DAG.getConstant(IncrementSize, dl,
607 Lo = DAG.getTruncStore(
614 SDValue Result = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo, Hi);
623 if (!TLI.allowsMemoryAccessForAlignment(*DAG.getContext(), DL, MemVT,
625 SDValue Result = TLI.expandUnalignedStore(ST, DAG);
631 SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG);
644 Value = DAG.getNode(ISD::TRUNCATE, dl, StVT, Value);
645 Result = DAG.getStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),
650 Value = DAG.getNode(ISD::TRUNCATE, dl,
651 TLI.getTypeToTransformTo(*DAG.getContext(), StVT),
653 Result = DAG.getTruncStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),
681 const DataLayout &DL = DAG.getDataLayout();
684 if (!TLI.allowsMemoryAccessForAlignment(*DAG.getContext(), DL, MemVT,
686 std::tie(RVal, RChain) = TLI.expandUnalignedLoad(LD, DAG);
691 if (SDValue Res = TLI.LowerOperation(RVal, DAG)) {
702 SDValue Res = DAG.getLoad(NVT, dl, Chain, Ptr, LD->getMemOperand());
703 RVal = DAG.getNode(ISD::BITCAST, dl, VT, Res);
710 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 0), RVal);
711 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 1), RChain);
742 EVT NVT = EVT::getIntegerVT(*DAG.getContext(), NewWidth);
752 DAG.getExtLoad(NewExtType, dl, Node->getValueType(0), Chain, Ptr,
759 Result = DAG.getNode(ISD::SIGN_EXTEND_INREG, dl,
761 Result, DAG.getValueType(SrcVT));
764 Result = DAG.getNode(ISD::AssertZext, dl,
766 DAG.getValueType(SrcVT));
781 EVT RoundVT = EVT::getIntegerVT(*DAG.getContext(), RoundWidth);
782 EVT ExtraVT = EVT::getIntegerVT(*DAG.getContext(), ExtraWidth);
785 auto &DL = DAG.getDataLayout();
790 Lo = DAG.getExtLoad(ISD::ZEXTLOAD, dl, Node->getValueType(0), Chain, Ptr,
796 Ptr = DAG.getNode(ISD::ADD, dl, Ptr.getValueType(), Ptr,
797 DAG.getConstant(IncrementSize, dl,
799 Hi = DAG.getExtLoad(ExtType, dl, Node->getValueType(0), Chain, Ptr,
806 Ch = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo.getValue(1),
810 Hi = DAG.getNode(
812 DAG.getConstant(RoundWidth, dl,
816 Value = DAG.getNode(ISD::OR, dl, Node->getValueType(0), Lo, Hi);
821 Hi = DAG.getExtLoad(ExtType, dl, Node->getValueType(0), Chain, Ptr,
827 Ptr = DAG.getNode(ISD::ADD, dl, Ptr.getValueType(), Ptr,
828 DAG.getConstant(IncrementSize, dl,
830 Lo = DAG.getExtLoad(ISD::ZEXTLOAD, dl, Node->getValueType(0), Chain, Ptr,
837 Ch = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo.getValue(1),
841 Hi = DAG.getNode(
843 DAG.getConstant(ExtraWidth, dl,
847 Value = DAG.getNode(ISD::OR, dl, Node->getValueType(0), Lo, Hi);
864 if (SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG)) {
872 const DataLayout &DL = DAG.getDataLayout();
873 if (!TLI.allowsMemoryAccess(*DAG.getContext(), DL, MemVT,
875 std::tie(Value, Chain) = TLI.expandUnalignedLoad(LD, DAG);
893 SDValue Load = DAG.getExtLoad(MidExtType, dl, LoadVT, Chain, Ptr,
897 Value = DAG.getNode(ExtendOp, dl, Node->getValueType(0), Load);
911 SDValue Result = DAG.getExtLoad(ISD::ZEXTLOAD, dl, ILoadVT, Chain,
913 Value = DAG.getNode(ISD::FP16_TO_FP, dl, DestVT, Result);
930 SDValue Result = DAG.getExtLoad(ISD::EXTLOAD, dl,
936 ValRes = DAG.getNode(ISD::SIGN_EXTEND_INREG, dl,
938 Result, DAG.getValueType(SrcVT));
940 ValRes = DAG.getZeroExtendInReg(Result, dl, SrcVT.getScalarType());
952 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 0), Value);
953 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 1), Chain);
964 LLVM_DEBUG(dbgs() << "\nLegalizing: "; Node->dump(&DAG));
973 assert(TLI.getTypeAction(*DAG.getContext(), Node->getValueType(i)) ==
978 assert((TLI.getTypeAction(*DAG.getContext(), Op.getValueType()) ==
1101 NewVal = DAG.getNode(ISD::TRAP, SDLoc(Node), Node->getVTList(),
1181 SDValue SAO = DAG.getShiftAmountOperand(Op0.getValueType(), Op1);
1188 NewNode = DAG.UpdateNodeOperands(Node, Op0, SAO);
1203 SDValue SAO = DAG.getShiftAmountOperand(Op0.getValueType(), Op2);
1208 NewNode = DAG.UpdateNodeOperands(Node, Op0, Op1, SAO);
1226 if (SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG)) {
1263 Node->dump( &DAG);
1306 if (!ST->getChain().reachesChainWithoutSideEffects(DAG.getEntryNode()))
1328 StackPtr = DAG.CreateStackTemporary(VecVT);
1329 Ch = DAG.getStore(DAG.getEntryNode(), dl, Vec, StackPtr,
1329 Ch = DAG.getStore(DAG.getEntryNode(), dl, Vec, StackPtr,
1333 StackPtr = TLI.getVectorElementPointer(DAG, StackPtr, VecVT, Idx);
1339 DAG.getLoad(Op.getValueType(), dl, Ch, StackPtr, MachinePointerInfo());
1341 NewLoad = DAG.getExtLoad(ISD::EXTLOAD, dl, Op.getValueType(), Ch, StackPtr,
1346 DAG.ReplaceAllUsesOfValueWith(Ch, SDValue(NewLoad.getNode(), 1));
1354 SDValue(DAG.UpdateNodeOperands(NewLoad.getNode(), NewLoadOperands), 0);
1368 SDValue StackPtr = DAG.CreateStackTemporary(VecVT);
1371 MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI);
1374 SDValue Ch = DAG.getStore(DAG.getEntryNode(), dl, Vec, StackPtr, PtrInfo);
1374 SDValue Ch = DAG.getStore(DAG.getEntryNode(), dl, Vec, StackPtr, PtrInfo);
1377 SDValue SubStackPtr = TLI.getVectorElementPointer(DAG, StackPtr, VecVT, Idx);
1380 Ch = DAG.getStore(Ch, dl, Part, SubStackPtr, MachinePointerInfo());
1383 return DAG.getLoad(Op.getValueType(), dl, Ch, StackPtr, PtrInfo);
1394 SDValue FIPtr = DAG.CreateStackTemporary(VT);
1397 MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), FI);
1410 SDValue Idx = DAG.getConstant(Offset, dl, FIPtr.getValueType());
1411 Idx = DAG.getNode(ISD::ADD, dl, FIPtr.getValueType(), FIPtr, Idx);
1416 Stores.push_back(DAG.getTruncStore(DAG.getEntryNode(), dl,
1416 Stores.push_back(DAG.getTruncStore(DAG.getEntryNode(), dl,
1420 Stores.push_back(DAG.getStore(DAG.getEntryNode(), dl, Node->getOperand(i),
1420 Stores.push_back(DAG.getStore(DAG.getEntryNode(), dl, Node->getOperand(i),
1426 StoreChain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Stores);
1428 StoreChain = DAG.getEntryNode();
1431 return DAG.getLoad(VT, dl, StoreChain, FIPtr, PtrInfo);
1443 EVT IVT = EVT::getIntegerVT(*DAG.getContext(), NumBits);
1446 State.IntValue = DAG.getNode(ISD::BITCAST, DL, IVT, Value);
1452 auto &DataLayout = DAG.getDataLayout();
1454 MVT LoadTy = TLI.getRegisterType(*DAG.getContext(), MVT::i8);
1456 SDValue StackPtr = DAG.CreateStackTemporary(FloatVT, LoadTy);
1460 MachineFunction &MF = DAG.getMachineFunction();
1462 State.Chain = DAG.getStore(DAG.getEntryNode(), DL, Value, State.FloatPtr,
1462 State.Chain = DAG.getStore(DAG.getEntryNode(), DL, Value, State.FloatPtr,
1474 IntPtr = DAG.getNode(ISD::ADD, DL, StackPtr.getValueType(), StackPtr,
1475 DAG.getConstant(ByteOffset, DL, StackPtr.getValueType()));
1481 State.IntValue = DAG.getExtLoad(ISD::EXTLOAD, DL, LoadTy, State.Chain, IntPtr,
1493 return DAG.getNode(ISD::BITCAST, DL, State.FloatVT, NewIntValue);
1496 SDValue Chain = DAG.getTruncStore(State.Chain, DL, NewIntValue, State.IntPtr,
1498 return DAG.getLoad(State.FloatVT, DL, Chain, State.FloatPtr,
1512 SDValue SignMask = DAG.getConstant(SignAsInt.SignMask, DL, IntVT);
1513 SDValue SignBit = DAG.getNode(ISD::AND, DL, IntVT, SignAsInt.IntValue,
1520 SDValue AbsValue = DAG.getNode(ISD::FABS, DL, FloatVT, Mag);
1521 SDValue NegValue = DAG.getNode(ISD::FNEG, DL, FloatVT, AbsValue);
1522 SDValue Cond = DAG.getSetCC(DL, getSetCCResultType(IntVT), SignBit,
1523 DAG.getConstant(0, DL, IntVT), ISD::SETNE);
1524 return DAG.getSelect(DL, FloatVT, Cond, NegValue, AbsValue);
1531 SDValue ClearSignMask = DAG.getConstant(~MagAsInt.SignMask, DL, MagVT);
1532 SDValue ClearedSign = DAG.getNode(ISD::AND, DL, MagVT, MagAsInt.IntValue,
1539 SignBit = DAG.getNode(ISD::ZERO_EXTEND, DL, MagVT, SignBit);
1543 SDValue ShiftCnst = DAG.getConstant(ShiftAmount, DL, ShiftVT);
1544 SignBit = DAG.getNode(ISD::SRL, DL, ShiftVT, SignBit, ShiftCnst);
1546 SDValue ShiftCnst = DAG.getConstant(-ShiftAmount, DL, ShiftVT);
1547 SignBit = DAG.getNode(ISD::SHL, DL, ShiftVT, SignBit, ShiftCnst);
1550 SignBit = DAG.getNode(ISD::TRUNCATE, DL, MagVT, SignBit);
1554 SDValue CopiedSign = DAG.getNode(ISD::OR, DL, MagVT, ClearedSign, SignBit);
1565 SDValue Zero = DAG.getConstantFP(0.0, DL, FloatVT);
1566 return DAG.getNode(ISD::FCOPYSIGN, DL, FloatVT, Value, Zero);
1573 SDValue ClearSignMask = DAG.getConstant(~ValueAsInt.SignMask, DL, IntVT);
1574 SDValue ClearedSign = DAG.getNode(ISD::AND, DL, IntVT, ValueAsInt.IntValue,
1593 Chain = DAG.getCALLSEQ_START(Chain, 0, 0, dl);
1596 SDValue SP = DAG.getCopyFromReg(Chain, dl, SPReg, VT);
1600 DAG.getSubtarget().getFrameLowering()->getStackAlignment();
1601 Tmp1 = DAG.getNode(ISD::SUB, dl, VT, SP, Size); // Value
1603 Tmp1 = DAG.getNode(ISD::AND, dl, VT, Tmp1,
1604 DAG.getConstant(-(uint64_t)Align, dl, VT));
1605 Chain = DAG.getCopyToReg(Chain, dl, SPReg, Tmp1); // Output chain
1607 Tmp2 = DAG.getCALLSEQ_END(Chain, DAG.getIntPtrConstant(0, dl, true),
1607 Tmp2 = DAG.getCALLSEQ_END(Chain, DAG.getIntPtrConstant(0, dl, true),
1608 DAG.getIntPtrConstant(0, dl, true), SDValue(), dl);
1648 CC = DAG.getCondCode(InvCC);
1661 CC = DAG.getCondCode(InvCC);
1718 SetCC1 = DAG.getSetCC(dl, VT, LHS, RHS, CC1);
1719 SetCC2 = DAG.getSetCC(dl, VT, LHS, RHS, CC2);
1722 SetCC1 = DAG.getSetCC(dl, VT, LHS, LHS, CC1);
1723 SetCC2 = DAG.getSetCC(dl, VT, RHS, RHS, CC2);
1725 LHS = DAG.getNode(Opc, dl, VT, SetCC1, SetCC2);
1740 return EmitStackConvert(SrcOp, SlotVT, DestVT, dl, DAG.getEntryNode());
1747 unsigned SrcAlign = DAG.getDataLayout().getPrefTypeAlignment(
1748 SrcOp.getValueType().getTypeForEVT(*DAG.getContext()));
1749 SDValue FIPtr = DAG.CreateStackTemporary(SlotVT, SrcAlign);
1754 MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI);
1759 Type *DestType = DestVT.getTypeForEVT(*DAG.getContext());
1760 unsigned DestAlign = DAG.getDataLayout().getPrefTypeAlignment(DestType);
1767 Store = DAG.getTruncStore(Chain, dl, SrcOp, FIPtr, PtrInfo,
1772 DAG.getStore(Chain, dl, SrcOp, FIPtr, PtrInfo, SrcAlign);
1777 return DAG.getLoad(DestVT, dl, Store, FIPtr, PtrInfo, DestAlign);
1780 return DAG.getExtLoad(ISD::EXTLOAD, dl, DestVT, Store, FIPtr, PtrInfo, SlotVT,
1788 SDValue StackPtr = DAG.CreateStackTemporary(Node->getValueType(0));
1793 SDValue Ch = DAG.getTruncStore(
1794 DAG.getEntryNode(), dl, Node->getOperand(0), StackPtr,
1795 MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI),
1797 return DAG.getLoad(
1799 MachinePointerInfo::getFixedStack(DAG.getMachineFunction(), SPFI));
1931 return DAG.getUNDEF(VT);
1934 return DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, VT, Node->getOperand(0));
1952 CV.push_back(ConstantInt::get(EltVT.getTypeForEVT(*DAG.getContext()),
1957 Type *OpNTy = EltVT.getTypeForEVT(*DAG.getContext());
1963 DAG.getConstantPool(CP, TLI.getPointerTy(DAG.getDataLayout()));
1963 DAG.getConstantPool(CP, TLI.getPointerTy(DAG.getDataLayout()));
1965 return DAG.getLoad(
1966 VT, dl, DAG.getEntryNode(), CPIdx,
1967 MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
1989 SDValue Vec1 = DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, VT, Value1);
1992 Vec2 = DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, VT, Value2);
1994 Vec2 = DAG.getUNDEF(VT);
1997 return DAG.getVectorShuffle(VT, dl, Vec1, Vec2, ShuffleVec);
2001 if (ExpandBVWithShuffles(Node, DAG, TLI, Res))
2015 return DAG.getSplatBuildVector(VT, DL, SplatVal);
2028 Type *ArgTy = ArgVT.getTypeForEVT(*DAG.getContext());
2035 SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC),
2036 TLI.getPointerTy(DAG.getDataLayout()));
2039 Type *RetTy = RetVT.getTypeForEVT(*DAG.getContext());
2045 SDValue InChain = DAG.getEntryNode();
2050 const Function &F = DAG.getMachineFunction().getFunction();
2052 TLI.isInTailCallPosition(DAG, Node, TCChain) &&
2057 TargetLowering::CallLoweringInfo CLI(DAG);
2071 LLVM_DEBUG(dbgs() << "Created tailcall: "; DAG.getRoot().dump(&DAG));
2071 LLVM_DEBUG(dbgs() << "Created tailcall: "; DAG.getRoot().dump(&DAG));
2073 return DAG.getRoot();
2076 LLVM_DEBUG(dbgs() << "Created libcall: "; CallInfo.first.dump(&DAG));
2092 Type *ArgTy = ArgVT.getTypeForEVT(*DAG.getContext());
2099 SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC),
2100 TLI.getPointerTy(DAG.getDataLayout()));
2102 Type *RetTy = Node->getValueType(0).getTypeForEVT(*DAG.getContext());
2104 TargetLowering::CallLoweringInfo CLI(DAG);
2124 Node = DAG.mutateStrictFPToFP(Node);
2165 Node = DAG.mutateStrictFPToFP(Node);
2200 SDValue InChain = DAG.getEntryNode();
2203 Type *RetTy = RetVT.getTypeForEVT(*DAG.getContext());
2209 Type *ArgTy = ArgVT.getTypeForEVT(*DAG.getContext());
2218 SDValue FIPtr = DAG.CreateStackTemporary(RetVT);
2225 SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC),
2226 TLI.getPointerTy(DAG.getDataLayout()));
2229 TargetLowering::CallLoweringInfo CLI(DAG);
2241 DAG.getLoad(RetVT, dl, CallInfo.second, FIPtr, MachinePointerInfo());
2295 SDValue InChain = DAG.getEntryNode();
2298 Type *RetTy = RetVT.getTypeForEVT(*DAG.getContext());
2311 SDValue SinPtr = DAG.CreateStackTemporary(RetVT);
2319 SDValue CosPtr = DAG.CreateStackTemporary(RetVT);
2326 SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC),
2327 TLI.getPointerTy(DAG.getDataLayout()));
2330 TargetLowering::CallLoweringInfo CLI(DAG);
2332 TLI.getLibcallCallingConv(LC), Type::getVoidTy(*DAG.getContext()), Callee,
2338 DAG.getLoad(RetVT, dl, CallInfo.second, SinPtr, MachinePointerInfo()));
2340 DAG.getLoad(RetVT, dl, CallInfo.second, CosPtr, MachinePointerInfo()));
2359 SDValue StackSlot = DAG.CreateStackTemporary(MVT::f64);
2362 SDValue WordOff = DAG.getConstant(sizeof(int), dl,
2366 SDValue Lo = DAG.getNode(ISD::ADD, dl, StackSlot.getValueType(),
2368 if (DAG.getDataLayout().isLittleEndian())
2375 SDValue SignBit = DAG.getConstant(0x80000000u, dl, MVT::i32);
2376 Op0Mapped = DAG.getNode(ISD::XOR, dl, MVT::i32, Op0, SignBit);
2381 SDValue Store1 = DAG.getStore(DAG.getEntryNode(), dl, Op0Mapped, Lo,
2381 SDValue Store1 = DAG.getStore(DAG.getEntryNode(), dl, Op0Mapped, Lo,
2384 SDValue InitialHi = DAG.getConstant(0x43300000u, dl, MVT::i32);
2387 DAG.getStore(Store1, dl, InitialHi, Hi, MachinePointerInfo());
2390 DAG.getLoad(MVT::f64, dl, Store2, StackSlot, MachinePointerInfo());
2392 SDValue Bias = DAG.getConstantFP(isSigned ?
2397 SDValue Sub = DAG.getNode(ISD::FSUB, dl, MVT::f64, Load, Bias);
2399 SDValue Result = DAG.getFPExtendOrRound(Sub, dl, DestVT);
2405 SDValue Tmp1 = DAG.getNode(ISD::SINT_TO_FP, dl, DestVT, Op0);
2407 SDValue SignSet = DAG.getSetCC(dl, getSetCCResultType(SrcVT), Op0,
2408 DAG.getConstant(0, dl, SrcVT), ISD::SETLT);
2409 SDValue Zero = DAG.getIntPtrConstant(0, dl),
2410 Four = DAG.getIntPtrConstant(4, dl);
2411 SDValue CstOffset = DAG.getSelect(dl, Zero.getValueType(),
2425 if (DAG.getDataLayout().isLittleEndian())
2428 Type::getInt64Ty(*DAG.getContext()), FF);
2431 DAG.getConstantPool(FudgeFactor, TLI.getPointerTy(DAG.getDataLayout()));
2431 DAG.getConstantPool(FudgeFactor, TLI.getPointerTy(DAG.getDataLayout()));
2433 CPIdx = DAG.getNode(ISD::ADD, dl, CPIdx.getValueType(), CPIdx, CstOffset);
2437 FudgeInReg = DAG.getLoad(
2438 MVT::f32, dl, DAG.getEntryNode(), CPIdx,
2439 MachinePointerInfo::getConstantPool(DAG.getMachineFunction()),
2442 SDValue Load = DAG.getExtLoad(
2443 ISD::EXTLOAD, dl, DestVT, DAG.getEntryNode(), CPIdx,
2444 MachinePointerInfo::getConstantPool(DAG.getMachineFunction()), MVT::f32,
2451 return DAG.getNode(ISD::FADD, dl, DestVT, Tmp1, FudgeInReg);
2490 return DAG.getNode(OpToUse, dl, DestVT,
2491 DAG.getNode(isSigned ? ISD::SIGN_EXTEND : ISD::ZERO_EXTEND,
2530 SDValue Operation = DAG.getNode(OpToUse, dl, NewOutTy, LegalOp);
2534 return DAG.getNode(ISD::TRUNCATE, dl, DestVT, Operation);
2540 EVT SHVT = TLI.getShiftAmountTy(VT, DAG.getDataLayout());
2558 Tmp = (Sz > 8 ? DAG.getNode(ISD::BSWAP, dl, VT, Op) : Op);
2561 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskHi4, dl, VT));
2561 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskHi4, dl, VT));
2562 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskLo4, dl, VT));
2562 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskLo4, dl, VT));
2563 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp2, DAG.getConstant(4, dl, SHVT));
2563 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp2, DAG.getConstant(4, dl, SHVT));
2564 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(4, dl, SHVT));
2564 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(4, dl, SHVT));
2565 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3);
2568 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskHi2, dl, VT));
2568 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskHi2, dl, VT));
2569 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskLo2, dl, VT));
2569 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskLo2, dl, VT));
2570 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp2, DAG.getConstant(2, dl, SHVT));
2570 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp2, DAG.getConstant(2, dl, SHVT));
2571 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(2, dl, SHVT));
2571 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(2, dl, SHVT));
2572 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3);
2575 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskHi1, dl, VT));
2575 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskHi1, dl, VT));
2576 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskLo1, dl, VT));
2576 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp, DAG.getConstant(MaskLo1, dl, VT));
2577 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp2, DAG.getConstant(1, dl, SHVT));
2577 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Tmp2, DAG.getConstant(1, dl, SHVT));
2578 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(1, dl, SHVT));
2578 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Tmp3, DAG.getConstant(1, dl, SHVT));
2579 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp3);
2583 Tmp = DAG.getConstant(0, dl, VT);
2587 DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(J - I, dl, SHVT));
2587 DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(J - I, dl, SHVT));
2590 DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(I - J, dl, SHVT));
2590 DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(I - J, dl, SHVT));
2594 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Shift, dl, VT));
2594 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(Shift, dl, VT));
2595 Tmp = DAG.getNode(ISD::OR, dl, VT, Tmp, Tmp2);
2604 EVT SHVT = TLI.getShiftAmountTy(VT, DAG.getDataLayout());
2610 return DAG.getNode(ISD::ROTL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2610 return DAG.getNode(ISD::ROTL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2612 Tmp4 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(24, dl, SHVT));
2612 Tmp4 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(24, dl, SHVT));
2613 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2613 Tmp3 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2614 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2614 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2615 Tmp1 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT));
2615 Tmp1 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT));
2616 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp3,
2617 DAG.getConstant(0xFF0000, dl, VT));
2618 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(0xFF00, dl, VT));
2618 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2, DAG.getConstant(0xFF00, dl, VT));
2619 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp3);
2620 Tmp2 = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp1);
2621 return DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp2);
2623 Tmp8 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(56, dl, SHVT));
2623 Tmp8 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(56, dl, SHVT));
2624 Tmp7 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(40, dl, SHVT));
2624 Tmp7 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(40, dl, SHVT));
2625 Tmp6 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(24, dl, SHVT));
2625 Tmp6 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(24, dl, SHVT));
2626 Tmp5 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2626 Tmp5 = DAG.getNode(ISD::SHL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2627 Tmp4 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2627 Tmp4 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(8, dl, SHVT));
2628 Tmp3 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT));
2628 Tmp3 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(24, dl, SHVT));
2629 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(40, dl, SHVT));
2629 Tmp2 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(40, dl, SHVT));
2630 Tmp1 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(56, dl, SHVT));
2630 Tmp1 = DAG.getNode(ISD::SRL, dl, VT, Op, DAG.getConstant(56, dl, SHVT));
2631 Tmp7 = DAG.getNode(ISD::AND, dl, VT, Tmp7,
2632 DAG.getConstant(255ULL<<48, dl, VT));
2633 Tmp6 = DAG.getNode(ISD::AND, dl, VT, Tmp6,
2634 DAG.getConstant(255ULL<<40, dl, VT));
2635 Tmp5 = DAG.getNode(ISD::AND, dl, VT, Tmp5,
2636 DAG.getConstant(255ULL<<32, dl, VT));
2637 Tmp4 = DAG.getNode(ISD::AND, dl, VT, Tmp4,
2638 DAG.getConstant(255ULL<<24, dl, VT));
2639 Tmp3 = DAG.getNode(ISD::AND, dl, VT, Tmp3,
2640 DAG.getConstant(255ULL<<16, dl, VT));
2641 Tmp2 = DAG.getNode(ISD::AND, dl, VT, Tmp2,
2642 DAG.getConstant(255ULL<<8 , dl, VT));
2643 Tmp8 = DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp7);
2644 Tmp6 = DAG.getNode(ISD::OR, dl, VT, Tmp6, Tmp5);
2645 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp3);
2646 Tmp2 = DAG.getNode(ISD::OR, dl, VT, Tmp2, Tmp1);
2647 Tmp8 = DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp6);
2648 Tmp4 = DAG.getNode(ISD::OR, dl, VT, Tmp4, Tmp2);
2649 return DAG.getNode(ISD::OR, dl, VT, Tmp8, Tmp4);
2661 if (TLI.expandABS(Node, Tmp1, DAG))
2665 if (TLI.expandCTPOP(Node, Tmp1, DAG))
2670 if (TLI.expandCTLZ(Node, Tmp1, DAG))
2675 if (TLI.expandCTTZ(Node, Tmp1, DAG))
2687 Results.push_back(DAG.getConstant(0, dl, Node->getValueType(0)));
2690 SDValue CfaArg = DAG.getSExtOrTrunc(Node->getOperand(0), dl,
2691 TLI.getPointerTy(DAG.getDataLayout()));
2692 SDValue Offset = DAG.getNode(ISD::ADD, dl,
2694 DAG.getNode(ISD::FRAME_TO_ARGS_OFFSET, dl,
2697 SDValue FA = DAG.getNode(
2698 ISD::FRAMEADDR, dl, TLI.getPointerTy(DAG.getDataLayout()),
2699 DAG.getConstant(0, dl, TLI.getPointerTy(DAG.getDataLayout())));
2699 DAG.getConstant(0, dl, TLI.getPointerTy(DAG.getDataLayout())));
2700 Results.push_back(DAG.getNode(ISD::ADD, dl, FA.getValueType(),
2705 Results.push_back(DAG.getConstant(1, dl, Node->getValueType(0)));
2720 DAG.getConstant(0, dl, Node->getValueType(0)));
2726 Results.push_back(DAG.getConstant(0, dl, MVT::i32));
2731 SDValue Zero = DAG.getConstant(0, dl, Node->getValueType(0));
2732 SDVTList VTs = DAG.getVTList(Node->getValueType(0), MVT::Other);
2733 SDValue Swap = DAG.getAtomicCmpSwap(
2743 SDValue Swap = DAG.getAtomic(ISD::ATOMIC_SWAP, dl,
2755 SDVTList VTs = DAG.getVTList(Node->getValueType(0), MVT::Other);
2756 SDValue Res = DAG.getAtomicCmpSwap(
2769 LHS = DAG.getNode(ISD::AssertSext, dl, OuterType, Res,
2770 DAG.getValueType(AtomicType));
2771 RHS = DAG.getNode(ISD::SIGN_EXTEND_INREG, dl, OuterType,
2772 Node->getOperand(2), DAG.getValueType(AtomicType));
2776 LHS = DAG.getNode(ISD::AssertZext, dl, OuterType, Res,
2777 DAG.getValueType(AtomicType));
2778 RHS = DAG.getZeroExtendInReg(Node->getOperand(2), dl, AtomicType);
2782 LHS = DAG.getZeroExtendInReg(Res, dl, AtomicType);
2783 RHS = DAG.getZeroExtendInReg(Node->getOperand(2), dl, AtomicType);
2790 DAG.getSetCC(dl, Node->getValueType(1), LHS, RHS, ISD::SETEQ);
2807 Results.push_back(DAG.getConstant(0, dl, VT));
2810 Results.push_back(DAG.getConstantFP(0, dl, VT));
2865 SDValue One = DAG.getConstant(1, dl, VT);
2866 SDValue And = DAG.getNode(ISD::AND, dl, VT, Node->getOperand(0), One);
2867 SDValue Zero = DAG.getConstant(0, dl, VT);
2868 SDValue Neg = DAG.getNode(ISD::SUB, dl, VT, Zero, And);
2875 EVT ShiftAmountTy = TLI.getShiftAmountTy(VT, DAG.getDataLayout());
2878 SDValue ShiftCst = DAG.getConstant(BitsDiff, dl, ShiftAmountTy);
2879 Tmp1 = DAG.getNode(ISD::SHL, dl, Node->getValueType(0),
2881 Tmp1 = DAG.getNode(ISD::SRA, dl, Node->getValueType(0), Tmp1, ShiftCst);
2886 if (TLI.expandUINT_TO_FP(Node, Tmp1, DAG)) {
2897 if (TLI.expandFP_TO_SINT(Node, Tmp1, DAG))
2901 if (TLI.expandFP_TO_SINT(Node, Tmp1, DAG)) {
2908 if (TLI.expandFP_TO_UINT(Node, Tmp1, Tmp2, DAG))
2912 if (TLI.expandFP_TO_UINT(Node, Tmp1, Tmp2, DAG)) {
2914 DAG.ReplaceAllUsesOfValueWith(SDValue(Node,1), Tmp2);
2922 Results.push_back(DAG.expandVAArg(Node));
2926 Results.push_back(DAG.expandVACopy(Node));
2931 Tmp1 = DAG.getNode(ISD::BITCAST, dl, Node->getValueType(0),
2963 EVT NewEltVT = TLI.getTypeToTransformTo(*DAG.getContext(), EltVT);
2975 EVT::getVectorVT(*DAG.getContext(), NewEltVT,
2980 Op0 = DAG.getNode(ISD::BITCAST, dl, NewVT, Op0);
2981 Op1 = DAG.getNode(ISD::BITCAST, dl, NewVT, Op1);
3009 Ops.push_back(DAG.getUNDEF(EltVT));
3014 Ops.push_back(DAG.getNode(
3016 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout()))));
3016 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout()))));
3018 Ops.push_back(DAG.getNode(
3020 DAG.getConstant(Idx - NumElems, dl,
3021 TLI.getVectorIdxTy(DAG.getDataLayout()))));
3024 Tmp1 = DAG.getBuildVector(VT, dl, Ops);
3026 Tmp1 = DAG.getNode(ISD::BITCAST, dl, Node->getValueType(0), Tmp1);
3034 Tmp1 = DAG.getNode(ISD::SRL, dl, OpTy, Node->getOperand(0),
3035 DAG.getConstant(OpTy.getSizeInBits() / 2, dl,
3038 DAG.getDataLayout())));
3039 Tmp1 = DAG.getNode(ISD::TRUNCATE, dl, Node->getValueType(0), Tmp1);
3042 Tmp1 = DAG.getNode(ISD::TRUNCATE, dl, Node->getValueType(0),
3052 Results.push_back(DAG.getCopyFromReg(Node->getOperand(0), dl, SP,
3056 Results.push_back(DAG.getUNDEF(Node->getValueType(0)));
3064 Results.push_back(DAG.getCopyToReg(Node->getOperand(0), dl, SP,
3071 Results.push_back(DAG.getConstant(0, dl, Node->getValueType(0)));
3079 Tmp1 = DAG.getConstantFP(-0.0, dl, Node->getValueType(0));
3081 Tmp1 = DAG.getNode(ISD::FSUB, dl, Node->getValueType(0), Tmp1,
3103 Tmp1 = DAG.getSelectCC(dl, Tmp1, Tmp2, Tmp1, Tmp2, Pred);
3109 if (SDValue Expanded = TLI.expandFMINNUM_FMAXNUM(Node, DAG))
3121 SDVTList VTs = DAG.getVTList(VT, VT);
3122 Tmp1 = DAG.getNode(ISD::FSINCOS, dl, VTs, Node->getOperand(0));
3138 DAG.getNode(ISD::FP16_TO_FP, dl, MVT::f32, Node->getOperand(0));
3140 DAG.getNode(ISD::FP_EXTEND, dl, Node->getValueType(0), Res));
3152 SDValue FloatVal = DAG.getNode(ISD::FP_ROUND, dl, MVT::f32, Op,
3153 DAG.getIntPtrConstant(0, dl));
3155 DAG.getNode(ISD::FP_TO_FP16, dl, Node->getValueType(0), FloatVal));
3164 DAG.getMachineFunction().getFunction().hasOptSize()))
3178 Tmp1 = DAG.getNode(ISD::FNEG, dl, VT, Node->getOperand(1));
3179 Tmp1 = DAG.getNode(ISD::FADD, dl, VT, Node->getOperand(0), Tmp1, Flags);
3189 Tmp1 = DAG.getNode(ISD::XOR, dl, VT, Node->getOperand(1),
3190 DAG.getConstant(APInt::getAllOnesValue(VT.getSizeInBits()), dl,
3192 Tmp1 = DAG.getNode(ISD::ADD, dl, VT, Tmp1, DAG.getConstant(1, dl, VT));
3192 Tmp1 = DAG.getNode(ISD::ADD, dl, VT, Tmp1, DAG.getConstant(1, dl, VT));
3193 Results.push_back(DAG.getNode(ISD::ADD, dl, VT, Node->getOperand(0), Tmp1));
3205 SDVTList VTs = DAG.getVTList(VT, VT);
3206 Tmp1 = DAG.getNode(DivRemOpc, dl, VTs, Tmp2, Tmp3).getValue(1);
3210 Tmp1 = DAG.getNode(DivOpc, dl, VT, Tmp2, Tmp3);
3211 Tmp1 = DAG.getNode(ISD::MUL, dl, VT, Tmp1, Tmp3);
3212 Tmp1 = DAG.getNode(ISD::SUB, dl, VT, Tmp2, Tmp1);
3223 SDVTList VTs = DAG.getVTList(VT, VT);
3224 Tmp1 = DAG.getNode(DivRemOpc, dl, VTs, Node->getOperand(0),
3235 SDVTList VTs = DAG.getVTList(VT, VT);
3237 Tmp1 = DAG.getNode(ExpandOpcode, dl, VTs, Node->getOperand(0),
3251 Results.push_back(DAG.getNode(ISD::MUL, dl, VT, LHS, RHS));
3252 Results.push_back(DAG.getNode(MULHOpcode, dl, VT, LHS, RHS));
3257 EVT HalfType = EVT(VT).getHalfSizedIntegerVT(*DAG.getContext());
3260 HalfType, DAG,
3263 SDValue Lo = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Halves[2 * i]);
3264 SDValue Hi = DAG.getNode(ISD::ANY_EXTEND, dl, VT, Halves[2 * i + 1]);
3265 SDValue Shift = DAG.getConstant(
3267 TLI.getShiftAmountTy(HalfType, DAG.getDataLayout()));
3268 Hi = DAG.getNode(ISD::SHL, dl, VT, Hi, Shift);
3269 Results.push_back(DAG.getNode(ISD::OR, dl, VT, Lo, Hi));
3277 SDVTList VTs = DAG.getVTList(VT, VT);
3298 Results.push_back(DAG.getNode(OpToUse, dl, VTs, Node->getOperand(0),
3304 EVT HalfType = VT.getHalfSizedIntegerVT(*DAG.getContext());
3309 TLI.expandMUL(Node, Lo, Hi, HalfType, DAG,
3311 Lo = DAG.getNode(ISD::ZERO_EXTEND, dl, VT, Lo);
3312 Hi = DAG.getNode(ISD::ANY_EXTEND, dl, VT, Hi);
3314 DAG.getConstant(HalfType.getSizeInBits(), dl,
3315 TLI.getShiftAmountTy(HalfType, DAG.getDataLayout()));
3316 Hi = DAG.getNode(ISD::SHL, dl, VT, Hi, Shift);
3317 Results.push_back(DAG.getNode(ISD::OR, dl, VT, Lo, Hi));
3323 if (TLI.expandFunnelShift(Node, Tmp1, DAG))
3328 if (TLI.expandROT(Node, Tmp1, DAG))
3335 Results.push_back(TLI.expandAddSubSat(Node, DAG));
3341 Results.push_back(TLI.expandFixedPointMul(Node, DAG));
3354 SDValue Sum = DAG.getNode(Op, dl, VT, LHS, RHS);
3360 SDValue Overflow = DAG.getSetCC(dl, SetCCType, Sum, LHS, CC);
3364 DAG.getZeroExtendInReg(DAG.getZExtOrTrunc(Carry, dl, VT), dl, MVT::i1);
3364 DAG.getZeroExtendInReg(DAG.getZExtOrTrunc(Carry, dl, VT), dl, MVT::i1);
3365 SDValue Sum2 = DAG.getNode(Op, dl, VT, Sum, CarryExt);
3371 SDValue Zero = DAG.getConstant(0, dl, VT);
3373 IsAdd ? DAG.getSetCC(dl, SetCCType, Sum2, Zero, ISD::SETEQ)
3374 : DAG.getSetCC(dl, SetCCType, Sum, Zero, ISD::SETEQ);
3375 Overflow2 = DAG.getNode(ISD::AND, dl, SetCCType, Overflow2,
3376 DAG.getZExtOrTrunc(Carry, dl, SetCCType));
3379 DAG.getNode(ISD::OR, dl, SetCCType, Overflow, Overflow2);
3382 Results.push_back(DAG.getBoolExtOrTrunc(ResultCarry, dl, CarryType, VT));
3388 TLI.expandSADDSUBO(Node, Result, Overflow, DAG);
3396 TLI.expandUADDSUBO(Node, Result, Overflow, DAG);
3404 if (TLI.expandMULO(Node, Result, Overflow, DAG)) {
3412 Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, PairTy, Node->getOperand(0));
3413 Tmp2 = DAG.getNode(ISD::ANY_EXTEND, dl, PairTy, Node->getOperand(1));
3414 Tmp2 = DAG.getNode(
3416 DAG.getConstant(PairTy.getSizeInBits() / 2, dl,
3417 TLI.getShiftAmountTy(PairTy, DAG.getDataLayout())));
3418 Results.push_back(DAG.getNode(ISD::OR, dl, PairTy, Tmp1, Tmp2));
3426 Tmp1 = DAG.getSelectCC(dl, Tmp1.getOperand(0), Tmp1.getOperand(1),
3430 Tmp1 = DAG.getSelectCC(dl, Tmp1,
3431 DAG.getConstant(0, dl, Tmp1.getValueType()),
3442 const DataLayout &TD = DAG.getDataLayout();
3446 DAG.getMachineFunction().getJumpTableInfo()->getEntrySize(TD);
3453 Index = DAG.getNode(
3455 DAG.getConstant(llvm::Log2_32(EntrySize), dl, Index.getValueType()));
3457 Index = DAG.getNode(ISD::MUL, dl, Index.getValueType(), Index,
3458 DAG.getConstant(EntrySize, dl, Index.getValueType()));
3459 SDValue Addr = DAG.getNode(ISD::ADD, dl, Index.getValueType(),
3462 EVT MemVT = EVT::getIntegerVT(*DAG.getContext(), EntrySize * 8);
3463 SDValue LD = DAG.getExtLoad(
3465 MachinePointerInfo::getJumpTable(DAG.getMachineFunction()), MemVT);
3471 Addr = DAG.getNode(ISD::ADD, dl, PTy, Addr,
3472 TLI.getPICJumpTableRelocBase(Table, DAG));
3475 Tmp1 = TLI.expandIndirectJTBranch(dl, LD.getValue(1), Addr, DAG);
3485 Tmp1 = DAG.getNode(ISD::BR_CC, dl, MVT::Other,
3497 Tmp3 = DAG.getNode(ISD::AND, dl, Tmp2.getValueType(), Tmp2,
3498 DAG.getConstant(1, dl, Tmp2.getValueType()));
3499 Tmp1 = DAG.getNode(ISD::BR_CC, dl, MVT::Other, Tmp1,
3500 DAG.getCondCode(ISD::SETNE), Tmp3,
3501 DAG.getConstant(0, dl, Tmp3.getValueType()),
3517 Tmp1 = DAG.getNode(ISD::SETCC, dl, Node->getValueType(0),
3523 Tmp1 = DAG.getLogicalNOT(dl, Tmp1, Tmp1->getValueType(0));
3542 Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, VT, Tmp1, Tmp2,
3543 DAG.getConstant(TrueValue, dl, VT),
3544 DAG.getConstant(0, dl, VT),
3567 SDValue Cond = DAG.getNode(ISD::SETCC, dl, CCVT, Tmp1, Tmp2, CC, Node->getFlags());
3568 Results.push_back(DAG.getSelect(dl, VT, Cond, Tmp3, Tmp4));
3582 Tmp1 = DAG.getSelectCC(dl, Tmp1, Tmp2, Tmp4, Tmp3, InvCC);
3592 Tmp1 = DAG.getSelectCC(dl, Tmp2, Tmp1, Tmp4, Tmp3, SwapInvCC);
3612 Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, Node->getValueType(0),
3615 Tmp2 = DAG.getConstant(0, dl, Tmp1.getValueType());
3616 CC = DAG.getCondCode(ISD::SETNE);
3617 Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, Node->getValueType(0), Tmp1,
3641 Tmp1 = DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0), Tmp1,
3644 Tmp3 = DAG.getConstant(0, dl, Tmp2.getValueType());
3645 Tmp4 = DAG.getCondCode(ISD::SETNE);
3646 Tmp1 = DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0), Tmp1, Tmp4,
3669 SDValue Ex = DAG.getNode(
3671 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout())));
3671 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout())));
3672 SDValue Sh = DAG.getNode(
3674 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout())));
3674 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout())));
3675 Scalars.push_back(DAG.getNode(Node->getOpcode(), dl,
3679 SDValue Result = DAG.getBuildVector(Node->getValueType(0), dl, Scalars);
3696 Results.push_back(TLI.expandVecReduce(Node, DAG));
3762 TargetLowering::CallLoweringInfo CLI(DAG);
3766 CallingConv::C, Type::getVoidTy(*DAG.getContext()),
3767 DAG.getExternalSymbol("__sync_synchronize",
3768 TLI.getPointerTy(DAG.getDataLayout())),
3804 TargetLowering::CallLoweringInfo CLI(DAG);
3807 .setLibCallee(CallingConv::C, Type::getVoidTy(*DAG.getContext()),
3808 DAG.getExternalSymbol(
3809 "abort", TLI.getPointerTy(DAG.getDataLayout())),
3857 if (CanUseFiniteLibCall && DAG.getLibInfo().has(LibFunc_log_finite))
3870 if (CanUseFiniteLibCall && DAG.getLibInfo().has(LibFunc_log2_finite))
3883 if (CanUseFiniteLibCall && DAG.getLibInfo().has(LibFunc_log10_finite))
3896 if (CanUseFiniteLibCall && DAG.getLibInfo().has(LibFunc_exp_finite))
3909 if (CanUseFiniteLibCall && DAG.getLibInfo().has(LibFunc_exp2_finite))
3968 if (CanUseFiniteLibCall && DAG.getLibInfo().has(LibFunc_pow_finite))
4144 Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, NVT, Node->getOperand(0));
4151 Tmp1 = DAG.getNode(ISD::OR, dl, NVT, Tmp1,
4152 DAG.getConstant(TopBit, dl, NVT));
4156 Tmp1 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1);
4160 Tmp1 = DAG.getNode(ISD::SUB, dl, NVT, Tmp1,
4161 DAG.getConstant(NVT.getSizeInBits() -
4164 Results.push_back(DAG.getNode(ISD::TRUNCATE, dl, OVT, Tmp1));
4169 Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, NVT, Node->getOperand(0));
4170 Tmp1 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1);
4171 Tmp1 = DAG.getNode(
4173 DAG.getConstant(DiffBits, dl,
4174 TLI.getShiftAmountTy(NVT, DAG.getDataLayout())));
4176 Results.push_back(DAG.getNode(ISD::TRUNCATE, dl, OVT, Tmp1));
4205 Tmp1 = DAG.getVAArg(NVT, dl, Chain, Ptr, Node->getOperand(2),
4209 Tmp2 = DAG.getNode(TruncOp, dl, OVT, Tmp1);
4213 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 0), Tmp2);
4214 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 1), Chain);
4253 Tmp1 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(0));
4254 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(1));
4256 Tmp1 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1, Tmp2);
4257 Results.push_back(DAG.getNode(TruncOp, dl, OVT, Tmp1));
4265 Tmp1 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(0));
4266 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(1));
4267 Tmp1 = DAG.getNode(ISD::MUL, dl, NVT, Tmp1, Tmp2);
4269 auto &DL = DAG.getDataLayout();
4271 Tmp2 = DAG.getNode(
4273 DAG.getConstant(OriginalSize, dl, TLI.getScalarShiftAmountTy(DL, NVT)));
4274 Results.push_back(DAG.getNode(ISD::TRUNCATE, dl, OVT, Tmp1));
4275 Results.push_back(DAG.getNode(ISD::TRUNCATE, dl, OVT, Tmp2));
4293 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(1));
4294 Tmp3 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(2));
4296 Tmp1 = DAG.getSelect(dl, NVT, Tmp1, Tmp2, Tmp3);
4299 Tmp1 = DAG.getNode(TruncOp, dl, Node->getValueType(0), Tmp1);
4301 Tmp1 = DAG.getNode(TruncOp, dl, Node->getValueType(0), Tmp1,
4302 DAG.getIntPtrConstant(0, dl));
4310 Tmp1 = DAG.getNode(ISD::BITCAST, dl, NVT, Node->getOperand(0));
4311 Tmp2 = DAG.getNode(ISD::BITCAST, dl, NVT, Node->getOperand(1));
4315 Tmp1 = DAG.getNode(ISD::BITCAST, dl, OVT, Tmp1);
4326 Tmp1 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(0));
4327 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(1));
4328 Results.push_back(DAG.getNode(ISD::SETCC, dl, Node->getValueType(0), Tmp1,
4339 Tmp1 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(2));
4340 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(3));
4341 Results.push_back(DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0),
4354 Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0));
4355 Tmp2 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(1));
4356 Tmp3 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1, Tmp2,
4358 Results.push_back(DAG.getNode(ISD::FP_ROUND, dl, OVT,
4359 Tmp3, DAG.getIntPtrConstant(0, dl)));
4362 Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0));
4363 Tmp2 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(1));
4364 Tmp3 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(2));
4366 DAG.getNode(ISD::FP_ROUND, dl, OVT,
4367 DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1, Tmp2, Tmp3),
4368 DAG.getIntPtrConstant(0, dl)));
4372 Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0));
4374 Tmp3 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1, Tmp2);
4382 Results.push_back(DAG.getNode(ISD::FP_ROUND, dl, OVT,
4383 Tmp3, DAG.getIntPtrConstant(isTrunc, dl)));
4402 Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0));
4403 Tmp2 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1);
4404 Results.push_back(DAG.getNode(ISD::FP_ROUND, dl, OVT,
4405 Tmp2, DAG.getIntPtrConstant(0, dl)));
4426 NewOps.push_back(DAG.getNode(ISD::BITCAST, SDLoc(Op), MidVT, Op));
4430 SDValue Concat = DAG.getNode(ISD::CONCAT_VECTORS, SL, NVT, NewOps);
4431 SDValue CvtVec = DAG.getNode(ISD::BITCAST, SL, OVT, Concat);
4460 SDValue Factor = DAG.getConstant(NewEltsPerOldElt, SL, IdxVT);
4461 SDValue NewBaseIdx = DAG.getNode(ISD::MUL, SL, IdxVT, Idx, Factor);
4463 SDValue CastVec = DAG.getNode(ISD::BITCAST, SL, NVT, Node->getOperand(0));
4467 SDValue IdxOffset = DAG.getConstant(I, SL, IdxVT);
4468 SDValue TmpIdx = DAG.getNode(ISD::ADD, SL, IdxVT, NewBaseIdx, IdxOffset);
4470 SDValue Elt = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, SL, NewEltVT,
4475 SDValue NewVec = DAG.getBuildVector(MidVT, SL, NewOps);
4476 Results.push_back(DAG.getNode(ISD::BITCAST, SL, EltVT, NewVec));
4508 SDValue Factor = DAG.getConstant(NewEltsPerOldElt, SDLoc(), IdxVT);
4509 SDValue NewBaseIdx = DAG.getNode(ISD::MUL, SL, IdxVT, Idx, Factor);
4511 SDValue CastVec = DAG.getNode(ISD::BITCAST, SL, NVT, Node->getOperand(0));
4512 SDValue CastVal = DAG.getNode(ISD::BITCAST, SL, MidVT, Val);
4516 SDValue IdxOffset = DAG.getConstant(I, SL, IdxVT);
4517 SDValue InEltIdx = DAG.getNode(ISD::ADD, SL, IdxVT, NewBaseIdx, IdxOffset);
4519 SDValue Elt = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, SL, NewEltVT,
4522 NewVec = DAG.getNode(ISD::INSERT_VECTOR_ELT, SL, NVT,
4526 Results.push_back(DAG.getNode(ISD::BITCAST, SL, OVT, NewVec));
4544 SDValue CastVal = DAG.getNode(ISD::BITCAST, SL, MidVT, Val);
4545 SDValue Undef = DAG.getUNDEF(MidVT);
4552 SDValue Concat = DAG.getNode(ISD::CONCAT_VECTORS, SL, NVT, NewElts);
4553 SDValue CvtVec = DAG.getNode(ISD::BITCAST, SL, OVT, Concat);
4560 SDValue CastVal = DAG.getNode(ISD::BITCAST, SL, NVT, AM->getVal());
4567 = DAG.getAtomic(ISD::ATOMIC_SWAP, SL, NVT,
4568 DAG.getVTList(NVT, MVT::Other),
4571 Results.push_back(DAG.getNode(ISD::BITCAST, SL, OVT, NewAtomic));