* config/h8300/h8300.c (shift_alg_qi): Use rotations when
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 12 Nov 2001 18:20:59 +0000 (18:20 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 12 Nov 2001 18:20:59 +0000 (18:20 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46961 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/h8300/h8300.c

index e1c508a..49a9004 100644 (file)
@@ -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.
 
index e4d81ba..29559bb 100644 (file)
@@ -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;