Hi,
This patch introduces a new region formation type, referred to as
Treegions, for interblock scheduling. For the SPEC2K benchmarks, 86.2% of
all basic blocks are contained within a multi-block regions (as compared
to 61% (SPECINT) and 64% (SPECFP) for the current formation code after 2
iterations of extend_rgns()). An additional function to extend treegions
(similar to extend_rgns(); not provided with this patch) increases this
number to 89.6% by merging certain types of treegions.
In addition to this patch, several additional enhancement are to follow
that include a tail duplication implementation to increase region size
(and therefore the opportunity for speculation) based on a cost analysis
heuristic. We refer to this heuristic as the Instantaneous Code Size
Efficient (ICSE)) which takes into consideration the increase in IPC
relative to code size increase.
Additional details are to be presented at the GCC Summit at the end of the
month.
The changes have been tested on the trunk on ia64-unknown-linux-gnu with
no regressions.
Thanks,
Chad Rosier