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 <h...@bitrange.com> 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