[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