On Mon, Mar 01, 2021 at 09:46:29AM +0100, Richard Biener wrote:
> On Sat, Feb 27, 2021 at 2:43 AM Segher Boessenkool
> <seg...@kernel.crashing.org> wrote:
> >
> > On Fri, Feb 26, 2021 at 12:31:16PM -0500, David Edelsohn wrote:
> > > On Fri, Feb 26, 2021 at 11:09 AM Alexandre Oliva <ol...@adacore.com> 
> > > wrote:
> > > >
> > > > This patch avoids an ICE in gimplefe-28.c, in our ppc64-vxworks7r2
> > > > tests.  Tested on x86_64-linux-gnu, and on the affected platform.  Ok to
> > > > install?
> > >
> > > I'm sort of surprised that sqrt instruction would be available for the
> > > target but not enabled by default.  Is this really the method that
> > > customers would use?  It seems that it might be more appropriate to
> > > xfail or skip the test for PPC64 VxWorks.
> >
> > You should essentially never use -mpowerpc-gpopt, but instead use a
> > -mcpu= that has it.  You also of course whould not do that in run tests
> > if the cpu does not support those insns.
> >
> > But, Alex, you say this avoids an ICE?  You shouldn't avoid the ICE in
> > that testcase then -- instead, fix it!  (Or report it).
> 
> The testcase uses a .SQRT direct-internal function and guards itself with
> 
> /* { dg-do compile { target sqrt_insn } } */
> /* { dg-options "-fgimple -O2" } */
> /* { dg-add-options sqrt_insn } */
> 
> if the power dg setup of sqrt_insn doesn't support this it should be adjusted.

Yeah.  It should test _ARCH_PPCSQ.  I'll make a patch.

> Using -mcpu=X for sqrt_insn is likely undesirable but for this testcase would
> work (it would make testing with, say, -mcpu=power4 not work).

Works differently on different dejagnu versions, which is why we have
the -mdejagnu=cpu= kludge.

> So I'd
> say as alternative to Alex patch you could adjust
> 
> # Return 1 if the target supports hardware square root instructions.
> 
> proc check_effective_target_sqrt_insn { } {
>     return [check_cached_effective_target sqrt_insn {
>       expr { [istarget i?86-*-*] || [istarget x86_64-*-*]
>              || [istarget powerpc*-*-*]
>              || [istarget aarch64*-*-*]
>              || ([istarget arm*-*-*] && [check_effective_target_arm_vfp_ok])
>              || ([istarget s390*-*-*]
>                  && [check_effective_target_s390_vx])
>              || [istarget amdgcn-*-*] }}]
> }
> 
> to only say yes in case the selected CPU supports sqrt.

Right, replace

  || [istarget powerpc*-*-*]

with

  || [check_effective_target_powerpc_sqrt]

(and define that :-) )


Segher

Reply via email to