Skip to content

Commit f6add81

Browse files
Revert "Check for loops"
This reverts commit a703c3b.
1 parent 01b806b commit f6add81

File tree

4 files changed

+9
-63
lines changed

4 files changed

+9
-63
lines changed

llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp

Lines changed: 4 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -943,10 +943,8 @@ RISCVInsertVSETVLI::getInfoForVSETVLI(const MachineInstr &MI) const {
943943
NewInfo.setAVLImm(MI.getOperand(1).getImm());
944944
} else {
945945
assert(MI.getOpcode() == RISCV::PseudoVSETVLI ||
946-
MI.getOpcode() == RISCV::PseudoVSETVLIX0 ||
947-
MI.getOpcode() == RISCV::PseudoVSETVLIX0X0);
948-
if (MI.getOpcode() == RISCV::PseudoVSETVLIX0 ||
949-
MI.getOpcode() == RISCV::PseudoVSETVLIX0X0)
946+
MI.getOpcode() == RISCV::PseudoVSETVLIX0);
947+
if (MI.getOpcode() == RISCV::PseudoVSETVLIX0)
950948
NewInfo.setAVLVLMAX();
951949
else if (MI.getOperand(1).isUndef())
952950
// Otherwise use an AVL of 1 to avoid depending on previous vl.
@@ -1513,21 +1511,12 @@ void RISCVInsertVSETVLI::emitVSETVLIs(MachineBasicBlock &MBB) {
15131511
/// this is geared to catch the common case of a fixed length vsetvl in a single
15141512
/// block loop when it could execute once in the preheader instead.
15151513
void RISCVInsertVSETVLI::doPRE(MachineBasicBlock &MBB) {
1516-
// Only works for either one predecessor, or two predecessors if it's a loop
1517-
if (MBB.pred_empty() && MBB.pred_size() > 2)
1518-
return;
1519-
15201514
if (!BlockInfo[MBB.getNumber()].Pred.isUnknown())
15211515
return;
15221516

1523-
bool isLoop = false;
1524-
15251517
MachineBasicBlock *UnavailablePred = nullptr;
15261518
VSETVLIInfo AvailableInfo;
1527-
MachineBasicBlock *PreviousPred = nullptr;
15281519
for (MachineBasicBlock *P : MBB.predecessors()) {
1529-
isLoop |= (P == &MBB);
1530-
15311520
const VSETVLIInfo &PredInfo = BlockInfo[P->getNumber()].Exit;
15321521
if (PredInfo.isUnknown()) {
15331522
if (UnavailablePred)
@@ -1536,24 +1525,8 @@ void RISCVInsertVSETVLI::doPRE(MachineBasicBlock &MBB) {
15361525
} else if (!AvailableInfo.isValid()) {
15371526
AvailableInfo = PredInfo;
15381527
} else if (AvailableInfo != PredInfo) {
1539-
if (!isLoop)
1540-
return;
1541-
1542-
DemandedFields PREDemands;
1543-
PREDemands.demandVTYPE();
1544-
1545-
if (!PredInfo.isCompatible(PREDemands, AvailableInfo, LIS))
1546-
return;
1547-
1548-
// States are VTYPE-compatible, prefer the more general state
1549-
// Choose VLMAX over immediate when both are tail-agnostic
1550-
if (PredInfo.hasAVLVLMAX() && AvailableInfo.hasAVLImm()) {
1551-
AvailableInfo = PredInfo;
1552-
UnavailablePred = PreviousPred;
1553-
}
1528+
return;
15541529
}
1555-
1556-
PreviousPred = P;
15571530
}
15581531

15591532
// Unreachable, single pred, or full redundancy. Note that FRE is handled by
@@ -1570,7 +1543,7 @@ void RISCVInsertVSETVLI::doPRE(MachineBasicBlock &MBB) {
15701543
return;
15711544

15721545
// Critical edge - TODO: consider splitting?
1573-
if (UnavailablePred->succ_size() != 1 && !isLoop)
1546+
if (UnavailablePred->succ_size() != 1)
15741547
return;
15751548

15761549
// If the AVL value is a register (other than our VLMAX sentinel),
@@ -1598,49 +1571,21 @@ void RISCVInsertVSETVLI::doPRE(MachineBasicBlock &MBB) {
15981571
VSETVLIInfo OldInfo = BlockInfo[MBB.getNumber()].Pred;
15991572
VSETVLIInfo CurInfo = AvailableInfo;
16001573
int TransitionsRemoved = 0;
1601-
1602-
LLVM_DEBUG(dbgs() << "PRE VSETVLI from " << MBB.getName() << " to "
1603-
<< UnavailablePred->getName() << "\n"
1604-
<< " Old state: " << OldInfo << "\n"
1605-
<< " New state: " << CurInfo << "\n");
1606-
16071574
for (const MachineInstr &MI : MBB) {
1608-
if (RISCVII::hasSEWOp(MI.getDesc().TSFlags))
1609-
if (!hasUndefinedPassthru(MI))
1610-
return; // Unsafe to change VL/VTYPE for this loop.
1611-
16121575
const VSETVLIInfo LastInfo = CurInfo;
16131576
const VSETVLIInfo LastOldInfo = OldInfo;
16141577
transferBefore(CurInfo, MI);
16151578
transferBefore(OldInfo, MI);
1616-
1617-
LLVM_DEBUG(dbgs() << "PRE VSETVLI 1 from " << MBB.getName() << " to "
1618-
<< UnavailablePred->getName() << "\n"
1619-
<< " Old state: " << OldInfo << "\n"
1620-
<< " New state: " << CurInfo << "\n");
1621-
16221579
if (CurInfo == LastInfo)
16231580
TransitionsRemoved++;
16241581
if (LastOldInfo == OldInfo)
16251582
TransitionsRemoved--;
16261583
transferAfter(CurInfo, MI);
16271584
transferAfter(OldInfo, MI);
1628-
1629-
LLVM_DEBUG(dbgs() << "PRE VSETVLI 2 from " << MBB.getName() << " to "
1630-
<< UnavailablePred->getName() << "\n"
1631-
<< " Old state: " << OldInfo << "\n"
1632-
<< " New state: " << CurInfo << "\n\n");
1633-
16341585
if (CurInfo == OldInfo)
16351586
// Convergence. All transitions after this must match by construction.
16361587
break;
16371588
}
1638-
1639-
LLVM_DEBUG(dbgs() << "PRE VSETVLI 3 from " << MBB.getName() << " to "
1640-
<< UnavailablePred->getName() << "\n"
1641-
<< " Old state: " << OldInfo << "\n"
1642-
<< " New state: " << CurInfo << "\n");
1643-
16441589
if (CurInfo != OldInfo || TransitionsRemoved <= 0)
16451590
// Issues 1 and 2 above
16461591
return;

llvm/test/CodeGen/AArch64/misched-cutoff.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ body: |
4242
; CHECK-CUTOFF: liveins: $w1, $x0
4343
; CHECK-CUTOFF-NEXT: {{ $}}
4444
; CHECK-CUTOFF-NEXT: $w8 = LDRWui $x0, 1, implicit-def $x8 :: (load (s32) from %ir.0)
45-
; CHECK-CUTOFF-NEXT: $w9 = LDRWui $x0, 0, implicit-def $x9 :: (load (s32) from %ir.arrayidx19, align 8)
4645
; CHECK-CUTOFF-NEXT: STRWui $w1, $x0, 2 :: (store (s32) into %ir.arrayidx1)
46+
; CHECK-CUTOFF-NEXT: $w9 = LDRWui $x0, 0, implicit-def $x9 :: (load (s32) from %ir.arrayidx19, align 8)
4747
; CHECK-CUTOFF-NEXT: $x0 = ADDXrr killed $x9, killed $x8
4848
; CHECK-CUTOFF-NEXT: RET_ReallyLR implicit $x0
4949
$w8 = LDRWui $x0, 1, implicit-def $x8 :: (load (s32) from %ir.0)

llvm/test/CodeGen/RISCV/machinelicm-constant-phys-reg.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ define i32 @test(ptr %a, i64 %n) {
77
; CHECK-LABEL: test:
88
; CHECK: # %bb.0: # %entry
99
; CHECK-NEXT: li a3, 0
10-
; CHECK-NEXT: vsetvli a2, zero, e32, m1, ta, ma
10+
; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
1111
; CHECK-NEXT: vmv.s.x v8, zero
1212
; CHECK-NEXT: .LBB0_1: # %loop
1313
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
1414
; CHECK-NEXT: vl1re32.v v9, (a0)
1515
; CHECK-NEXT: mv a2, a3
1616
; CHECK-NEXT: addi a1, a1, -1
17+
; CHECK-NEXT: vsetvli a3, zero, e32, m1, ta, ma
1718
; CHECK-NEXT: vredsum.vs v9, v9, v8
1819
; CHECK-NEXT: vmv.x.s a3, v9
1920
; CHECK-NEXT: addw a3, a3, a3

llvm/test/CodeGen/RISCV/rvv/sink-splat-operands.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2087,13 +2087,13 @@ define void @sink_splat_fma_scalable(ptr noalias nocapture %a, ptr noalias nocap
20872087
; CHECK-NEXT: mv a6, a0
20882088
; CHECK-NEXT: mv a7, a1
20892089
; CHECK-NEXT: mv t0, a3
2090+
; CHECK-NEXT: vsetvli t1, zero, e32, m1, ta, ma
20902091
; CHECK-NEXT: .LBB34_3: # %vector.body
20912092
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
20922093
; CHECK-NEXT: vl1re32.v v8, (a6)
20932094
; CHECK-NEXT: vl1re32.v v9, (a7)
20942095
; CHECK-NEXT: sub t0, t0, a4
20952096
; CHECK-NEXT: add a7, a7, a2
2096-
; CHECK-NEXT: vsetvli t1, zero, e32, m1, ta, ma
20972097
; CHECK-NEXT: vfmacc.vf v9, fa0, v8
20982098
; CHECK-NEXT: vs1r.v v9, (a6)
20992099
; CHECK-NEXT: add a6, a6, a2
@@ -2187,13 +2187,13 @@ define void @sink_splat_fma_commute_scalable(ptr noalias nocapture %a, ptr noali
21872187
; CHECK-NEXT: mv a6, a0
21882188
; CHECK-NEXT: mv a7, a1
21892189
; CHECK-NEXT: mv t0, a3
2190+
; CHECK-NEXT: vsetvli t1, zero, e32, m1, ta, ma
21902191
; CHECK-NEXT: .LBB35_3: # %vector.body
21912192
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
21922193
; CHECK-NEXT: vl1re32.v v8, (a6)
21932194
; CHECK-NEXT: vl1re32.v v9, (a7)
21942195
; CHECK-NEXT: sub t0, t0, a4
21952196
; CHECK-NEXT: add a7, a7, a2
2196-
; CHECK-NEXT: vsetvli t1, zero, e32, m1, ta, ma
21972197
; CHECK-NEXT: vfmacc.vf v9, fa0, v8
21982198
; CHECK-NEXT: vs1r.v v9, (a6)
21992199
; CHECK-NEXT: add a6, a6, a2

0 commit comments

Comments
 (0)