]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/config/arc/arc.cc
[ARC] Improve code gen when compiling for size
authorClaudiu Zissulescu <claziss@synopsys.com>
Mon, 10 Jun 2019 08:25:25 +0000 (10:25 +0200)
committerClaudiu Zissulescu <claziss@gcc.gnu.org>
Mon, 10 Jun 2019 08:25:25 +0000 (10:25 +0200)
commit03301dcc8402e51506e0f64ace9c83e36d2fefc7
treedda2787f645488fcba9e72e990178e02356ed37e
parent07b8d0afe8c177d096bf77c97f03f41b34bb18cb
[ARC] Improve code gen when compiling for size

When optimizing for size, try to avoid using long immediate by
employing alternative instructions.

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

        * config/arc/arc-protos.h (arc_check_ior_const): Declare.
        (arc_split_ior): Likewise.
        (arc_check_mov_const): Likewise.
        (arc_split_mov_const): Likewise.
        * config/arc/arc.c (arc_print_operand): Fix 'z' letter.
        (arc_rtx_costs): Replace check Crr with Cax constraint.
        (prepare_move_operands): Cleanup, remove unused code.
        (arc_split_ior): New function.
        (arc_check_ior_const): Likewise.
        (arc_split_mov_const): Likewise.
        (arc_check_mov_const): Likewise.
        * config/arc/arc.md (movsi_insn): Restructure it, and convert it
        in define_insn_and_split pattern.
        (iorsi3): Likewise.
        (mulsi3_v2): Add new matching variant.
        (andsi3_i): Cleanup pattern.
        (rotrsi3_cnt1): Update pattern.
        (rotrsi3_cnt8): New pattern.
        (ashlsi2_cnt8): Likewise.
        (ashlsi2_cnt16): Likewise.
        * config/arc/constraints.md (C0p): Update constraint.
        (Crr): Remove it.
        (C0x): New pattern.
        (Cax): New pattern.

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

        * gcc.target/arc/and-cnst-size.c: New test.
        * gcc.target/arc/mov-cnst-size.c: Likewise.
        * gcc.target/arc/or-cnst-size.c: Likewise.
        * gcc.target/arc/store-merge-1.c: Update test.
        * gcc.target/arc/arc700-stld-hazard.c: Likewise.
        * gcc.target/arc/cmem-1.c: Likewise.
        * gcc.target/arc/cmem-2.c: Likewise.
        * gcc.target/arc/cmem-3.c: Likewise.
        * gcc.target/arc/cmem-4.c: Likewise.
        * gcc.target/arc/cmem-5.c: Likewise.
        * gcc.target/arc/cmem-6.c: Likewise.
        * gcc.target/arc/loop-4.c: Likewise.
        * gcc.target/arc/movh_cl-1.c: Likewise.
        * gcc.target/arc/sdata-3.c: Likewise.

From-SVN: r272112
20 files changed:
gcc/ChangeLog
gcc/config/arc/arc-protos.h
gcc/config/arc/arc.c
gcc/config/arc/arc.md
gcc/config/arc/constraints.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arc/and-cnst-size.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arc/arc700-stld-hazard.c
gcc/testsuite/gcc.target/arc/cmem-1.c
gcc/testsuite/gcc.target/arc/cmem-2.c
gcc/testsuite/gcc.target/arc/cmem-3.c
gcc/testsuite/gcc.target/arc/cmem-4.c
gcc/testsuite/gcc.target/arc/cmem-5.c
gcc/testsuite/gcc.target/arc/cmem-6.c
gcc/testsuite/gcc.target/arc/loop-4.c
gcc/testsuite/gcc.target/arc/mov-cnst-size.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arc/movh_cl-1.c
gcc/testsuite/gcc.target/arc/or-cnst-size.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arc/sdata-3.c
gcc/testsuite/gcc.target/arc/store-merge-1.c