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
Showing
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment