[SLPVectorizer] Add an extra parameter to tryScheduleBundle function, NFCI.
llvm-svn: 308081
This commit is contained in:
@@ -857,7 +857,7 @@ private:
|
||||
/// Checks if a bundle of instructions can be scheduled, i.e. has no
|
||||
/// cyclic dependencies. This is only a dry-run, no instructions are
|
||||
/// actually moved at this stage.
|
||||
bool tryScheduleBundle(ArrayRef<Value *> VL, BoUpSLP *SLP);
|
||||
bool tryScheduleBundle(ArrayRef<Value *> VL, BoUpSLP *SLP, Value *OpValue);
|
||||
|
||||
/// Un-bundles a group of instructions.
|
||||
void cancelScheduling(ArrayRef<Value *> VL, Value *OpValue);
|
||||
@@ -1237,7 +1237,7 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
|
||||
}
|
||||
BlockScheduling &BS = *BSRef.get();
|
||||
|
||||
if (!BS.tryScheduleBundle(VL, this)) {
|
||||
if (!BS.tryScheduleBundle(VL, this, VL0)) {
|
||||
DEBUG(dbgs() << "SLP: We are not able to schedule this bundle!\n");
|
||||
assert((!BS.getScheduleData(VL[0]) ||
|
||||
!BS.getScheduleData(VL[0])->isPartOfBundle()) &&
|
||||
@@ -3097,8 +3097,8 @@ void BoUpSLP::optimizeGatherSequence() {
|
||||
// Groups the instructions to a bundle (which is then a single scheduling entity)
|
||||
// and schedules instructions until the bundle gets ready.
|
||||
bool BoUpSLP::BlockScheduling::tryScheduleBundle(ArrayRef<Value *> VL,
|
||||
BoUpSLP *SLP) {
|
||||
if (isa<PHINode>(VL[0]))
|
||||
BoUpSLP *SLP, Value *OpValue) {
|
||||
if (isa<PHINode>(OpValue))
|
||||
return true;
|
||||
|
||||
// Initialize the instruction bundle.
|
||||
@@ -3106,7 +3106,7 @@ bool BoUpSLP::BlockScheduling::tryScheduleBundle(ArrayRef<Value *> VL,
|
||||
ScheduleData *PrevInBundle = nullptr;
|
||||
ScheduleData *Bundle = nullptr;
|
||||
bool ReSchedule = false;
|
||||
DEBUG(dbgs() << "SLP: bundle: " << *VL[0] << "\n");
|
||||
DEBUG(dbgs() << "SLP: bundle: " << *OpValue << "\n");
|
||||
|
||||
// Make sure that the scheduling region contains all
|
||||
// instructions of the bundle.
|
||||
@@ -3177,7 +3177,7 @@ bool BoUpSLP::BlockScheduling::tryScheduleBundle(ArrayRef<Value *> VL,
|
||||
}
|
||||
}
|
||||
if (!Bundle->isReady()) {
|
||||
cancelScheduling(VL, VL[0]);
|
||||
cancelScheduling(VL, OpValue);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user