Lines Matching refs:Start
122 static std::pair<Value *, Value *> matchStridedStart(Value *Start, in matchStridedStart() argument
125 auto *StartC = dyn_cast<Constant>(Start); in matchStridedStart()
130 if (match(Start, m_Intrinsic<Intrinsic::experimental_stepvector>())) { in matchStridedStart()
131 auto *Ty = Start->getType()->getScalarType(); in matchStridedStart()
137 auto *BO = dyn_cast<BinaryOperator>(Start); in matchStridedStart()
159 std::tie(Start, Stride) = matchStridedStart(BO->getOperand(OtherIndex), in matchStridedStart()
161 if (!Start) in matchStridedStart()
176 Start = Builder.CreateAdd(Start, Splat); in matchStridedStart()
179 Start = Builder.CreateMul(Start, Splat); in matchStridedStart()
183 Start = Builder.CreateShl(Start, Splat); in matchStridedStart()
188 return std::make_pair(Start, Stride); in matchStridedStart()
207 Value *Step, *Start; in matchStridedRecurrence() local
208 if (!matchSimpleRecurrence(Phi, Inc, Start, Step) || in matchStridedRecurrence()
225 std::tie(Start, Stride) = matchStridedStart(Start, Builder); in matchStridedRecurrence()
226 if (!Start) in matchStridedRecurrence()
232 PHINode::Create(Start->getType(), 2, Phi->getName() + ".scalar", Phi->getIterator()); in matchStridedRecurrence()
235 BasePtr->addIncoming(Start, Phi->getIncomingBlock(1 - IncrementingBlock)); in matchStridedRecurrence()
296 Value *Start = BasePtr->getOperand(StartBlock); in matchStridedRecurrence() local
310 Start = Builder.CreateAdd(Start, SplatOp, "start"); in matchStridedRecurrence()
314 Start = Builder.CreateMul(Start, SplatOp, "start"); in matchStridedRecurrence()
320 Start = Builder.CreateShl(Start, SplatOp, "start"); in matchStridedRecurrence()
328 BasePtr->setIncomingValue(StartBlock, Start); in matchStridedRecurrence()
423 auto [Start, Stride] = matchStridedStart(VecIndex, Builder); in determineBaseAndStride()
424 if (Start) { in determineBaseAndStride()
429 Ops[*VecOperand] = Start; in determineBaseAndStride()