On Tue, Apr 12, 2022 at 09:14:55PM -0400, Michael Meissner wrote: > This is V4 of the patch. Compared to V3 of the patch, GCC will just > ignore -m{,no-}power8-fusion and -m{,no-}power8-fusion-sign.
But incorrectly :-( > The splitting of signed halfword and word loads into unsigned load and > sign extension is now suppressed with -Os, but it is done normally if we > are not optimizing for space. I have no idea what that means. Other than that I asked to remove that. > This code makes the -mpower8-fusion option a nop. It is accepted without > warning, but it does nothing. Power8 fusion is only enabled if we are tuning > for a power8. It should *delete* the option, and have ;; This option existed in the past, but now is always off. mno-power8-fusion Target RejectNegative Undocumented Ignore > The undocumented -mpower8-fusion-sign option is also made into a nop. That one should be deleted. > + /* The Power8 fusion option was removed. We ignore using it in #pragma and > + attribute target. Users may have used the options to suppress errors if > + they declare an inline function to be specifically power8 and the > function > + was included by power9 or power10 which turned off the power8 fusion > + support. */ > + { "power8-fusion", 0, false, true }, What does the comment mean? > + /* Don't print options that exist for backwards compatibility, but are > + ignored now like -mpower8-fusion. */ > + if (!mask) > + continue; No. Such options should not be in the mask at all. > +/* Power8 has special fusion operations that are enabled if we are tuning for > + power8. This used to be settable with an option (-mpower8-fusion), but > that > + option has been removed. */ > +#define TARGET_P8_FUSION (rs6000_tune == PROCESSOR_POWER8) The plan was to not have p8 fusion at all. GCC never implemented any of the more useful p8 fusion things anyway, and those were only marginally beneficial anyway. > +/* Power8 fusion does not fuse loads with sign extends. If we are not > + optimizing for space, split loads with sign extension to loads with zero > + extension and an explicit sign extend operation, so that the zero > extending > + load can be fused. */ > +#define TARGET_P8_FUSION_SIGN (TARGET_P8_FUSION > \ > + && !optimize_function_for_size_p (cfun)) As I said before, don't do this. Just remove the whole thing. > +; The -mpower8-fusion and -mpower8-fusion-sign options existed in the past, > but > +; they are ignored now. Don't put them together. It is much easier for everything if they are separate, boring, and exactly like everything else. > mpower8-fusion > -Target Mask(P8_FUSION) Var(rs6000_isa_flags) > -Fuse certain integer operations together for better performance on power8. > +Target Undocumented Ignore It should be deleted, instead, and be replaced with ;; This option existed in the past, but now is always off. mno-power8-fusion Target RejectNegative Undocumented Ignore mpower8-fusion Target RejectNegative Undocumented WarnRemoved i.e. just like all other removed flags. If someone explicitly tries to enable it he/she *should* get a warning. > mpower8-fusion-sign > -Target Undocumented Mask(P8_FUSION_SIGN) Var(rs6000_isa_flags) > -Allow sign extension in fusion operations. > +Target Undocumented Ignore And this one should be completely removed, since no one ever used it. Segher