aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazu Hirata <kazu@hxi.com>2001-11-12 18:20:59 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2001-11-12 18:20:59 +0000
commite0f19bd096a6151cbb45790588589de72a7d60e9 (patch)
tree689ad7f972ed9475dccdfa1c9d62b239c89991b6
parentabfc1ef6079534411cab0dbfe6118c3971fb592c (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config/h8300/h8300.c12
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;