Lines Matching refs:Offsets
88 Value *decomposePtr(Value *Ptr, Value *&Offsets, int &Scale,
94 Value *decomposeGEP(Value *&Offsets, FixedVectorType *Ty,
122 Instruction *tryCreateMaskedScatterOffset(IntrinsicInst *I, Value *Offsets,
147 Value *foldGEP(GetElementPtrInst *GEP, Value *&Offsets, IRBuilder<> &Builder);
149 bool optimiseOffsets(Value *Offsets, BasicBlock *BB, LoopInfo *LI);
183 static bool checkOffsetSize(Value *Offsets, unsigned TargetElemCount) { in checkOffsetSize() argument
195 unsigned OffsetElemSize = cast<FixedVectorType>(Offsets->getType()) in checkOffsetSize()
199 Constant *ConstOff = dyn_cast<Constant>(Offsets); in checkOffsetSize()
225 Value *MVEGatherScatterLowering::decomposePtr(Value *Ptr, Value *&Offsets, in decomposePtr() argument
230 if (Value *V = decomposeGEP(Offsets, Ty, GEP, Builder)) { in decomposePtr()
246 Offsets = Builder.CreatePtrToInt( in decomposePtr()
252 Value *MVEGatherScatterLowering::decomposeGEP(Value *&Offsets, in decomposeGEP() argument
264 Offsets = GEP->getOperand(1); in decomposeGEP()
266 !isa<FixedVectorType>(Offsets->getType())) in decomposeGEP()
274 Offsets = GEP->getOperand(1); in decomposeGEP()
276 cast<FixedVectorType>(Offsets->getType())->getNumElements(); in decomposeGEP()
280 ZExtInst *ZextOffs = dyn_cast<ZExtInst>(Offsets); in decomposeGEP()
282 Offsets = ZextOffs->getOperand(0); in decomposeGEP()
283 FixedVectorType *OffsetType = cast<FixedVectorType>(Offsets->getType()); in decomposeGEP()
290 if (!checkOffsetSize(Offsets, OffsetsElemCount)) in decomposeGEP()
295 if (Ty != Offsets->getType()) { in decomposeGEP()
298 Offsets = Builder.CreateTrunc(Offsets, Ty); in decomposeGEP()
300 Offsets = Builder.CreateZExt(Offsets, VectorType::getInteger(Ty)); in decomposeGEP()
533 Value *Offsets; in tryCreateMaskedGatherOffset() local
536 Ptr, Offsets, Scale, cast<FixedVectorType>(ResultTy), MemoryTy, Builder); in tryCreateMaskedGatherOffset()
546 {ResultTy, BasePtr->getType(), Offsets->getType(), Mask->getType()}, in tryCreateMaskedGatherOffset()
547 {BasePtr, Offsets, Builder.getInt32(MemoryTy->getScalarSizeInBits()), in tryCreateMaskedGatherOffset()
552 {ResultTy, BasePtr->getType(), Offsets->getType()}, in tryCreateMaskedGatherOffset()
553 {BasePtr, Offsets, Builder.getInt32(MemoryTy->getScalarSizeInBits()), in tryCreateMaskedGatherOffset()
686 Value *Offsets; in tryCreateMaskedScatterOffset() local
689 Ptr, Offsets, Scale, cast<FixedVectorType>(InputTy), MemoryTy, Builder); in tryCreateMaskedScatterOffset()
698 {BasePtr->getType(), Offsets->getType(), Input->getType(), in tryCreateMaskedScatterOffset()
700 {BasePtr, Offsets, Input, in tryCreateMaskedScatterOffset()
706 {BasePtr->getType(), Offsets->getType(), Input->getType()}, in tryCreateMaskedScatterOffset()
707 {BasePtr, Offsets, Input, in tryCreateMaskedScatterOffset()
730 Value *Offsets; in tryCreateIncrementingGatScat() local
731 Value *BasePtr = decomposeGEP(Offsets, Ty, GEP, Builder); in tryCreateIncrementingGatScat()
752 if (auto *Load = tryCreateIncrementingWBGatScat(I, BasePtr, Offsets, in tryCreateIncrementingGatScat()
760 std::pair<Value *, int64_t> Add = getVarAndConst(Offsets, TypeScale); in tryCreateIncrementingGatScat()
788 IntrinsicInst *I, Value *BasePtr, Value *Offsets, unsigned TypeScale, in tryCreateIncrementingWBGatScat() argument
795 PHINode *Phi = dyn_cast<PHINode>(Offsets); in tryCreateIncrementingWBGatScat()
807 Offsets = Phi->getIncomingValue(IncrementIndex); in tryCreateIncrementingWBGatScat()
809 std::pair<Value *, int64_t> Add = getVarAndConst(Offsets, TypeScale); in tryCreateIncrementingWBGatScat()
863 Instruction *AddInst = cast<Instruction>(Offsets); in tryCreateIncrementingWBGatScat()
949 bool MVEGatherScatterLowering::optimiseOffsets(Value *Offsets, BasicBlock *BB, in optimiseOffsets() argument
952 << *Offsets << "\n"); in optimiseOffsets()
955 if (!isa<Instruction>(Offsets)) in optimiseOffsets()
957 Instruction *Offs = cast<Instruction>(Offsets); in optimiseOffsets()
1156 Value *&Offsets, in foldGEP() argument
1159 Offsets = GEP->getOperand(1); in foldGEP()
1162 if (!isa<Constant>(Offsets)) in foldGEP()
1167 Value *BaseBasePtr = foldGEP(BaseGEP, Offsets, Builder); in foldGEP()
1170 Offsets = in foldGEP()
1171 CheckAndCreateOffsetAdd(Offsets, GEP->getOperand(1), GEP, Builder); in foldGEP()
1172 if (Offsets == nullptr) in foldGEP()
1190 Value *Offsets; in optimiseAddress() local
1191 Value *Base = foldGEP(GEP, Offsets, Builder); in optimiseAddress()
1196 if (Offsets && Base && Base != GEP) { in optimiseAddress()
1198 GEP->getSourceElementType(), Base, Offsets, "gep.merged", GEP); in optimiseAddress()