Page MenuHomePhabricator

Specify branch probabilities for callbr dests

Authored by void on Jan 13 2020, 2:51 PM.



callbr's indirect branches aren't expected to be taken, so reduce their
probabilities to 0 while increasing the default destination to 1. This
allows some code improvements through block placement.

Diff Detail

Event Timeline

void created this revision.Jan 13 2020, 2:51 PM
Herald added a project: Restricted Project. · View Herald TranscriptJan 13 2020, 2:51 PM

Cool, IIRC when upstream kernel devs took a look (via some objtool bug reports) they mentioned that our block placement was backwards. The callbr-asm-branch-folding.ll change makes the most sense to me; the indirect branch is moved out of the way. (Though I would have thought branch predictors assume forward branches are taken). Did this result in any measurable performance difference?


The top of this file mentions ; NOTE: Assertions have been autogenerated by utils/ Did really remove this .p2align?

void updated this revision to Diff 249808.Mar 11 2020, 5:56 PM

Rebase patch.

void marked an inline comment as done.Mar 11 2020, 5:57 PM
void added inline comments.

I don't know how this was removed. I've never had to deal with

void updated this revision to Diff 249810.Mar 11 2020, 6:19 PM

Run on the testcase.

void marked an inline comment as done.Mar 11 2020, 6:19 PM



Okay. I figured out how to run it. Done.

nickdesaulniers accepted this revision.Mar 11 2020, 6:25 PM
This revision is now accepted and ready to land.Mar 11 2020, 6:25 PM
Harbormaster completed remote builds in B48917: Diff 249810.
This revision was automatically updated to reflect the committed changes.