[llvm] r373629 - [ModuloSchedule] removeBranch() *before* creating the trip count condition
James Molloy via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 3 10:10:32 PDT 2019
Author: jamesm
Date: Thu Oct 3 10:10:32 2019
New Revision: 373629
URL: http://llvm.org/viewvc/llvm-project?rev=373629&view=rev
Log:
[ModuloSchedule] removeBranch() *before* creating the trip count condition
The Hexagon code assumes there's no existing terminator when inserting its
trip count condition check.
This causes swp-stages5.ll to break. The generated code looks good to me,
it is likely a permutation. I have disabled the new codegen path to keep
everything green and will investigate along with the other 3-4 tests
that have different codegen.
Fixes expensive-checks build.
Modified:
llvm/trunk/lib/CodeGen/ModuloSchedule.cpp
llvm/trunk/test/CodeGen/Hexagon/swp-stages5.ll
Modified: llvm/trunk/lib/CodeGen/ModuloSchedule.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ModuloSchedule.cpp?rev=373629&r1=373628&r2=373629&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/ModuloSchedule.cpp (original)
+++ llvm/trunk/lib/CodeGen/ModuloSchedule.cpp Thu Oct 3 10:10:32 2019
@@ -1772,12 +1772,12 @@ void PeelingModuloScheduleExpander::fixu
MachineBasicBlock *Fallthrough = *Prolog->succ_begin();
MachineBasicBlock *Epilog = *EI;
SmallVector<MachineOperand, 4> Cond;
+ TII->removeBranch(*Prolog);
Optional<bool> StaticallyGreater =
Info->createTripCountGreaterCondition(TC, *Prolog, Cond);
if (!StaticallyGreater.hasValue()) {
LLVM_DEBUG(dbgs() << "Dynamic: TC > " << TC << "\n");
// Dynamically branch based on Cond.
- TII->removeBranch(*Prolog);
TII->insertBranch(*Prolog, Epilog, Fallthrough, Cond, DebugLoc());
} else if (*StaticallyGreater == false) {
LLVM_DEBUG(dbgs() << "Static-false: TC > " << TC << "\n");
@@ -1788,7 +1788,6 @@ void PeelingModuloScheduleExpander::fixu
P.RemoveOperand(2);
P.RemoveOperand(1);
}
- TII->removeBranch(*Prolog);
TII->insertUnconditionalBranch(*Prolog, Epilog, DebugLoc());
KernelDisposed = true;
} else {
Modified: llvm/trunk/test/CodeGen/Hexagon/swp-stages5.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Hexagon/swp-stages5.ll?rev=373629&r1=373628&r2=373629&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Hexagon/swp-stages5.ll (original)
+++ llvm/trunk/test/CodeGen/Hexagon/swp-stages5.ll Thu Oct 3 10:10:32 2019
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -mcpu=hexagonv5 -enable-pipeliner -pipeliner-max-stages=2 -hexagon-bit=0 < %s -pipeliner-experimental-cg=true | FileCheck %s
+; RUN: llc -march=hexagon -mcpu=hexagonv5 -enable-pipeliner -pipeliner-max-stages=2 -hexagon-bit=0 < %s | FileCheck %s
; Very similar to swp-stages4.ll, but the pipelined schedule is a little
; different.
More information about the llvm-commits
mailing list