liuhongt <hongtao....@intel.com> writes: > From: "H.J. Lu" <hjl.to...@gmail.com> > > According to Intel® 64 and IA-32 Architectures Optimization Reference > Manual[1], Branch Hint is updated for Redwood Cove. > > --------cut from [1]------------------------- > Starting with the Redwood Cove microarchitecture, if the predictor has > no stored information about a branch, the branch has the Intel® SSE2 > branch taken hint (i.e., instruction prefix 3EH), When the codec > decodes the branch, it flips the branch’s prediction from not-taken to > taken. It then flushes the pipeline in front of it and steers this > pipeline to fetch the taken path of the branch. > --------cut end ----------------------------- > > For -mtune-ctrl=branch_prediction_hints, always generate branch hint for > conditional branches, this tune is disabled by default. > > [1] > https://www.intel.com/content/www/us/en/content-details/821612/intel-64-and-ia-32-architectures-optimization-reference-manual-volume-1.html > > Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,}. > Ready push to trunk.
So what does it do to code size? You may not want to do it with -Os. Maybe it should be only done with actual profile feedback data available, i'm not sure if the builtin heuristics are good enough to justify it and there is a risk that it is very wrong. Yes as long as it's disabled by default that's all not a problem, but it would need to be solved to enable it. -Andi