diff options
author | Kazu Hirata <kazu@hxi.com> | 2001-11-12 18:20:59 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2001-11-12 18:20:59 +0000 |
commit | e0f19bd096a6151cbb45790588589de72a7d60e9 (patch) | |
tree | 689ad7f972ed9475dccdfa1c9d62b239c89991b6 | |
parent | abfc1ef6079534411cab0dbfe6118c3971fb592c (diff) | |
download | gcc-e0f19bd096a6151cbb45790588589de72a7d60e9.zip gcc-e0f19bd096a6151cbb45790588589de72a7d60e9.tar.gz gcc-e0f19bd096a6151cbb45790588589de72a7d60e9.tar.bz2 |
h8300.c (shift_alg_qi): Use rotations when doing 6-bit logical shifts on H8/S.
* config/h8300/h8300.c (shift_alg_qi): Use rotations when
doing 6-bit logical shifts on H8/S.
(shift_alg_qi): Use special code for 21-bit shifts on H8/S.
(get_shift_alg): Generate special code for 21-bit shifts on
H8/S.
From-SVN: r46961
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.c | 12 |
2 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e1c508a..49a9004 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2001-11-12 Kazu Hirata <kazu@hxi.com> + * config/h8300/h8300.c (shift_alg_qi): Use rotations when + doing 6-bit logical shifts on H8/S. + (shift_alg_qi): Use special code for 21-bit shifts on H8/S. + (get_shift_alg): Generate special code for 21-bit shifts on + H8/S. + +2001-11-12 Kazu Hirata <kazu@hxi.com> + * config/h8300/h8300.c (get_shift_alg): Remove a redundant label. diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c index e4d81ba..29559bb 100644 --- a/gcc/config/h8300/h8300.c +++ b/gcc/config/h8300/h8300.c @@ -2183,8 +2183,8 @@ static const enum shift_alg shift_alg_qi[3][3][8] = { { /* TARGET_H8300S */ /* 0 1 2 3 4 5 6 7 */ - { INL, INL, INL, INL, INL, INL, INL, ROT }, /* SHIFT_ASHIFT */ - { INL, INL, INL, INL, INL, INL, INL, ROT }, /* SHIFT_LSHIFTRT */ + { INL, INL, INL, INL, INL, INL, ROT, ROT }, /* SHIFT_ASHIFT */ + { INL, INL, INL, INL, INL, INL, ROT, ROT }, /* SHIFT_LSHIFTRT */ { INL, INL, INL, INL, INL, INL, INL, SPC } /* SHIFT_ASHIFTRT */ } }; @@ -2272,15 +2272,15 @@ static const enum shift_alg shift_alg_si[3][3][32] = { /* 24 25 26 27 28 29 30 31 */ { INL, INL, INL, INL, INL, INL, INL, INL, INL, INL, INL, LOP, LOP, LOP, LOP, LOP, - SPC, SPC, SPC, SPC, SPC, LOP, LOP, LOP, + SPC, SPC, SPC, SPC, SPC, SPC, LOP, LOP, SPC, LOP, LOP, LOP, ROT, ROT, ROT, ROT }, /* SHIFT_ASHIFT */ { INL, INL, INL, INL, INL, INL, INL, INL, INL, INL, INL, LOP, LOP, LOP, LOP, LOP, - SPC, SPC, SPC, SPC, SPC, LOP, LOP, LOP, + SPC, SPC, SPC, SPC, SPC, SPC, LOP, LOP, SPC, LOP, LOP, LOP, ROT, ROT, ROT, ROT }, /* SHIFT_LSHIFTRT */ { INL, INL, INL, INL, INL, INL, INL, INL, INL, INL, INL, LOP, LOP, LOP, LOP, LOP, - SPC, SPC, SPC, SPC, SPC, LOP, LOP, LOP, + SPC, SPC, SPC, SPC, SPC, SPC, LOP, LOP, SPC, LOP, LOP, LOP, LOP, LOP, LOP, SPC }, /* SHIFT_ASHIFTRT */ } }; @@ -2516,7 +2516,7 @@ get_shift_alg (shift_type, shift_mode, count, info) } else if ((TARGET_H8300 && count == 16) || (TARGET_H8300H && 16 <= count && count <= 19) - || (TARGET_H8300S && 16 <= count && count <= 20)) + || (TARGET_H8300S && 16 <= count && count <= 21)) { info->remainder = count - 16; |