On 5/29/19 8:16 AM, Segher Boessenkool wrote:
> 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).

Oops, yep.
>
>> +/* 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?

I'll ask Mike to explain this, as I don't know why there are two masks.
>
>>  /* 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.

Agreed, I think this should be masked out of ISA_3_0_MASKS_SERVER, but
would like Mike to agree before I change it in case I'm missing
something obvious.
>
>> -  /* -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?
ok
>
>> @@ -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?

Performance folks are using it for testing purposes.  Eventually this
will probably drop out, but for now I think it's best to have the
undocumented switch.

Thanks,
Bill
>
>
> Segher
>

Reply via email to