Lines Matching refs:Offsets
89 Value *decomposePtr(Value *Ptr, Value *&Offsets, int &Scale,
95 Value *decomposeGEP(Value *&Offsets, FixedVectorType *Ty,
123 Instruction *tryCreateMaskedScatterOffset(IntrinsicInst *I, Value *Offsets,
148 Value *foldGEP(GetElementPtrInst *GEP, Value *&Offsets, unsigned &Scale,
151 bool optimiseOffsets(Value *Offsets, BasicBlock *BB, LoopInfo *LI);
185 static bool checkOffsetSize(Value *Offsets, unsigned TargetElemCount) { in checkOffsetSize() argument
197 unsigned OffsetElemSize = cast<FixedVectorType>(Offsets->getType()) in checkOffsetSize()
201 Constant *ConstOff = dyn_cast<Constant>(Offsets); in checkOffsetSize()
227 Value *MVEGatherScatterLowering::decomposePtr(Value *Ptr, Value *&Offsets, in decomposePtr() argument
232 if (Value *V = decomposeGEP(Offsets, Ty, GEP, Builder)) { in decomposePtr()
248 Offsets = Builder.CreatePtrToInt( in decomposePtr()
254 Value *MVEGatherScatterLowering::decomposeGEP(Value *&Offsets, in decomposeGEP() argument
266 Offsets = GEP->getOperand(1); in decomposeGEP()
268 !isa<FixedVectorType>(Offsets->getType())) in decomposeGEP()
276 Offsets = GEP->getOperand(1); in decomposeGEP()
278 cast<FixedVectorType>(Offsets->getType())->getNumElements(); in decomposeGEP()
282 ZExtInst *ZextOffs = dyn_cast<ZExtInst>(Offsets); in decomposeGEP()
284 Offsets = ZextOffs->getOperand(0); in decomposeGEP()
285 FixedVectorType *OffsetType = cast<FixedVectorType>(Offsets->getType()); in decomposeGEP()
292 if (!checkOffsetSize(Offsets, OffsetsElemCount)) in decomposeGEP()
297 if (Ty != Offsets->getType()) { in decomposeGEP()
300 Offsets = Builder.CreateTrunc(Offsets, Ty); in decomposeGEP()
302 Offsets = Builder.CreateZExt(Offsets, VectorType::getInteger(Ty)); in decomposeGEP()
548 Value *Offsets; in tryCreateMaskedGatherOffset() local
551 Ptr, Offsets, Scale, cast<FixedVectorType>(ResultTy), MemoryTy, Builder); in tryCreateMaskedGatherOffset()
561 {ResultTy, BasePtr->getType(), Offsets->getType(), Mask->getType()}, in tryCreateMaskedGatherOffset()
562 {BasePtr, Offsets, Builder.getInt32(MemoryTy->getScalarSizeInBits()), in tryCreateMaskedGatherOffset()
567 {ResultTy, BasePtr->getType(), Offsets->getType()}, in tryCreateMaskedGatherOffset()
568 {BasePtr, Offsets, Builder.getInt32(MemoryTy->getScalarSizeInBits()), in tryCreateMaskedGatherOffset()
701 Value *Offsets; in tryCreateMaskedScatterOffset() local
704 Ptr, Offsets, Scale, cast<FixedVectorType>(InputTy), MemoryTy, Builder); in tryCreateMaskedScatterOffset()
713 {BasePtr->getType(), Offsets->getType(), Input->getType(), in tryCreateMaskedScatterOffset()
715 {BasePtr, Offsets, Input, in tryCreateMaskedScatterOffset()
721 {BasePtr->getType(), Offsets->getType(), Input->getType()}, in tryCreateMaskedScatterOffset()
722 {BasePtr, Offsets, Input, in tryCreateMaskedScatterOffset()
745 Value *Offsets; in tryCreateIncrementingGatScat() local
746 Value *BasePtr = decomposeGEP(Offsets, Ty, GEP, Builder); in tryCreateIncrementingGatScat()
766 if (auto *Load = tryCreateIncrementingWBGatScat(I, BasePtr, Offsets, in tryCreateIncrementingGatScat()
774 std::pair<Value *, int64_t> Add = getVarAndConst(Offsets, TypeScale); in tryCreateIncrementingGatScat()
802 IntrinsicInst *I, Value *BasePtr, Value *Offsets, unsigned TypeScale, in tryCreateIncrementingWBGatScat() argument
809 PHINode *Phi = dyn_cast<PHINode>(Offsets); in tryCreateIncrementingWBGatScat()
821 Offsets = Phi->getIncomingValue(IncrementIndex); in tryCreateIncrementingWBGatScat()
823 std::pair<Value *, int64_t> Add = getVarAndConst(Offsets, TypeScale); in tryCreateIncrementingWBGatScat()
877 Instruction *AddInst = cast<Instruction>(Offsets); in tryCreateIncrementingWBGatScat()
966 bool MVEGatherScatterLowering::optimiseOffsets(Value *Offsets, BasicBlock *BB, in optimiseOffsets() argument
969 << *Offsets << "\n"); in optimiseOffsets()
972 if (!isa<Instruction>(Offsets)) in optimiseOffsets()
974 Instruction *Offs = cast<Instruction>(Offsets); in optimiseOffsets()
1183 Value *&Offsets, unsigned &Scale, in foldGEP() argument
1186 Offsets = GEP->getOperand(1); in foldGEP()
1190 if (GEP->getNumIndices() != 1 || !isa<Constant>(Offsets)) in foldGEP()
1194 Value *BaseBasePtr = foldGEP(BaseGEP, Offsets, Scale, Builder); in foldGEP()
1197 Offsets = CheckAndCreateOffsetAdd( in foldGEP()
1198 Offsets, Scale, GEP->getOperand(1), in foldGEP()
1200 if (Offsets == nullptr) in foldGEP()
1218 Value *Offsets; in optimiseAddress() local
1220 Value *Base = foldGEP(GEP, Offsets, Scale, Builder); in optimiseAddress()
1225 if (Offsets && Base && Base != GEP) { in optimiseAddress()
1231 Builder.getInt8Ty(), Builder.CreateBitCast(Base, BaseTy), Offsets, in optimiseAddress()