[Bug rtl-optimization/68664] [6/7 Regression] Speculative sqrt in c-ray main loop causes large slow down

Jan Hubicka hubicka@ucw.cz
Mon Feb 6 21:14:00 GMT 2017


> Scheduling should never move very expensive instructions to places they
> are executed more frequently.  This patch fixes that, reducing the
> execution time of c-ray by over 40% (I tested on a BE Power7 system).
> 
> This introduces a new target hook sched.can_speculate_insn which returns
> whether the scheduler is allowed to speculate a given instruction.  The
> rs6000 implementation disallows all divide and square root instructions.
> 
> 
>         PR rtl-optimization/68664
>         * target.def (can_speculate_insn): New hook.
>         * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook.
>         * doc/tm.texi: Regenerate.
>         * sched-rgn.c (can_schedule_ready_p): Use the new hook.
>         * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro.
>         (rs6000_sched_can_speculate_insn): New function.

There was also regression on cray for x86-64
https://gcc.opensuse.org/c++bench-czerny/c-ray/
Is it the same issue?

Also with profile feedback perhaps you have enough info to tell that the
speculative path is almost as likely as the original placement.

I wonder if we can provie resonable default by RTX cost...

Honza



More information about the Gcc-bugs mailing list