[ARC] Handle store cacheline hazard.
commit44257478a8d157f8e0030bb7abe1c3ac91be9302
authorclaziss <claziss@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Oct 2018 11:27:46 +0000 (31 11:27 +0000)
committerclaziss <claziss@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Oct 2018 11:27:46 +0000 (31 11:27 +0000)
treeca53d051f9bcfe311d00dfe37c8bae70900042e0
parentc2450ffb69ccedbe4900977869133cf3bd220805
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265676 138bc75d-0d04-0410-961f-82ee72b054a4
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