[PATCH] D57067: [MBP] Don't move bottom block before header if it can't reduce taken branches

Guozhi Wei via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 23 10:52:33 PST 2019


Carrot marked an inline comment as done.
Carrot added inline comments.


================
Comment at: lib/CodeGen/MachineBlockPlacement.cpp:1775
+// layout the other successor below it, so it can't reduce taken branch.
+// In this case we keep its original layout.
+bool
----------------
davidxl wrote:
> Is there any benefit of keeping the original layout?
1 If there is no benefit, the original layout is much better for readability.

2 In theory on modern processor the consecutive two branches should be slower than two branches with other instructions between them.

case 1
     ...
     jne 
     jmp

case 2
     jne
     alu_1
     ...
     alu_n
     jmp

When prediction for jne is correct, there is no difference.
When prediction for jne is false and branch is not taken, following instructions is fetched and executed, in case 1 only one instruction is fetched and executed, in case 2 multiple instruction is fetched and executed at the same time. Usually branch instructions cause bubble in pipeline. In case 1 when jmp is executed, the pipeline is completely empty. In case 2 when jmp is executed, the pipeline can still execute previous instructions.



Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D57067/new/

https://reviews.llvm.org/D57067





More information about the llvm-commits mailing list