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 :-(

Reply via email to