diff options
author | Claudiu Zissulescu <claziss@synopsys.com> | 2017-09-01 13:43:51 +0200 |
---|---|---|
committer | Claudiu Zissulescu <claziss@gcc.gnu.org> | 2017-09-01 13:43:51 +0200 |
commit | a2de90a45a9193cb19a5837110698fe59d6deb41 (patch) | |
tree | efe25ca85f6d3a5f7496251262247e817b30cc0e /gcc/config/arc/arc-c.c | |
parent | 782bdf21895dc769cfd85a08c8c1b780924775f3 (diff) | |
download | gcc-a2de90a45a9193cb19a5837110698fe59d6deb41.zip gcc-a2de90a45a9193cb19a5837110698fe59d6deb41.tar.gz gcc-a2de90a45a9193cb19a5837110698fe59d6deb41.tar.bz2 |
[ARC] Reimplement ZOL support.
2017-05-22 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define.
* config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define.
(arc_conditional_register_usage): Remove ARC600 lp_count
exception.
(arc_file_start): Emit Tag_ARC_CPU_variation.
(arc_can_use_doloop_p): New conditions to use ZOLs.
(hwloop_fail): New function.
(hwloop_optimize): Likewise.
(hwloop_pattern_reg): Likewise.
(arc_doloop_hooks): New struct, to be used with reorg_loops.
(arc_reorg_loops): New function, calls reorg_loops.
(arc_reorg): Call arc_reorg_loops. Remove old ZOL handling.
(arc600_corereg_hazard): Remove ZOL checking, case handled by
hwloop_optimize.
(arc_loop_hazard): Remove function, functionality moved into
hwloop_optimize.
(arc_hazard): Remove arc_loop_hazard call.
(arc_adjust_insn_length): Remove ZOL handling, functionality moved
into hwloop_optimize.
(arc_label_align): Remove ZOL handling.
* config/arc/arc.h (LOOP_ALIGN): Changed to 0.
* config/arc/arc.md (doloop_begin): Remove pattern.
(doloop_begin_i): Likewise.
(doloop_end_i): Likewise.
(doloop_fallback): Likewise.
(doloop_fallback_m): Likewise.
(doloop_end): Reimplement expand.
(arc_lp): New pattern for LP instruction.
(loop_end): New pattern.
(loop_fail): Likewise.
(decrement_and_branch_until_zero): Likewise.
* config/arc/arc.opt (mlpc-width): New option.
* doc/invoke.texi (mlpc-width): Document option.
testsuite/
2017-05-22 Claudiu Zissulescu <claziss@synopsys.com>
* gcc.target/arc/loop-1.c: Deleted.
From-SVN: r251589
Diffstat (limited to 'gcc/config/arc/arc-c.c')
-rw-r--r-- | gcc/config/arc/arc-c.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/config/arc/arc-c.c b/gcc/config/arc/arc-c.c index de877a1..44ff338 100644 --- a/gcc/config/arc/arc-c.c +++ b/gcc/config/arc/arc-c.c @@ -62,6 +62,8 @@ arc_cpu_cpp_builtins (cpp_reader * pfile) builtin_define_with_int_value ("__ARC_TLS_REGNO__", arc_tp_regno); + builtin_define_with_int_value ("__ARC_LPC_WIDTH__", arc_lpcwidth); + builtin_define (TARGET_BIG_ENDIAN ? "__BIG_ENDIAN__" : "__LITTLE_ENDIAN__"); if (TARGET_BIG_ENDIAN) |