We start out by separating the 'tuning flags' in a CPU or architecture...
authorRichard Earnshaw <rearnsha@arm.com>
Thu, 15 Dec 2016 15:38:21 +0000 (15:38 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Thu, 15 Dec 2016 15:38:21 +0000 (15:38 +0000)
commit643a5717dc458643c53e6fa85aed3b3d1f36b3b4
tree781ebc792a22617ef41b108c7c0d71f4072dfdac
parentf69f6aae843c6b8382abd0b5b3af39ddec17edcf
We start out by separating the 'tuning flags' in a CPU or architecture...

We start out by separating the 'tuning flags' in a CPU or architecture
specification into a new field in the data structures.  Because there
aren't very many of these (and we'd like to get rid of them entirely,
eventually, moving to entries in the tuning tables), we just use a
simple unsigned word.  This frees up a number of bits in the main
flags data structure, but we don't consolidate them as we'll be
getting rid of them entirely shortly.

There's one small user-visible change, the slow multiply flag is moved
from being treated as an architectural flag to a tuning flag.  This
has two consequences: it's now ignored for architectural matching to a
CPU and specifying a -mtune option will now correctly apply the
multiply performance to the decision as to which sequences to
synthesise.

* arm-arches.def (ARM_ARCH): Add extra field TUNE_FLAGS, move
tuning properties from architectural FLAGS field.
* arm-cores.def (ARM_CORE): Likewise.
* arm-protos.h (TF_LDSCHED, TF_WBUF, TF_CO_PROC): New macros.
(TF_SMALLMUL, TF_STRONG, TF_SCALE, TF_NOMODE32): New macros.
(FL_LDSCHED, FL_STRONG, FL_WBUF, FL_SMALLMUL): Delete.
(FL_TUNE): Remove deleted elements.
(tune_flags): Convert type to unsigned int.
* arm.c (struct processors): Add new field tune_flags.
(all_cores, all_arches): Initialize it.
(arm_option_override): Adapt uses of tune_flags.  Use tune_flags
for deciding when we should have slow multiply operations.

From-SVN: r243696
gcc/ChangeLog
gcc/common/config/arm/arm-common.c
gcc/config/arm/arm-arches.def
gcc/config/arm/arm-cores.def
gcc/config/arm/arm-flags.h
gcc/config/arm/arm-opts.h
gcc/config/arm/arm-protos.h
gcc/config/arm/arm.c