This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]