https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119629
--- Comment #4 from Segher Boessenkool <segher at gcc dot gnu.org> --- Hi Alex, (In reply to Alexandre Oliva from comment #0) > This raises a number of problems: > > - instructions and expanders for these builtins don't have their conditions > tested, so they must necessarily follow from the builtin conditions, and > this case clearly isn't "They don't have their conditions tested"? What does that mean? > - TARGET_64BIT seems to imply TARGET_POWERPC64, but TARGET_POWERPC64 doesn't > imply TARGET_64BIT Yes. As it should. TARGET_POWERPC64 enables instructions that require 64-bit registers. > - TARGET_MODULO isn't used very often in conditions in the .md file, but it > can be controlled independently from TARGET_P9_MISC Yes? What is the question? >From rs6000.opt: mmodulo Target Undocumented Mask(MODULO) Var(rs6000_isa_flags) Generate the integer modulo instructions. Normally you would not use this -m ever, just have it set by the -mcpu= you use. > - the misuse of TARGET_64BIT in cmpeqb alone makes me worry that other > instructions guarded by it may have the same condition mismatch problem. This has happened many times over the last few decades. Most of those problems are solved by now. Maybe you should take solace in the fact that we do not have macros for the twenty-odd different things where the differences matter, and we do not allow controlling these separately :-) > cfuged seems to be one of those, and [power10-64] accepts TARGET_POWERPC64 > instead. there may be more. > > it looks like a review by someone familiar with this port and these > instructions would probably be useful I would hope that existing testcases catch most of these problems. But we have many testcases that are disabled for unnecessary reasons :-(