re PR target/54089 ([SH] Refactor shift patterns)
authorOleg Endo <olegendo@gcc.gnu.org>
Mon, 10 Sep 2012 20:35:25 +0000 (20:35 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Mon, 10 Sep 2012 20:35:25 +0000 (20:35 +0000)
commitaadb5b43aed03688d8dd9875de09b8e1e65cb989
tree438d32c35f3976d35bb70d589d71f65510a0510e
parentd5d66749a315a4f515f0d77d2a4f74aa19697d64
re PR target/54089 ([SH] Refactor shift patterns)

PR target/54089
* config/sh/sh.h (SH_DYNAMIC_SHIFT_COST): Set always to 1 if
dynamic shifts are available.
(SHIFT_COUNT_TRUNCATED): Always define to 0.  Correct comment.
* config/sh/sh.c (ashl_lshr_seq, ext_ashl_lshr_seq): Add comments.
* config/sh/predicates.md (shift_count_operand): Allow
arith_reg_operand even if TARGET_DYNSHIFT is false.
* config/sh/sh.md (ashlsi3, lshrsi3): Expand library call patterns
if needed.
(ashlsi3_d_call, lshrsi3_d_call): New insns.

PR target/54089
* config/sh/lib1funcs.S (ashlsi3): Reimplement as ashlsi3_r0.
(lshrsi3): Reimplement as lshrsi3_r0.

PR target/54089
* gcc.target/sh/pr54089-3.c: New.

From-SVN: r191161
gcc/ChangeLog
gcc/config/sh/predicates.md
gcc/config/sh/sh.c
gcc/config/sh/sh.h
gcc/config/sh/sh.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sh/pr54089-3.c [new file with mode: 0644]
libgcc/ChangeLog
libgcc/config/sh/lib1funcs.S