From e0f19bd096a6151cbb45790588589de72a7d60e9 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Mon, 12 Nov 2001 18:20:59 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ 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 + * 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 + * 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; -- 2.7.4