[PATCH] D99266: [SLP]Improve and simplify extendSchedulingRegion.
Alexey Bataev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 25 05:36:29 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rG568c8741170f: [SLP]Improve and simplify extendSchedulingRegion. (authored by ABataev).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D99266/new/
https://reviews.llvm.org/D99266
Files:
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/X86/crash_exceed_scheduling.ll
Index: llvm/test/Transforms/SLPVectorizer/X86/crash_exceed_scheduling.ll
===================================================================
--- llvm/test/Transforms/SLPVectorizer/X86/crash_exceed_scheduling.ll
+++ llvm/test/Transforms/SLPVectorizer/X86/crash_exceed_scheduling.ll
@@ -44,13 +44,9 @@
; CHECK: bb1:
; CHECK-NEXT: br label [[LABEL:%.*]]
; CHECK: bb2:
-; CHECK-NEXT: [[TMP17:%.*]] = extractelement <2 x double> [[TMP16]], i32 0
-; CHECK-NEXT: [[TMP18:%.*]] = insertelement <2 x double> poison, double [[TMP17]], i32 0
-; CHECK-NEXT: [[TMP19:%.*]] = extractelement <2 x double> [[TMP16]], i32 1
-; CHECK-NEXT: [[TMP20:%.*]] = insertelement <2 x double> [[TMP18]], double [[TMP19]], i32 1
; CHECK-NEXT: br label [[LABEL]]
; CHECK: label:
-; CHECK-NEXT: [[TMP21:%.*]] = phi <2 x double> [ [[TMP12]], [[BB1]] ], [ [[TMP20]], [[BB2]] ]
+; CHECK-NEXT: [[TMP17:%.*]] = phi <2 x double> [ [[TMP12]], [[BB1]] ], [ [[TMP16]], [[BB2]] ]
; CHECK-NEXT: ret void
;
entry:
Index: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -5338,41 +5338,39 @@
BasicBlock::reverse_iterator UpperEnd = BB->rend();
BasicBlock::iterator DownIter = ScheduleEnd->getIterator();
BasicBlock::iterator LowerEnd = BB->end();
- while (true) {
+ while (UpIter != UpperEnd && DownIter != LowerEnd && &*UpIter != I &&
+ &*DownIter != I) {
if (++ScheduleRegionSize > ScheduleRegionSizeLimit) {
LLVM_DEBUG(dbgs() << "SLP: exceeded schedule region size limit\n");
return false;
}
- if (UpIter != UpperEnd) {
- if (&*UpIter == I) {
- initScheduleData(I, ScheduleStart, nullptr, FirstLoadStoreInRegion);
- ScheduleStart = I;
- if (isOneOf(S, I) != I)
- CheckSheduleForI(I);
- LLVM_DEBUG(dbgs() << "SLP: extend schedule region start to " << *I
- << "\n");
- return true;
- }
- ++UpIter;
- }
- if (DownIter != LowerEnd) {
- if (&*DownIter == I) {
- initScheduleData(ScheduleEnd, I->getNextNode(), LastLoadStoreInRegion,
- nullptr);
- ScheduleEnd = I->getNextNode();
- if (isOneOf(S, I) != I)
- CheckSheduleForI(I);
- assert(ScheduleEnd && "tried to vectorize a terminator?");
- LLVM_DEBUG(dbgs() << "SLP: extend schedule region end to " << *I
- << "\n");
- return true;
- }
- ++DownIter;
- }
- assert((UpIter != UpperEnd || DownIter != LowerEnd) &&
- "instruction not found in block");
+ ++UpIter;
+ ++DownIter;
+ }
+ if (DownIter == LowerEnd || (UpIter != UpperEnd && &*UpIter == I)) {
+ assert(I->getParent() == ScheduleStart->getParent() &&
+ "Instruction is in wrong basic block.");
+ initScheduleData(I, ScheduleStart, nullptr, FirstLoadStoreInRegion);
+ ScheduleStart = I;
+ if (isOneOf(S, I) != I)
+ CheckSheduleForI(I);
+ LLVM_DEBUG(dbgs() << "SLP: extend schedule region start to " << *I
+ << "\n");
+ return true;
}
+ assert((UpIter == UpperEnd || (DownIter != LowerEnd && &*DownIter == I)) &&
+ "Expected to reach top of the basic block or instruction down the "
+ "lower end.");
+ assert(I->getParent() == ScheduleEnd->getParent() &&
+ "Instruction is in wrong basic block.");
+ initScheduleData(ScheduleEnd, I->getNextNode(), LastLoadStoreInRegion,
+ nullptr);
+ ScheduleEnd = I->getNextNode();
+ if (isOneOf(S, I) != I)
+ CheckSheduleForI(I);
+ assert(ScheduleEnd && "tried to vectorize a terminator?");
+ LLVM_DEBUG(dbgs() << "SLP: extend schedule region end to " << *I << "\n");
return true;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D99266.333269.patch
Type: text/x-patch
Size: 3901 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210325/6fd1af26/attachment.bin>
More information about the llvm-commits
mailing list