Lines Matching defs:VPIntrin
8385 static unsigned getISDForVPIntrinsic(const VPIntrinsic &VPIntrin) {
8387 switch (VPIntrin.getIntrinsicID()) {
8389 bool IsZeroUndef = cast<ConstantInt>(VPIntrin.getArgOperand(1))->isOne();
8394 bool IsZeroUndef = cast<ConstantInt>(VPIntrin.getArgOperand(1))->isOne();
8399 bool IsZeroPoison = cast<ConstantInt>(VPIntrin.getArgOperand(1))->isOne();
8416 if (VPIntrin.getFastMathFlags().allowReassoc())
8425 const VPIntrinsic &VPIntrin, EVT VT,
8428 Value *PtrOperand = VPIntrin.getArgOperand(0);
8429 MaybeAlign Alignment = VPIntrin.getPointerAlignment();
8430 AAMDNodes AAInfo = VPIntrin.getAAMetadata();
8431 const MDNode *Ranges = getRangeMetadata(VPIntrin);
8447 setValue(&VPIntrin, LD);
8451 const VPIntrinsic &VPIntrin, EVT VT,
8455 Value *PtrOperand = VPIntrin.getArgOperand(0);
8456 MaybeAlign Alignment = VPIntrin.getPointerAlignment();
8457 AAMDNodes AAInfo = VPIntrin.getAAMetadata();
8458 const MDNode *Ranges = getRangeMetadata(VPIntrin);
8470 this, VPIntrin.getParent(),
8489 setValue(&VPIntrin, LD);
8493 const VPIntrinsic &VPIntrin, const SmallVectorImpl<SDValue> &OpValues) {
8495 Value *PtrOperand = VPIntrin.getArgOperand(1);
8497 MaybeAlign Alignment = VPIntrin.getPointerAlignment();
8498 AAMDNodes AAInfo = VPIntrin.getAAMetadata();
8511 setValue(&VPIntrin, ST);
8515 const VPIntrinsic &VPIntrin, const SmallVectorImpl<SDValue> &OpValues) {
8518 Value *PtrOperand = VPIntrin.getArgOperand(1);
8520 MaybeAlign Alignment = VPIntrin.getPointerAlignment();
8521 AAMDNodes AAInfo = VPIntrin.getAAMetadata();
8533 this, VPIntrin.getParent(),
8553 setValue(&VPIntrin, ST);
8557 const VPIntrinsic &VPIntrin, EVT VT,
8560 Value *PtrOperand = VPIntrin.getArgOperand(0);
8561 MaybeAlign Alignment = VPIntrin.getPointerAlignment();
8564 AAMDNodes AAInfo = VPIntrin.getAAMetadata();
8565 const MDNode *Ranges = getRangeMetadata(VPIntrin);
8580 setValue(&VPIntrin, LD);
8584 const VPIntrinsic &VPIntrin, const SmallVectorImpl<SDValue> &OpValues) {
8586 Value *PtrOperand = VPIntrin.getArgOperand(1);
8588 MaybeAlign Alignment = VPIntrin.getPointerAlignment();
8591 AAMDNodes AAInfo = VPIntrin.getAAMetadata();
8604 setValue(&VPIntrin, ST);
8607 void SelectionDAGBuilder::visitVPCmp(const VPCmpIntrinsic &VPIntrin) {
8612 CmpInst::Predicate CondCode = VPIntrin.getPredicate();
8613 bool IsFP = VPIntrin.getOperand(0)->getType()->isFPOrFPVectorTy();
8625 SDValue Op1 = getValue(VPIntrin.getOperand(0));
8626 SDValue Op2 = getValue(VPIntrin.getOperand(1));
8628 SDValue MaskOp = getValue(VPIntrin.getOperand(3));
8629 SDValue EVL = getValue(VPIntrin.getOperand(4));
8636 VPIntrin.getType());
8637 setValue(&VPIntrin,
8642 const VPIntrinsic &VPIntrin) {
8644 unsigned Opcode = getISDForVPIntrinsic(VPIntrin);
8646 auto IID = VPIntrin.getIntrinsicID();
8648 if (const auto *CmpI = dyn_cast<VPCmpIntrinsic>(&VPIntrin))
8653 ComputeValueVTs(TLI, DAG.getDataLayout(), VPIntrin.getType(), ValueVTs);
8664 for (unsigned I = 0; I < VPIntrin.arg_size(); ++I) {
8665 auto Op = getValue(VPIntrin.getArgOperand(I));
8674 if (auto *FPMO = dyn_cast<FPMathOperator>(&VPIntrin))
8677 setValue(&VPIntrin, Result);
8681 visitVPLoad(VPIntrin, ValueVTs[0], OpValues);
8684 visitVPGather(VPIntrin, ValueVTs[0], OpValues);
8687 visitVPStridedLoad(VPIntrin, ValueVTs[0], OpValues);
8690 visitVPStore(VPIntrin, OpValues);
8693 visitVPScatter(VPIntrin, OpValues);
8696 visitVPStridedStore(VPIntrin, OpValues);
8701 if (auto *FPMO = dyn_cast<FPMathOperator>(&VPIntrin))
8705 setValue(&VPIntrin, DAG.getNode(ISD::VP_FMA, DL, VTs, OpValues, SDFlags));
8713 setValue(&VPIntrin, Add);
8719 EVT DestVT = TLI.getValueType(DLayout, VPIntrin.getType());
8724 setValue(&VPIntrin, V);
8729 EVT DestVT = TLI.getValueType(DAG.getDataLayout(), VPIntrin.getType());
8730 EVT PtrMemVT = TLI.getMemValueType(DAG.getDataLayout(), VPIntrin.getType());
8735 setValue(&VPIntrin, N);
8741 VPIntrin.getType());
8743 VPIntrin.getOperand(0)->getType());
8748 setValue(&VPIntrin, N);
8760 setValue(&VPIntrin, Result);