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
>