Lines Matching refs:HVC

133   AlignVectors(HexagonVectorCombine &HVC_) : HVC(HVC_) {}  in AlignVectors()
148 AddrInfo(const HexagonVectorCombine &HVC, Instruction *I, Value *A, Type *T, in AddrInfo()
151 NeedAlign(HVC.getTypeAlignment(ValTy)) {} in AddrInfo()
252 HexagonVectorCombine &HVC; member in __anon2c83e0c90111::AlignVectors
380 return AddrInfo(HVC, L, L->getPointerOperand(), L->getType(), in getAddrInfo()
383 return AddrInfo(HVC, S, S->getPointerOperand(), in getAddrInfo()
389 return AddrInfo(HVC, II, II->getArgOperand(0), II->getType(), in getAddrInfo()
392 return AddrInfo(HVC, II, II->getArgOperand(1), in getAddrInfo()
401 return HVC.HST.isTypeForHVX(AI.ValTy); in isHvx()
428 return HVC.getFullValue(HVC.getBoolTy(ElemCount)); in getMask()
430 return HVC.getFullValue(HVC.getBoolTy()); in getMask()
449 int ElemSize = HVC.getAllocSizeOf(ElemTy); in createAdjustedPointer()
452 Builder.CreateGEP(ElemTy, Ptr, HVC.getConstInt(Adjust / ElemSize)); in createAdjustedPointer()
457 PointerType *CharPtrTy = Type::getInt8PtrTy(HVC.F.getContext()); in createAdjustedPointer()
459 Value *Tmp1 = Builder.CreateGEP(Type::getInt8Ty(HVC.F.getContext()), Tmp0, in createAdjustedPointer()
460 HVC.getConstInt(Adjust)); in createAdjustedPointer()
467 Value *AsInt = Builder.CreatePtrToInt(Ptr, HVC.getIntTy()); in createAlignedPointer()
468 Value *Mask = HVC.getConstInt(-Alignment); in createAlignedPointer()
476 assert(!HVC.isUndef(Mask)); // Should this be allowed? in createAlignedLoad()
477 if (HVC.isZero(Mask)) in createAlignedLoad()
487 if (HVC.isZero(Mask) || HVC.isUndef(Val) || HVC.isUndef(Mask)) in createAlignedStore()
501 if (auto D = HVC.calculatePointerDifference(AI.Addr, W.Addr)) in createAddressGroups()
532 traverseBlock(HVC.DT.getRootNode(), traverseBlock); in createAddressGroups()
542 G.second, [&](auto &I) { return HVC.HST.isTypeForHVX(I.ValTy); }); in createAddressGroups()
586 return HVC.isSafeToMoveBeforeInBB(*I, Base->getIterator()); in createLoadGroups()
637 if (!HVC.isSafeToMoveBeforeInBB(*Info.Inst, Base->getIterator(), Move.Main)) in createStoreGroups()
753 AlignVal = HVC.getConstInt(Diff); in realignGroup()
766 AlignVal = Builder.CreatePtrToInt(WithMinOffset.Addr, HVC.getIntTy()); in realignGroup()
771 VSpan.Blocks.emplace_back(AI.Inst, HVC.getSizeOf(AI.ValTy), in realignGroup()
778 int ScLen = Move.IsHvx ? HVC.HST.getVectorLength() in realignGroup()
783 Type *SecTy = HVC.getByteTy(ScLen); in realignGroup()
785 bool DoAlign = !HVC.isZero(AlignVal); in realignGroup()
789 auto *True = HVC.getFullValue(HVC.getBoolTy(ScLen)); in realignGroup()
807 ASpan[j].Seg.Val = HVC.vralignb(Builder, ASpan[j].Seg.Val, in realignGroup()
814 Value *Accum = UndefValue::get(HVC.getByteTy(B.Seg.Size)); in realignGroup()
816 Value *Pay = HVC.vbytes(Builder, getPayload(S.Seg.Val)); in realignGroup()
818 HVC.insertb(Builder, Accum, Pay, S.Seg.Start, S.Seg.Size, S.Pos); in realignGroup()
853 Value *AccumM = HVC.getNullValue(SecTy); in realignGroup()
856 Value *Mask = HVC.rescale(Builder, MakeVec(Builder, getMask(S.Seg.Val)), in realignGroup()
857 Pay->getType(), HVC.getByteTy()); in realignGroup()
858 AccumM = HVC.insertb(Builder, AccumM, HVC.vbytes(Builder, Mask), in realignGroup()
860 AccumV = HVC.insertb(Builder, AccumV, HVC.vbytes(Builder, Pay), in realignGroup()
870 ASpanV[j - 1].Seg.Val = HVC.vlalignb(Builder, ASpanV[j - 1].Seg.Val, in realignGroup()
872 ASpanM[j - 1].Seg.Val = HVC.vlalignb(Builder, ASpanM[j - 1].Seg.Val, in realignGroup()
881 if (!HVC.isUndef(Val) && !HVC.isZero(Mask)) { in realignGroup()
883 HVC.vlsb(Builder, Mask)); in realignGroup()
1513 HexagonVectorCombine HVC(F, AA, AC, DT, TLI, TM); in runOnFunction() local
1514 return HVC.run(); in runOnFunction()