Hi!

On Wed, May 29, 2019 at 07:42:38AM -0500, Bill Schmidt wrote:
>       * rs6000-cpus.def (OTHER_FUSION_MASKS): New #define.
>       (ISA_FUTURE_MASKS_SERVER): Add OPTION_MASK_PREFIXED_ADDR. Mask off
>       OTHER_FUSION_MASKS.

Two spaces after a full stop (here and later again).

> +/* ISA masks setting fusion options.  */
> +#define OTHER_FUSION_MASKS   (OPTION_MASK_P8_FUSION                  \
> +                              | OPTION_MASK_P8_FUSION_SIGN)

Or merge the two masks into one?

>  /* Support for a future processor's features.  */
> -#define ISA_FUTURE_MASKS_SERVER      (ISA_3_0_MASKS_SERVER                   
> \
> -                              | OPTION_MASK_FUTURE                   \
> -                              | OPTION_MASK_PCREL)
> +#define ISA_FUTURE_MASKS_SERVER      ((ISA_3_0_MASKS_SERVER                  
> \
> +                               | OPTION_MASK_FUTURE                  \
> +                               | OPTION_MASK_PCREL                   \
> +                               | OPTION_MASK_PREFIXED_ADDR)          \
> +                              & ~OTHER_FUSION_MASKS)

OTHER_FUSION_MASKS shouldn't be part of ISA_3_0_MASKS_SERVER.  Fix that
instead?  Fusion is a property of specific CPUs, not of ISA versions.

> -  /* -mpcrel requires the prefixed load/store support on FUTURE systems.  */
> -  if (!TARGET_FUTURE && TARGET_PCREL)
> +  /* -mprefixed-addr and -mpcrel require the prefixed load/store support on
> +     FUTURE systems.  */
> +  if (!TARGET_FUTURE && (TARGET_PCREL || TARGET_PREFIXED_ADDR))
>      {
>        if ((rs6000_isa_flags_explicit & OPTION_MASK_PCREL) != 0)
>       error ("%qs requires %qs", "-mpcrel", "-mcpu=future");

PCREL requires PREFIXED_ADDR, please simplify.

> +  if (TARGET_PCREL && !TARGET_PREFIXED_ADDR)
> +    {
> +      if ((rs6000_isa_flags_explicit & OPTION_MASK_PCREL) != 0)
> +     error ("%qs requires %qs", "-mpcrel", "-mprefixed-addr");
> +
>        rs6000_isa_flags &= ~OPTION_MASK_PCREL;
>      }

Maybe put this test first, if that makes things easier or more logical?

> @@ -36379,6 +36391,7 @@ static struct rs6000_opt_mask const 
> rs6000_opt_masks[] =
>    { "power9-vector",         OPTION_MASK_P9_VECTOR,          false, true  },
>    { "powerpc-gfxopt",                OPTION_MASK_PPC_GFXOPT,         false, 
> true  },
>    { "powerpc-gpopt",         OPTION_MASK_PPC_GPOPT,          false, true  },
> +  { "prefixed-addr",         OPTION_MASK_PREFIXED_ADDR,      false, true  },

Do we want this?  Why?


Segher

Reply via email to