[ARC] Handle store cacheline hazard.
authorClaudiu Zissulescu <claziss@synopsys.com>
Wed, 31 Oct 2018 11:27:46 +0000 (12:27 +0100)
committerClaudiu Zissulescu <claziss@gcc.gnu.org>
Wed, 31 Oct 2018 11:27:46 +0000 (12:27 +0100)
commit635aeaa20ffdf6e794f180cc8e053e8dc46db760
treeca53d051f9bcfe311d00dfe37c8bae70900042e0
parentaac1c11ce4edd9c2e6af7e9ee8abcaba98d8741f
[ARC] Handle store cacheline hazard.

Handle store cacheline hazard for A700 cpus by inserting two NOP_S
between ST ST LD or their logical equivalent (like ST ST NOP_S NOP_S
J_L.D LD)

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

        * config/arc/arc-arch.h (ARC_TUNE_ARC7XX): New tune value.
        * config/arc/arc.c (arc_active_insn): New function.
        (check_store_cacheline_hazard): Likewise.
        (workaround_arc_anomaly): Use check_store_cacheline_hazard.
        (arc_override_options): Disable delay slot scheduler for older
        A7.
        (arc_store_addr_hazard_p): New implementation, old one renamed to
        ...
        (arc_store_addr_hazard_internal_p): Renamed.
        (arc_reorg): Don't combine into brcc instructions which are part
        of hardware hazard solution.
        * config/arc/arc.md (attr tune): Consider new arc7xx tune value.
        (tune_arc700): Likewise.
        * config/arc/arc.opt (arc7xx): New tune value.
        * config/arc/arc700.md: Improve A7 scheduler.

From-SVN: r265676
gcc/ChangeLog
gcc/config/arc/arc-arch.h
gcc/config/arc/arc.c
gcc/config/arc/arc.md
gcc/config/arc/arc.opt
gcc/config/arc/arc700.md