]> git.ipfire.org Git - thirdparty/gcc.git/commit
AArch64: Add new generic-armv8-a CPU and make it the default.
authorTamar Christina <tamar.christina@arm.com>
Tue, 21 Nov 2023 13:20:39 +0000 (13:20 +0000)
committerTamar Christina <tamar.christina@arm.com>
Tue, 21 Nov 2023 13:25:10 +0000 (13:25 +0000)
commit33c2b70dbabc02788caabcbc66b7baeafeb95bcf
treee0750c6d8af0977722a8dd2236369d2d8358d31c
parente5678468e550e99944fca6bae364696714ffb445
AArch64: Add new generic-armv8-a CPU and make it the default.

This patch adds a new generic scheduling model "generic-armv8-a" and makes it
the default for all Armv8 architectures.

-mcpu=generic and -mtune=generic is kept around for those that really want the
previous cost model.

This shows on SPECCPU 2017 the following:

generic:  SPECINT 1.0% improvement in geomean, SPECFP -0.6%.  The SPECFP is due
          to fotonik3d_r where we vectorize an FP calculation that only ever
  needs one lane of the result.  This I believe is a generic costing bug
  but at the moment we can't change costs of FP and INT independently.
  So will defer updating that cost to stage3 after Richard's other
  costing updates land.

generic SVE: SPECINT 1.1% improvement in geomean, SPECFP 0.7% improvement.

gcc/ChangeLog:

PR target/111370
* config/aarch64/aarch64-arches.def (armv8-9, armv8-a, armv8.1-a,
armv8.2-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, armv8.7-a,
armv8.8-a): Update to generic_armv8_a.
* config/aarch64/aarch64-cores.def (generic-armv8-a): New.
* config/aarch64/aarch64-tune.md: Regenerate.
* config/aarch64/aarch64.cc: Include generic_armv8_a.h
* config/aarch64/aarch64.h (TARGET_CPU_DEFAULT): Change to
TARGET_CPU_generic_armv8_a.
* config/aarch64/tuning_models/generic_armv8_a.h: New file.

gcc/testsuite/ChangeLog:

PR target/111370
* gcc.target/aarch64/sve/cond_asrd_1.c: Updated.
* gcc.target/aarch64/sve/cond_cnot_4.c: Likewise.
* gcc.target/aarch64/sve/cond_unary_5.c: Likewise.
* gcc.target/aarch64/sve/cond_uxt_5.c: Likewise.
* gcc.target/aarch64/target_attr_13.c: Likewise.
* gcc.target/aarch64/target_attr_15.c: Likewise.
12 files changed:
gcc/config/aarch64/aarch64-arches.def
gcc/config/aarch64/aarch64-cores.def
gcc/config/aarch64/aarch64-tune.md
gcc/config/aarch64/aarch64.cc
gcc/config/aarch64/aarch64.h
gcc/config/aarch64/tuning_models/generic_armv8_a.h [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
gcc/testsuite/gcc.target/aarch64/target_attr_13.c
gcc/testsuite/gcc.target/aarch64/target_attr_15.c