[PATCH] D89088: [MBP] Add whole chain to BlockFilterSet instead of individual BB
Guozhi Wei via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 14 11:55:41 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rGadfb5415010f: [MBP] Add whole chain to BlockFilterSet instead of individual BB (authored by Carrot).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D89088/new/
https://reviews.llvm.org/D89088
Files:
llvm/lib/CodeGen/MachineBlockPlacement.cpp
llvm/test/CodeGen/X86/block_set.ll
Index: llvm/test/CodeGen/X86/block_set.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/X86/block_set.ll
@@ -0,0 +1,64 @@
+; RUN: llc -mtriple=i686-linux < %s | FileCheck %s
+
+define i1 @block_filter() !prof !22{
+; CHECK-LABEL: block_filter
+; CHECK: %.entry
+; CHECK: %.header1
+; CHECK: %.bb1
+; CHECK: %.header2
+; CHECK: %.latch2
+; CHECK: %.cold
+; CHECK: %.pred
+; CHECK: %.problem
+; CHECK: %.latch1
+; CHECK: %.exit
+.entry:
+ %val0 = call i1 @bar()
+ br label %.header1
+
+.header1:
+ %val1 = call i1 @foo()
+ br i1 %val1, label %.bb1, label %.pred, !prof !2
+
+.bb1:
+ %val11 = call i1 @foo()
+ br i1 %val11, label %.header2, label %.pred, !prof !2
+
+.header2:
+ %val2 = call i1 @foo()
+ br i1 %val2, label %.latch2, label %.cold, !prof !10
+
+.cold:
+ %val4 = call i1 @bar()
+ br i1 %val4, label %.latch2, label %.problem
+
+.latch2:
+ %val5 = call i1 @foo()
+ br i1 %val5, label %.header2, label %.latch1, !prof !1
+
+.pred:
+ %valp = call i1 @foo()
+ br label %.problem
+
+.problem:
+ %val3 = call i1 @foo()
+ br label %.latch1
+
+.latch1:
+ %val6 = call i1 @foo()
+ br i1 %val6, label %.header1, label %.exit, !prof !1
+
+.exit:
+ %val7 = call i1 @foo()
+ ret i1 %val7
+}
+
+declare i1 @foo()
+declare i1 @bar()
+
+!1 = !{!"branch_weights", i32 5, i32 5}
+!2 = !{!"branch_weights", i32 60, i32 40}
+!3 = !{!"branch_weights", i32 90, i32 10}
+!10 = !{!"branch_weights", i32 90, i32 10}
+
+!22 = !{!"function_entry_count", i64 100}
Index: llvm/lib/CodeGen/MachineBlockPlacement.cpp
===================================================================
--- llvm/lib/CodeGen/MachineBlockPlacement.cpp
+++ llvm/lib/CodeGen/MachineBlockPlacement.cpp
@@ -2541,10 +2541,14 @@
MBPI->getEdgeProbability(LoopPred, L.getHeader());
for (MachineBasicBlock *LoopBB : L.getBlocks()) {
+ if (LoopBlockSet.count(LoopBB))
+ continue;
auto Freq = MBFI->getBlockFreq(LoopBB).getFrequency();
if (Freq == 0 || LoopFreq.getFrequency() / Freq > LoopToColdBlockRatio)
continue;
- LoopBlockSet.insert(LoopBB);
+ BlockChain *Chain = BlockToChain[LoopBB];
+ for (MachineBasicBlock *ChainBB : *Chain)
+ LoopBlockSet.insert(ChainBB);
}
} else
LoopBlockSet.insert(L.block_begin(), L.block_end());
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D89088.298204.patch
Type: text/x-patch
Size: 2356 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201014/b92cd38d/attachment.bin>
More information about the llvm-commits
mailing list