On 18/02/14 21:09, Philipp Tomsich wrote:
> The following patch-set contains the pipeline-independent changes to gcc
> to support the APM XGene-1 and contains various enhancements derived from
> real-world applications and benchmarks running on XGene-1.
> 
> As the pipeline model has not been fully adapted to the new instruction
> typing shared between the ARM backend and the AArch64 backend, it is not
> yet contained in these patches.
> 
> The most controversial part of these patches will likely consist in the
> new cost-model, which has intentionally been provided as a "hook" that
> intercepts the current cost-model when compiling for XGene-1. Given that
> the matching/structure of this cost-model is different from the existing
> implementation, we've chosen to keep this in a separate function for the
> time being.
> 

This patch series is too late for 4.9 and for stage 1 I'd like to see
this fixed before the code goes in.  Code like this rapidly becomes
unmaintainable and makes it difficult to add support for future
variants; it tends to proliferate once started and then it becomes
necessary to analyse every part of the machine description each time a
new device is added to find out whether it needs adjusting.

It should be possible to plug the XGene timings into the current
infrastructure, though it might be necessary to add some new data values
when doing so.

The end goal is that nothing in the back-end, apart from instruction
scheduling, should be testing for a specific CPU; the backend should
make all its code generation decisions from the architecture and tuning
tables.

R.

> 
> Philipp Tomsich (14):
>   Use "generic" target, if no other default.
>   Add "xgene1" core identifier.
>   Retrieve BRANCH_COST from tuning structure.
>   Correct the maximum shift amount for shifted operands.
>   Add AArch64 'prefetch'-pattern.
>   Extend '*tb<optab><mode>1'.
>   Define additional patterns for adds/subs.
>   Define a variant of cmp for the CC_NZ case.
>   Add special cases of zero-extend w/ compare operations.
>   Add mov<mode>cc definition for GPF case.
>   Optimize and(s) patterns for HI/QI operands.
>   Generate 'bics', when only interested in CC_NZ.
>   Initial tuning description for XGene-1 core.
>   Add cost-model for XGene-1.
> 
>  gcc/config/aarch64/aarch64-cores.def |   1 +
>  gcc/config/aarch64/aarch64-protos.h  |   2 +
>  gcc/config/aarch64/aarch64-tune.md   |   2 +-
>  gcc/config/aarch64/aarch64.c         | 922 
> ++++++++++++++++++++++++++++++++++-
>  gcc/config/aarch64/aarch64.h         |  10 +-
>  gcc/config/aarch64/aarch64.md        | 246 +++++++++-
>  gcc/config/aarch64/iterators.md      |   2 +
>  gcc/config/arm/types.md              |   2 +
>  8 files changed, 1172 insertions(+), 15 deletions(-)
> 


Reply via email to