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. 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(-) -- 1.9.0