Home | History | Annotate | Download | only in SelectionDAG

Lines Matching defs:DAG

36   SelectionDAG& DAG;
127 /// \brief Begin legalizer the vector operations in the DAG.
129 VectorLegalizer(SelectionDAG& dag) :
130 DAG(dag), TLI(dag.getTargetLoweringInfo()), Changed(false) {}
136 for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
137 E = std::prev(DAG.allnodes_end()); I != std::next(E); ++I) {
159 DAG.AssignTopologicalOrder();
160 for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
161 E = std::prev(DAG.allnodes_end()); I != std::next(E); ++I)
165 SDValue OldRoot = DAG.getRoot();
167 DAG.setRoot(LegalizedNodes[OldRoot]);
172 DAG.RemoveDeadNodes();
197 SDValue Result = SDValue(DAG.UpdateNodeOperands(Op.getNode(), Ops), 0);
219 return TranslateLegalizeResults(Op, TLI.LowerOperation(Result, DAG));
319 SDValue Tmp1 = TLI.LowerOperation(Op, DAG);
368 Operands[j] = DAG.getNode(ISD::BITCAST, dl, NVT, Op.getOperand(j));
373 Op = DAG.getNode(Op.getOpcode(), dl, NVT, Operands);
375 return DAG.getNode(ISD::BITCAST, dl, VT, Op);
393 EVT NVT = VT.widenIntegerVectorElementType(*DAG.getContext());
402 Operands[j] = DAG.getNode(Opc, dl, NVT, Op.getOperand(j));
407 return DAG.getNode(Op.getOpcode(), dl, Op.getValueType(), Operands);
422 NewVT = VT.widenIntegerVectorElementType(*DAG.getContext());
435 SDValue promoted = DAG.getNode(NewOpc, SDLoc(Op), NewVT, Op.getOperand(0));
436 return DAG.getNode(ISD::TRUNCATE, SDLoc(Op), VT, promoted);
479 ScalarLoad = DAG.getLoad(WideVT, dl, Chain, BasePTR,
488 LoadVT = EVT::getIntegerVT(*DAG.getContext(), LoadBytes << 3);
490 ScalarLoad = DAG.getExtLoad(ISD::EXTLOAD, dl, WideVT, Chain, BasePTR,
499 BasePTR = DAG.getNode(ISD::ADD, dl, BasePTR.getValueType(), BasePTR,
500 DAG.getConstant(LoadBytes, BasePTR.getValueType()));
508 SDValue SrcEltBitMask = DAG.getConstant((1U << SrcEltBits) - 1, WideVT);
518 ShAmt = DAG.getConstant(BitOffset, TLI.getShiftAmountTy(WideVT));
519 Lo = DAG.getNode(ISD::SRL, dl, WideVT, LoadVals[WideIdx], ShAmt);
520 Lo = DAG.getNode(ISD::AND, dl, WideVT, Lo, SrcEltBitMask);
528 ShAmt = DAG.getConstant(SrcEltBits - Offset,
530 Hi = DAG.getNode(ISD::SHL, dl, WideVT, LoadVals[WideIdx], ShAmt);
531 Hi = DAG.getNode(ISD::AND, dl, WideVT, Hi, SrcEltBitMask);
536 Lo = DAG.getNode(ISD::OR, dl, WideVT, Lo, Hi);
541 Lo = DAG.getAnyExtOrTrunc(Lo, dl, DstEltVT);
544 Lo = DAG.getZExtOrTrunc(Lo, dl, DstEltVT);
547 ShAmt = DAG.getConstant(WideBits - SrcEltBits,
549 Lo = DAG.getNode(ISD::SHL, dl, WideVT, Lo, ShAmt);
550 Lo = DAG.getNode(ISD::SRA, dl, WideVT, Lo, ShAmt);
551 Lo = DAG.getSExtOrTrunc(Lo, dl, DstEltVT);
560 SDValue ScalarLoad = DAG.getExtLoad(ExtType, dl,
567 BasePTR = DAG.getNode(ISD::ADD, dl, BasePTR.getValueType(), BasePTR,
568 DAG.getConstant(Stride, BasePTR.getValueType()));
575 SDValue NewChain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, LoadChains);
576 SDValue Value = DAG.getNode(ISD::BUILD_VECTOR, dl,
618 SDValue Ex = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl,
619 RegSclVT, Value, DAG.getConstant(Idx, TLI.getVectorIdxTy()));
622 SDValue Store = DAG.getTruncStore(Chain, dl, Ex, BasePTR,
626 BasePTR = DAG.getNode(ISD::ADD, dl, BasePTR.getValueType(), BasePTR,
627 DAG.getConstant(Stride, BasePTR.getValueType()));
631 SDValue TF = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Stores);
659 return DAG.UnrollVectorOp(Op.getNode());
688 return DAG.UnrollVectorOp(Op.getNode());
696 Mask = DAG.getSelect(DL, BitTy, Mask,
697 DAG.getConstant(APInt::getAllOnesValue(BitTy.getSizeInBits()), BitTy),
698 DAG.getConstant(0, BitTy));
702 Mask = DAG.getNode(ISD::BUILD_VECTOR, DL, MaskTy, Ops);
707 Op1 = DAG.getNode(ISD::BITCAST, DL, MaskTy, Op1);
708 Op2 = DAG.getNode(ISD::BITCAST, DL, MaskTy, Op2);
710 SDValue AllOnes = DAG.getConstant(
712 SDValue NotMask = DAG.getNode(ISD::XOR, DL, MaskTy, Mask, AllOnes);
714 Op1 = DAG.getNode(ISD::AND, DL, MaskTy, Op1, Mask);
715 Op2 = DAG.getNode(ISD::AND, DL, MaskTy, Op2, NotMask);
716 SDValue Val = DAG.getNode(ISD::OR, DL, MaskTy, Op1, Op2);
717 return DAG.getNode(ISD::BITCAST, DL, Op.getValueType(), Val);
726 return DAG.UnrollVectorOp(Op.getNode());
733 SDValue ShiftSz = DAG.getConstant(BW - OrigBW, VT);
736 Op = DAG.getNode(ISD::SHL, DL, VT, Op, ShiftSz);
737 return DAG.getNode(ISD::SRA, DL, VT, Op, ShiftSz);
760 return DAG.getNode(
762 DAG.getVectorShuffle(SrcVT, DL, Src, DAG.getUNDEF(SrcVT), ShuffleMask));
773 Op = DAG.getAnyExtendVectorInReg(Src, DL, VT);
780 SDValue ShiftAmount = DAG.getConstant(EltWidth - SrcEltWidth, VT);
781 return DAG.getNode(ISD::SRA, DL, VT,
782 DAG.getNode(ISD::SHL, DL, VT, Op, ShiftAmount),
799 SDValue ScalarZero = DAG.getTargetConstant(0, SrcScalarVT);
801 SDValue Zero = DAG.getNode(ISD::BUILD_VECTOR, DL, SrcVT, BuildVectorOperands);
815 return DAG.getNode(ISD::BITCAST, DL, VT,
816 DAG.getVectorShuffle(SrcVT, DL, Zero, Src, ShuffleMask));
829 EVT ByteVT = EVT::getVectorVT(*DAG.getContext(), MVT::i8, ShuffleMask.size());
833 return DAG.UnrollVectorOp(Op.getNode());
836 Op = DAG.getNode(ISD::BITCAST, DL, ByteVT, Op.getOperand(0));
837 Op = DAG.getVectorShuffle(ByteVT, DL, Op, DAG.getUNDEF(ByteVT),
839 return DAG.getNode(ISD::BITCAST, DL, VT, Op);
865 return DAG.UnrollVectorOp(Op.getNode());
871 return DAG.UnrollVectorOp(Op.getNode());
876 Op1 = DAG.getNode(ISD::BITCAST, DL, VT, Op1);
877 Op2 = DAG.getNode(ISD::BITCAST, DL, VT, Op2);
879 SDValue AllOnes = DAG.getConstant(
881 SDValue NotMask = DAG.getNode(ISD::XOR, DL, VT, Mask, AllOnes);
883 Op1 = DAG
884 Op2 = DAG.getNode(ISD::AND, DL, VT, Op2, NotMask);
885 SDValue Val = DAG.getNode(ISD::OR, DL, VT, Op1, Op2);
886 return DAG.getNode(ISD::BITCAST, DL, Op.getValueType(), Val);
896 return DAG.UnrollVectorOp(Op.getNode());
903 SDValue HalfWord = DAG.getConstant(BW/2, VT);
909 SDValue HalfWordMask = DAG.getConstant(HWMask, VT);
912 SDValue TWOHW = DAG.getConstantFP((1<<(BW/2)), Op.getValueType());
915 SDValue HI = DAG.getNode(ISD::SRL, DL, VT, Op.getOperand(0), HalfWord);
916 SDValue LO = DAG.getNode(ISD::AND, DL, VT, Op.getOperand(0), HalfWordMask);
920 SDValue fHI = DAG.getNode(ISD::SINT_TO_FP, DL, Op.getValueType(), HI);
921 fHI = DAG.getNode(ISD::FMUL, DL, Op.getValueType(), fHI, TWOHW);
922 SDValue fLO = DAG.getNode(ISD::SINT_TO_FP, DL, Op.getValueType(), LO);
925 return DAG.getNode(ISD::FADD, DL, Op.getValueType(), fHI, fLO);
931 SDValue Zero = DAG.getConstantFP(-0.0, Op.getValueType());
932 return DAG.getNode(ISD::FSUB, SDLoc(Op), Op.getValueType(),
935 return DAG.UnrollVectorOp(Op.getNode());
947 SDValue LHSElem = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, TmpEltVT, LHS,
948 DAG.getConstant(i, TLI.getVectorIdxTy()));
949 SDValue RHSElem = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, TmpEltVT, RHS,
950 DAG.getConstant(i, TLI.getVectorIdxTy()));
951 Ops[i] = DAG.getNode(ISD::SETCC, dl,
952 TLI.getSetCCResultType(*DAG.getContext(), TmpEltVT),
954 Ops[i] = DAG.getSelect(dl, EltVT, Ops[i],
955 DAG.getConstant(APInt::getAllOnesValue
957 DAG.getConstant(0, EltVT));
959 return DAG.getNode(ISD::BUILD_VECTOR, dl, VT, Ops);