Lines Matching defs:SCEV
190 bool runOnLoopBlock(BasicBlock *BB, const SCEV *BECount,
196 bool processLoopStores(SmallVectorImpl<StoreInst *> &SL, const SCEV *BECount,
202 bool (LoopIdiomRecognize::*Processor)(MemInst *, const SCEV *),
203 const SCEV *BECount);
204 bool processLoopMemCpy(MemCpyInst *MCI, const SCEV *BECount);
205 bool processLoopMemSet(MemSetInst *MSI, const SCEV *BECount);
207 bool processLoopStridedStore(Value *DestPtr, const SCEV *StoreSizeSCEV,
211 const SCEVAddRecExpr *Ev, const SCEV *BECount,
213 bool processLoopStoreOfLoopLoad(StoreInst *SI, const SCEV *BECount);
215 const SCEV *StoreSize, MaybeAlign StoreAlign,
220 const SCEV *BECount);
317 const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop);
553 BasicBlock *BB, const SCEV *BECount,
589 const SCEV *BECount, ForMemset For) {
717 const SCEV *StoreSizeSCEV = SE->getConstant(IntIdxTy, StoreSize);
735 bool (LoopIdiomRecognize::*Processor)(MemInst *, const SCEV *),
736 const SCEV *BECount) {
758 const SCEV *BECount) {
827 const SCEV *BECount) {
849 const SCEV *PointerStrideSCEV = Ev->getOperand(1);
850 const SCEV *MemsetSizeSCEV = SE->getSCEV(MSI->getLength());
892 const SCEV *PositiveStrideSCEV =
902 const SCEV *FoldedPositiveStride =
904 const SCEV *FoldedMemsetSize =
907 LLVM_DEBUG(dbgs() << " Try to fold SCEV based on loop guard\n"
913 LLVM_DEBUG(dbgs() << " SCEV don't match, abort\n");
937 const SCEV *BECount, const SCEV *StoreSizeSCEV,
974 static const SCEV *getStartForNegStride(const SCEV *Start, const SCEV *BECount,
975 Type *IntPtr, const SCEV *StoreSizeSCEV,
977 const SCEV *Index = SE->getTruncateOrZeroExtend(BECount, IntPtr);
982 SCEV::FlagNUW);
988 /// Compute the number of bytes as a SCEV from the backedge taken count.
990 /// This also maps the SCEV into the provided type and tries to handle the
992 static const SCEV *getNumBytes(const SCEV *BECount, Type *IntPtr,
993 const SCEV *StoreSizeSCEV, Loop *CurLoop,
995 const SCEV *TripCountSCEV =
999 SCEV::FlagNUW);
1005 Value *DestPtr, const SCEV *StoreSizeSCEV, MaybeAlign StoreAlignment,
1008 const SCEV *BECount, bool IsNegStride, bool IsLoopMemset) {
1019 // The trip count of the loop and the base pointer of the addrec SCEV is
1032 const SCEV *Start = Ev->getStart();
1037 // TODO: ideally we should still be able to generate memset if SCEV expander
1068 const SCEV *NumBytesS =
1071 // TODO: ideally we should still be able to generate memset if SCEV expander
1173 const SCEV *BECount) {
1190 const SCEV *StoreSizeSCEV = SE->getConstant(StorePtr->getType(), StoreSize);
1243 Value *DestPtr, Value *SourcePtr, const SCEV *StoreSizeSCEV,
1246 const SCEVAddRecExpr *LoadEv, const SCEV *BECount) {
1254 // The trip count of the loop and the base pointer of the addrec SCEV is
1264 const SCEV *StrStart = StoreEv->getStart();
1331 const SCEV *LdStart = LoadEv->getStart();
1394 const SCEV *NumBytesS =
2267 // step 4: Forget the "non-computable" trip-count SCEV associated with the
2374 // step 5: Forget the "non-computable" trip-count SCEV associated with the
2738 // Step 5: Forget the "non-computable" trip-count SCEV associated with the
2783 const SCEV *&ExtraOffsetExpr,
2954 const SCEV *ExtraOffsetExpr;
3074 // Step 4: Forget the "non-computable" trip-count SCEV associated with the