Lines Matching refs:VecV
432 // down to match the representation (bytes per type element) that VecV
435 // vector. This subvector will then be inserted into the Q2V of VecV.
586 HexagonTargetLowering::extractHvxElementReg(SDValue VecV, SDValue IdxV,
588 MVT ElemTy = ty(VecV).getVectorElementType();
596 {VecV, ByteIdx});
610 HexagonTargetLowering::extractHvxElementPred(SDValue VecV, SDValue IdxV,
617 SDValue ByteVec = DAG.getNode(HexagonISD::Q2V, dl, ByteTy, VecV);
619 unsigned Scale = HwLen / ty(VecV).getVectorNumElements();
629 HexagonTargetLowering::insertHvxElementReg(SDValue VecV, SDValue IdxV,
631 MVT ElemTy = ty(VecV).getVectorElementType();
637 auto InsertWord = [&DAG,&dl,this] (SDValue VecV, SDValue ValV,
639 MVT VecTy = ty(VecV);
643 SDValue RotV = DAG.getNode(HexagonISD::VROR, dl, VecTy, {VecV, MaskV});
653 return InsertWord(VecV, ValV, ByteIdx);
659 SDValue Ext = extractHvxElementReg(opCastElem(VecV, MVT::i32, DAG), WordIdx,
670 return InsertWord(VecV, Ins, ByteIdx);
674 HexagonTargetLowering::insertHvxElementPred(SDValue VecV, SDValue IdxV,
678 SDValue ByteVec = DAG.getNode(HexagonISD::Q2V, dl, ByteTy, VecV);
680 unsigned Scale = HwLen / ty(VecV).getVectorNumElements();
686 return DAG.getNode(HexagonISD::V2Q, dl, ty(VecV), InsV);
690 HexagonTargetLowering::extractHvxSubvectorReg(SDValue VecV, SDValue IdxV,
692 MVT VecTy = ty(VecV);
710 VecV = DAG.getTargetExtractSubreg(SubIdx, dl, VecTy, VecV);
712 return VecV;
720 SDValue WordVec = DAG.getBitcast(WordTy, VecV);
735 HexagonTargetLowering::extractHvxSubvectorPred(SDValue VecV, SDValue IdxV,
737 MVT VecTy = ty(VecV);
740 SDValue ByteVec = DAG.getNode(HexagonISD::Q2V, dl, ByteTy, VecV);
799 HexagonTargetLowering::insertHvxSubvectorReg(SDValue VecV, SDValue SubV,
801 MVT VecTy = ty(VecV);
809 // The two single vectors that VecV consists of, if it's a pair.
811 SDValue SingleV = VecV;
815 V0 = DAG.getTargetExtractSubreg(Hexagon::vsub_lo, dl, SingleTy, VecV);
816 V1 = DAG.getTargetExtractSubreg(Hexagon::vsub_hi, dl, SingleTy, VecV);
826 return DAG.getTargetInsertSubreg(SubIdx, dl, VecTy, VecV, SubV);
886 HexagonTargetLowering::insertHvxSubvectorPred(SDValue VecV, SDValue SubV,
888 MVT VecTy = ty(VecV);
891 // VecV is an HVX vector predicate. SubV may be either an HVX vector
903 SDValue ByteVec = DAG.getNode(HexagonISD::Q2V, dl, ByteTy, VecV);
914 // ByteVec is the target vector VecV rotated in such a way that the
931 HexagonTargetLowering::extendHvxVectorPred(SDValue VecV, const SDLoc &dl,
938 return DAG.getNode(HexagonISD::Q2V, dl, ResTy, VecV);
940 assert(ty(VecV).getVectorNumElements() == ResTy.getVectorNumElements());
944 return DAG.getSelect(dl, ResTy, VecV, True, False);
1066 SDValue VecV = Op.getOperand(0);
1067 MVT ElemTy = ty(VecV).getVectorElementType();
1071 return extractHvxElementPred(VecV, IdxV, dl, ty(Op), DAG);
1073 return extractHvxElementReg(VecV, IdxV, dl, ty(Op), DAG);
1080 SDValue VecV = Op.getOperand(0);
1083 MVT ElemTy = ty(VecV).getVectorElementType();
1085 return insertHvxElementPred(VecV, IdxV, ValV, dl, DAG);
1087 return insertHvxElementReg(VecV, IdxV, ValV, dl, DAG);
1113 SDValue VecV = Op.getOperand(0);
1118 MVT VecTy = ty(VecV);
1121 return insertHvxSubvectorPred(VecV, ValV, IdxV, dl, DAG);
1123 return insertHvxSubvectorReg(VecV, ValV, IdxV, dl, DAG);