Lines Matching refs:dag
36 SelectionDAG& DAG;
77 VectorLegalizer(SelectionDAG& dag) :
78 DAG(dag), TLI(dag.getTargetLoweringInfo()), Changed(false) {}
88 DAG.AssignTopologicalOrder();
89 for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
90 E = prior(DAG.allnodes_end()); I != llvm::next(E); ++I)
94 SDValue OldRoot = DAG.getRoot();
96 DAG.setRoot(LegalizedNodes[OldRoot]);
101 DAG.RemoveDeadNodes();
127 SDValue(DAG.UpdateNodeOperands(Op.getNode(), Ops.data(), Ops.size()), 0);
149 return LegalizeOp(TLI.LowerOperation(Result, DAG));
240 SDValue Tmp1 = TLI.LowerOperation(Op, DAG);
257 Result = DAG.UnrollVectorOp(Op.getNode());
286 Operands[j] = DAG.getNode(ISD::BITCAST, dl, NVT, Op.getOperand(j));
291 Op = DAG.getNode(Op.getOpcode(), dl, NVT, &Operands[0], Operands.size());
293 return DAG.getNode(ISD::BITCAST, dl, VT, Op);
311 SDValue ScalarLoad = DAG.getExtLoad(ExtType, dl,
318 BasePTR = DAG.getNode(ISD::ADD, dl, BasePTR.getValueType(), BasePTR,
319 DAG.getIntPtrConstant(Stride));
325 SDValue NewChain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other,
327 SDValue Value = DAG.getNode(ISD::BUILD_VECTOR, dl,
368 SDValue Ex = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl,
369 RegSclVT, Value, DAG.getIntPtrConstant(Idx));
372 SDValue Store = DAG.getTruncStore(Chain, dl, Ex, BasePTR,
376 BasePTR = DAG.getNode(ISD::ADD, dl, BasePTR.getValueType(), BasePTR,
377 DAG.getIntPtrConstant(Stride));
381 SDValue TF = DAG.getNode(ISD::TokenFactor, dl, MVT::Other,
404 return DAG.UnrollVectorOp(Op.getNode());
411 Op1 = DAG.getNode(ISD::BITCAST, DL, VT, Op1);
412 Op2 = DAG.getNode(ISD::BITCAST, DL, VT, Op2);
414 SDValue AllOnes = DAG.getConstant(
416 SDValue NotMask = DAG.getNode(ISD::XOR, DL, VT, Mask, AllOnes);
418 Op1 = DAG.getNode(ISD::AND, DL, VT, Op1, Mask);
419 Op2 = DAG.getNode(ISD::AND, DL, VT, Op2, NotMask);
420 SDValue Val = DAG.getNode(ISD::OR, DL, VT, Op1, Op2);
421 return DAG.getNode(ISD::BITCAST, DL, Op.getValueType(), Val);
431 return DAG.UnrollVectorOp(Op.getNode());
438 SDValue HalfWord = DAG.getConstant(BW/2, VT);
444 SDValue HalfWordMask = DAG.getConstant(HWMask, VT);
447 SDValue TWOHW = DAG.getConstantFP((1<<(BW/2)), Op.getValueType());
450 SDValue HI = DAG.getNode(ISD::SRL, DL, VT, Op.getOperand(0), HalfWord);
451 SDValue LO = DAG.getNode(ISD::AND, DL, VT, Op.getOperand(0), HalfWordMask);
455 SDValue fHI = DAG.getNode(ISD::SINT_TO_FP, DL, Op.getValueType(), HI);
456 DAG.getNode(ISD::FMUL, DL, Op.getValueType(), fHI, TWOHW);
457 SDValue fLO = DAG.getNode(ISD::SINT_TO_FP, DL, Op.getValueType(), LO);
460 return DAG.getNode(ISD::FADD, DL, Op.getValueType(), fHI, fLO);
466 SDValue Zero = DAG.getConstantFP(-0.0, Op.getValueType());
467 return DAG.getNode(ISD::FSUB, Op.getDebugLoc(), Op.getValueType(),
470 return DAG.UnrollVectorOp(Op.getNode());
482 SDValue LHSElem = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, TmpEltVT, LHS,
483 DAG.getIntPtrConstant(i));
484 SDValue RHSElem = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, TmpEltVT, RHS,
485 DAG.getIntPtrConstant(i));
486 Ops[i] = DAG.getNode(ISD::SETCC, dl, TLI.getSetCCResultType(TmpEltVT),
488 Ops[i] = DAG.getNode(ISD::SELECT, dl, EltVT, Ops[i],
489 DAG.getConstant(APInt::getAllOnesValue
491 DAG.getConstant(0, EltVT));
493 return DAG.getNode(ISD::BUILD_VECTOR, dl, VT, &Ops[0], NumElems);