On Mon, 22 Apr 2024, Alexandre Oliva wrote:
> [Revamped version of this patch, combined with others, to follow]
>
> On Mar 10, 2021, Hans-Peter Nilsson <[email protected]> wrote:
Time flies...
> > On Wed, 10 Mar 2021, Alexandre Oliva wrote:
> Is mmix a sqrt_insn effective target? proc
> check_effective_target_sqrt_insn in
> gcc/testsuite/lib/target-supports.exp suggests it shouldn't pass, so I'm
> surprised it would still try to run the test despite the added
> /* { dg-require-effective-target sqrt_insn } */ directive.
The effective-target sqrt_insn predicate says "supports hardware
square root instructions" and doesn't make a difference between
sqrtdf2 (double) and sqrtsf3 (float). I'm extrapolating that
the "divine meaning" of the comment is that such an instruction
must be present for all supported floating-point modes for the
predicate to yield true (when the predicate is correctly
implemented).
(We could also fix the predicate description to actually say
"for all floating-point modes" and/or split the predicate into
mode-specific variants, etc. ;-)
MMIX has sqrtdf2 but not sqrtsf2, and the latter is what's used
in cdce3.c.
> cdce3 is supposed to shrink-wrap the sqrtf(x) call into something like
> (x >= 0 ? .SQRT(x) : sqrtf(x)), where .SQRT stands for a square root
> instruction.
...for 32-bit single floats.
> Since we don't know why it still runs for you, I'm keeping the mmix
> explicit skip in the new version of the patch.
Thanks, that does seem like TRT.
brgds, H-P