This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Rs6000 infrastructure cleanup (switches), revised patch #2f
- From: David Edelsohn <dje dot gcc at gmail dot com>
- To: Michael Meissner <meissner at linux dot vnet dot ibm dot com>, gcc-patches at gcc dot gnu dot org, bergner at vnet dot ibm dot com, segher at kernel dot crashing dot org, iain at codesourcery dot com, andreast-list at fgznet dot ch
- Date: Wed, 17 Oct 2012 13:55:40 -0400
- Subject: Re: [PATCH] Rs6000 infrastructure cleanup (switches), revised patch #2f
- References: <20120912224303.GA19348@ibm-tiger.the-meissners.org> <20120917195131.GA22648@ibm-tiger.the-meissners.org> <CAGWvnykaJM0LFiwVJRcoay4uVJtrFR-V8G=_aK6=4VQygmAx0w@mail.gmail.com> <20120920195755.GA18581@ibm-tiger.the-meissners.org> <20120927224228.GA24889@ibm-tiger.the-meissners.org> <CAGWvny=03v_EwK=48hfbN9-Z43yvqoCUZPLQ-hoC0X0W9UKDiw@mail.gmail.com> <20121005194921.GA20004@ibm-tiger.the-meissners.org> <20121016155632.GA14729@ibm-tiger.the-meissners.org>
Mike,
This patch is okay with the appropriate changes to adapt to the common
infrastructure improvements.
We will continue to iterate on this.
Are there any testcases that would be useful? A lot of other testcases
use target flags, so those probably will point out problems.
Thanks, David
On Tue, Oct 16, 2012 at 11:56 AM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> While Joseph and I are iterating on global changes to the options machinery,
> David had said patch #2b was ok for just powerpc specific changes. I took
> patch #2b, and adjusted it for the 3 patches I already checked in. I rewrote
> the ChangeLog entries to try and be more explicit in what was going on. This
> bootstraped and had no regressions. Is this ok to check in?
>
> 2012-10-16 Michael Meissner <meissner@linux.vnet.ibm.com>
>
> * config/rs6000/rs6000.opt (rs6000_isa_flags): New flag word to
> replace target_flags that gives us 63 possible switches.
> (x_rs6000_isa_flags): Save area for rs6000_isa_flags.
> (x_rs6000_isa_flags_explicit): Save area for
> rs6000_isa_flags_explicit.
> (rs6000_target_flags_explicit): Delete in favor of
> x_rs6000_isa_flags_explicit.
> (-mpowerpc64): Change all switches that used to be in target_flags
> to now be in rs6000_isa_flags. In using rs6000_isa_flags, the
> options machinary will generate names of the form OPITON_<xxx>
> instead of TARGET_<xxx> and OPTION_MASK_<xxx> instead of
> MASK_<xxx>.
> (-mpowerpc-gpopt): Likewise.
> (-mpowerpc-gfxopt): Likewise.
> (-mmfcrf): Likewise.
> (-mpopcntb): Likewise.
> (-mfprnd): Likewise.
> (-mcmpb): Likewise.
> (-mmfpgpr): Likewise.
> (-maltivec): Likewise.
> (-mhard-dfp): Likewise.
> (-mmulhw): Likewise.
> (-mdlmzb): Likewise.
> (-mmultiple): Likewise.
> (-mstring): Likewise.
> (-msoft-float): Likewise.
> (-mhard-float): Likewise.
> (-mpopcntd): Likewise.
> (-mvsx): Likewise.
> (-mno-update): Likewise.
> (-mupdate): Likewise.
> (-mrecip-precision): Likewise.
> (-mminimal-toc): Likewise.
> (-misel): Likewise.
> * config/rs6000/aix64.opt (-maix64): Likewise.
> (-maix32): Likewise.
> * config/rs6000/sysv4.opt (-mstrict-align): Likewise.
> (-mrelocatable): Likewise.
> (-mlittle-endian): Likewise.
> (-mlittle): Likewise.
> (-mbig-endian): LIkewise.
> (-mbig): Likewise.
> (-meabi): Likewise.
> (-m64): Likewise.
> (-m32): Likewise.
> * config/rs6000/darwin.opt (-m64): Likewise.
> (-m32): Likewise.
>
> * config/rs6000/rs6000-cpus.def (ISA_2_1_MASKS): Move the various
> masks used in rs6000.c here, since they are more logically in this
> file. Convert from being enums to just #defines, since the types
> of these masks is now HOST_WIDE_INT instead of int. For
> POWERPC_MASKS, add MASK_SOFT_FLOAT, since the only use case or'ed
> in the mask. Change the use in rs6000.c not to do the OR of
> MASK_SOFT_FLOAT.
> (ISA_2_1_MASKS): Likewise.
> (ISA_2_2_MASKS): Likewise.
> (ISA_2_4_MASKS): Likewise.
> (ISA_2_5_MASKS_EMBEDDED): Likewise.
> (ISA_2_5_MASKS_SERVER): Likewise.
> (POWERPC_7400_MASK): Likewise.
> (POWERPC_MASKS): Likewise.
> * config/rs6000/rs6000.c (ISA_2_1_MASKS): Likewise.
> (ISA_2_1_MASKS): Likewise.
> (ISA_2_2_MASKS): Likewise.
> (ISA_2_4_MASKS): Likewise.
> (ISA_2_5_MASKS_EMBEDDED): Likewise.
> (ISA_2_5_MASKS_SERVER): Likewise.
> (POWERPC_7400_MASK): Likewise.
> (POWERPC_MASKS): Likewise.
> (rs6000_option_override_internal): Likewise.
>
> * config/rs6000/rs6000.c (darwin_rs6000_override_options): Change
> all uses of target_flags to rs6000_isa_flags. Change all uses of
> target_flags_explicit to rs6000_isa_flags_explicit. Change the
> use of MASK_<xxx> to OPTION_MASK_<xxx> that options.h defines when
> we use a secondary flags word. Save/restore/print the new flags
> word when switching contexts with different target attributes.
> (rs6000_option_override_internal): Likewise.
> (rs6000_darwin_file_start): Likewise.
> (rs6000_opt_masks): Likewise.
> (rs6000_inner_target_options): Likewise.
> (rs6000_pragma_target_parse): Likewise.
> (rs6000_set_current_function): Likewise.
> (rs6000_function_specific_save): Likewise.
> (rs6000_function_specific_restore): Likewise.
> (rs6000_function_specific_print): Likewise.
> (rs6000_can_inline_p): Likewise.
> * config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
> Likewise.
> (rs6000_cpu_cpp_builtins): Likewise.
> * common/config/rs6000/rs6000-driver.c (rs6000_handle_option):
> Likewise.
>
> * config/rs6000/rs6000.h (OPTION_MFCRF): Replace TARGET_<xxx> with
> OPTION_<xxx> if the assembler doesn't support mfcrf, popcntb,
> fprnd, cmpb, mfpgpr, dfp, popcntd instructions.
> (TARGET_MFCRF): Likewise.
> (OPTION_POPCNTB): Likewise.
> (TARGET_POPCNTB): Likewise.
> (OPTION_FPRND): Likewise.
> (TARGET_FPRND): Likewise.
> (OPTION_CMPB): Likewise.
> (TARGET_CMPB): Likewise.
> (OPTION_HARD_DFP): Likewise.
> (TARGET_HARD_DFP): Likewise.
> (OPTION_POPCNTD): Likewise.
> (TARGET_POPCNTD): LIkewise.
> (TARGET_ALTIVEC): In moving to using Var(...) for all of the isa
> switches, the options machinery now uses OPTION_<xxx> instead of
> TARGET_<xxx> for whether the switch was set, OPTION_MASK_<xxx>
> instead of MASK_<xxx> for the mask name. Use #define to map the
> old name into the new name. For switches that are defined in
> aix64.opt, sysv4.opt, and darwin.opt, only do the definition if
> those switches were defined.
> (TARGET_CMPB): Likewise.
> (TARGET_DFP): Likewise.
> (TARGET_DLMZB): Likewise.
> (TARGET_EABI): Likewise.
> (TARGET_FPRND): Likewise.
> (TARGET_HARD_FLOAT): Likewise.
> (TARGET_ISEL): Likewise.
> (TARGET_MFCRF): Likewise.
> (TARGET_MFPGPR): Likewise.
> (TARGET_MULHW): Likewise.
> (TARGET_MULTIPLE): Likewise.
> (TARGET_NO_UPDATE): Likewise.
> (TARGET_POPCNTB): Likewise.
> (TARGET_POPCNTD): Likewise.
> (TARGET_PPC_GFXOPT): Likewise.
> (TARGET_PPC_GPOPT): Likewise.
> (TARGET_RECIP_PRECISION): Likewise.
> (TARGET_SOFT_FLOAT): Likewise.
> (TARGET_STRICT_ALIGN): Likewise.
> (TARGET_STRING): Likewise.
> (TARGET_UPDATE): Likewise.
> (TARGET_VSX): Likewise.
> (MASK_ALTIVEC): Likewise.
> (MASK_CMPB): Likewise.
> (MASK_DFP): Likewise.
> (MASK_DLMZB): Likewise.
> (MASK_EABI): Likewise.
> (MASK_FPRND): Likewise.
> (MASK_HARD_FLOAT): Likewise.
> (MASK_ISEL): Likewise.
> (MASK_MFCRF): Likewise.
> (MASK_MFPGPR): Likewise.
> (MASK_MULHW): Likewise.
> (MASK_MULTIPLE): Likewise.
> (MASK_NO_UPDATE): Likewise.
> (MASK_POPCNTB): Likewise.
> (MASK_POPCNTD): Likewise.
> (MASK_PPC_GFXOPT): Likewise.
> (MASK_PPC_GPOPT): Likewise.
> (MASK_RECIP_PRECISION): Likewise.
> (MASK_SOFT_FLOAT): Likewise.
> (MASK_STRICT_ALIGN): Likewise.
> (MASK_STRING): Likewise.
> (MASK_UPDATE): Likewise.
> (MASK_VSX): Likewise.
> (TARGET_POWERPC64): Likewise.
> (MASK_POWERPC64): Likewise.
> (TARGET_64BIT): Likewise.
> (MASK_64BIT): Likewise.
> (TARGET_RELOCATABLE): Likewise.
> (MASK_RELOCATABLE): Likewise.
> (TARGET_LITTLE_ENDIAN): Likewise.
> (MASK_LITTLE_ENDIAN): Likewise.
> (TARGET_MINIMAL_TOC): Likewise.
> (MASK_MINIMAL_TOC): Likewise.
> (TARGET_REGNAMES): Likewise.
> (MASK_REGNAMES): Likewise.
> (TARGET_PROTOTYPE): Likewise.
> (MASK_PROTOTYPE): Likewise.
> (rs6000_isa_flags_explicit): Define in terms of the
> global_options_set structure.
>
> * gcc/config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS):
> Change use of target_flags to rs6000_isa_flags,
> target_flags_explicit to rs6000_isa_flags_explicit, and MASK_<xxx>
> to OPTION_MASK_<xxx>.
> * gcc/config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS):
> Likewise.
> * gcc/config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS):
> Likewise.
> * gcc/config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS):
> Likewise.
> * gcc/config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS):
> Likewise.
> * gcc/config/rs6000/freebsd64.h (RELOCATABLE_NEEDS_FIXUP):
> Likewise.
> (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
> * gcc/config/rs6000/freebsd.h (RELOCATABLE_NEEDS_FIXUP):
> Likewise.
> * gcc/config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP):
> Likewise.
> (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
> (OPTION_LITTLE_ENDIAN): Likewise.
> (OPTION_RELOCATABLE): Likewise.
> (OPTION_EABI): Likewise.
> (OPTION_PROTOTYPE): Likewise.
> * gcc/config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Likewise.
> * gcc/config/rs6000/option-defaults.h (OPTION_MASK_64BIT):
> Likewise.
> (OPT_ARCH32): Likewise.
> (OPT_ARCH64): Likewise.
> * gcc/config/rs6000/sysv4.h (TARGET_TOC): Likewise.
> (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
> (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
> (TARGET_OS_SYSV_CPP_BUILTINS): Likewise.
>
> * config/rs6000/t-rs6000 (rs6000.o): Add rs6000-cpus.def as a
> dependency.
>
> --
> Michael Meissner, IBM
> 5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
> meissner@linux.vnet.ibm.com fax +1 (978) 399-6899