Lines Matching defs:Stride

43   // Cache of the BasePtr and Stride determined from this GEP. When a GEP is
71 bool matchStridedRecurrence(Value *Index, Loop *L, Value *&Stride,
115 Value *Stride = ConstantInt::get(StartVal->getType(), StrideVal);
117 return std::make_pair(StartVal, Stride);
156 Value *Stride;
157 std::tie(Start, Stride) = matchStridedStart(BO->getOperand(OtherIndex),
178 Stride = Builder.CreateMul(Stride, Splat);
182 Stride = Builder.CreateShl(Stride, Splat);
186 return std::make_pair(Start, Stride);
191 // We also update the Stride as we unwind. Our goal is to move all of the
194 Value *&Stride,
219 std::tie(Start, Stride) = matchStridedStart(Start, Builder);
222 assert(Stride != nullptr);
283 if (!matchStridedRecurrence(Index, L, Stride, BasePtr, Inc, Builder))
310 Stride = Builder.CreateMul(Stride, SplatOp, "stride");
315 Stride = Builder.CreateShl(Stride, SplatOp, "stride");
368 auto [BaseBase, Stride] = determineBaseAndStride(BaseInst, Builder);
375 return {OffsetBase, Stride};
432 auto [Start, Stride] = matchStridedStart(VecIndex, Builder);
434 assert(Stride);
445 assert(Stride->getType() == IntPtrTy && "Unexpected type");
449 Stride = Builder.CreateMul(Stride, ConstantInt::get(IntPtrTy, TypeScale));
451 auto P = std::make_pair(BasePtr, Stride);
463 if (!matchStridedRecurrence(VecIndex, L, Stride, BasePhi, Inc, Builder))
485 assert(Stride->getType() == IntPtrTy && "Unexpected type");
489 Stride = Builder.CreateMul(Stride, ConstantInt::get(IntPtrTy, TypeScale));
491 auto P = std::make_pair(BasePtr, Stride);
553 Value *BasePtr, *Stride;
554 std::tie(BasePtr, Stride) = determineBaseAndStride(PtrI, Builder);
557 assert(Stride != nullptr);
570 {DataType, BasePtr->getType(), Stride->getType()},
571 {BasePtr, Stride, Mask, EVL});
580 {DataType, BasePtr->getType(), Stride->getType()},
581 {StoreVal, BasePtr, Stride, Mask, EVL});