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]

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


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68664

--- Comment #18 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Author: segher
Date: Mon Feb  6 19:19:49 2017
New Revision: 245215

URL: https://gcc.gnu.org/viewcvs?rev=245215&root=gcc&view=rev
Log:
sched: Do not move expensive insns speculatively (PR68664)

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.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/rs6000/rs6000.c
    trunk/gcc/doc/tm.texi
    trunk/gcc/doc/tm.texi.in
    trunk/gcc/sched-rgn.c
    trunk/gcc/target.def

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