Lines Matching refs:CDAG

23   VECustomDAG CDAG(DAG, Op);
25 CDAG.getConstant(Op.getValueType().getVectorNumElements(), MVT::i32);
28 SDValue LoA = CDAG.getUnpack(MVT::v256i1, A, PackElem::Lo, AVL);
29 SDValue HiA = CDAG.getUnpack(MVT::v256i1, A, PackElem::Hi, AVL);
30 SDValue LoB = CDAG.getUnpack(MVT::v256i1, B, PackElem::Lo, AVL);
31 SDValue HiB = CDAG.getUnpack(MVT::v256i1, B, PackElem::Hi, AVL);
33 auto LoRes = CDAG.getNode(Opc, MVT::v256i1, {LoA, LoB});
34 auto HiRes = CDAG.getNode(Opc, MVT::v256i1, {HiA, HiB});
35 return CDAG.getPack(MVT::v512i1, LoRes, HiRes, AVL);
48 VECustomDAG CDAG(DAG, Op);
53 return lowerVVP_LOAD_STORE(Op, CDAG);
56 return lowerVVP_GATHER_SCATTER(Op, CDAG);
78 AVL = CDAG.getConstant(OpVecVT.getVectorNumElements(), MVT::i32);
80 Mask = CDAG.getConstantMask(Packing, true);
84 return CDAG.getNode(VVPOpcode, LegalVecVT, {Op->getOperand(0), Mask, AVL});
86 return CDAG.getNode(VVPOpcode, LegalVecVT,
92 return CDAG.getLegalReductionOpVVP(VVPOpcode, Op.getValueType(), StartV,
105 return CDAG.getNode(VVPOpcode, LegalVecVT, {X, Y, Z, Mask, AVL});
111 return CDAG.getNode(VVPOpcode, LegalVecVT, {OnTrue, OnFalse, Mask, AVL});
118 return CDAG.getNode(VVPOpcode, LegalResVT, {LHS, RHS, Pred, Mask, AVL});
124 VECustomDAG &CDAG) const {
138 SDValue StrideV = getLoadStoreStride(Op, CDAG);
145 AVL = CDAG.getConstant(DataVT.getVectorNumElements(), MVT::i32);
149 Mask = CDAG.getConstantMask(Packing, true);
155 auto NewLoadV = CDAG.getNode(VEISD::VVP_LOAD, {LegalDataVT, MVT::Other},
162 SDValue DataV = CDAG.getNode(VEISD::VVP_SELECT, DataVT,
167 return CDAG.getMergeValues({DataV, NewLoadChainV});
172 if (getTypeAction(*CDAG.getDAG()->getContext(), Data.getValueType()) !=
178 return CDAG.getNode(VEISD::VVP_STORE, Op.getNode()->getVTList(),
183 VECustomDAG &CDAG) const {
200 SDValue PackStride = getLoadStoreStride(Op, CDAG);
210 auto SplitTM = CDAG.getTargetSplitMask(PackedMask, PackedAVL, Part);
225 CDAG.getUnpack(SplitDataVT, PackData, Part, SplitTM.AVL);
233 OpVec.push_back(CDAG.getSplitPtrOffset(PackPtr, PackStride, Part));
234 OpVec.push_back(CDAG.getSplitPtrStride(PackStride));
242 PartOps[(int)Part] = CDAG.getNode(VVPOC, MVT::Other, OpVec);
246 CDAG.getNode(VVPOC, {SplitDataVT, MVT::Other}, OpVec);
254 CDAG.getNode(ISD::TokenFactor, MVT::Other, {LowChain, HiChain});
263 SDValue PackedVals = CDAG.getPack(PackedVT, PartOps[(int)PackElem::Lo],
266 return CDAG.getMergeValues({PackedVals, FusedChains});
270 VECustomDAG &CDAG) const {
291 AVL = CDAG.getConstant(DataVT.getVectorNumElements(), MVT::i32);
295 Mask = CDAG.getConstantMask(Packing, true);
298 CDAG.getGatherScatterAddress(BasePtr, Scale, Index, Mask, AVL);
300 return CDAG.getNode(VEISD::VVP_SCATTER, MVT::Other,
304 SDValue NewLoadV = CDAG.getNode(VEISD::VVP_GATHER, {LegalDataVT, MVT::Other},
311 SDValue DataV = CDAG.getNode(VEISD::VVP_SELECT, LegalDataVT,
314 return CDAG.getMergeValues({DataV, NewLoadChainV});
318 VECustomDAG &CDAG) const {
324 return splitPackedLoadStore(Op, CDAG);
326 return legalizePackedAVL(Op, CDAG);
332 VECustomDAG CDAG(DAG, Op);
338 return legalizeInternalLoadStoreOp(Op, CDAG);
344 return splitVectorOp(Op, CDAG);
347 return legalizePackedAVL(Op, CDAG);
350 SDValue VETargetLowering::splitVectorOp(SDValue Op, VECustomDAG &CDAG) const {
368 auto SplitTM = CDAG.getTargetSplitMask(PackedMask, PackedAVL, Part);
385 CDAG.getUnpack(UnpackedOpVT, PackedOperand, Part, SplitTM.AVL);
394 CDAG.getNode(Op.getOpcode(), ResVT, OpVec, Op->getFlags());
398 return CDAG.getPack(Op.getValueType(), PartOps[(int)PackElem::Lo],
403 VECustomDAG &CDAG) const {
422 LegalAVL = CDAG.getConstant((ConstAVL->getZExtValue() + 1) / 2, MVT::i32);
424 auto ConstOne = CDAG.getConstant(1, MVT::i32);
425 auto PlusOne = CDAG.getNode(ISD::ADD, MVT::i32, {AVL, ConstOne});
426 LegalAVL = CDAG.getNode(ISD::SRL, MVT::i32, {PlusOne, ConstOne});
430 SDValue AnnotatedLegalAVL = CDAG.annotateLegalAVL(LegalAVL);
447 CDAG.getNode(Op->getOpcode(), Op->getVTList(), FixedOperands, Flags);