2003-07-25 Michael Snyder <msnyder@redhat.com>
authorMichael Snyder <msnyder@vmware.com>
Fri, 25 Jul 2003 23:52:43 +0000 (23:52 +0000)
committerMichael Snyder <msnyder@vmware.com>
Fri, 25 Jul 2003 23:52:43 +0000 (23:52 +0000)
        * gencode.c (pshl): Change < to <= (shift by 16 is allowed).
        Cast argument of >> to unsigned to prevent sign extension.
        (psha): Change < to <= (shift by 32 is allowed).

sim/sh/ChangeLog
sim/sh/gencode.c

index 4e75706203bc1feb2f19022570c37577d8da3847..b34adb5cf873566a78ee05e6f43421a38f6930f6 100644 (file)
@@ -1,3 +1,9 @@
+2003-07-25  Michael Snyder  <msnyder@redhat.com>
+
+       * gencode.c (pshl): Change < to <= (shift by 16 is allowed).
+       Cast argument of >> to unsigned to prevent sign extension.
+       (psha): Change < to <= (shift by 32 is allowed).        
+
 2003-07-24  Michael Snyder  <msnyder@redhat.com>
 
        * gencode.c: Fix typo in comment.
index 495cb66fddcd652499b07d06beec437e6ec3ed25..d078fc6cca9080de4d7c161d93f34db246449876 100644 (file)
@@ -1306,10 +1306,10 @@ op ppi_tab[] =
   { "","", "pshl #<imm>,dz",   "00000iiim16.zzzz",
     "int Sz = DSP_R (z) & 0xffff0000;",
     "",
-    "if (i < 16)",
+    "if (i <= 16)",
     "  res = Sz << i;",
     "else if (i >= 128 - 16)",
-    "  res = Sz >> 128 - i;",
+    "  res = (unsigned) Sz >> 128 - i; /* no sign extension */",
     "else",
     "  {",
     "    RAISE_EXCEPTION (SIGILL);",
@@ -1323,7 +1323,7 @@ op ppi_tab[] =
     "int Sz = DSP_R (z);",
     "int Sz_grd = GET_DSP_GRD (z);",
     "",
-    "if (i < 32)",
+    "if (i <= 32)",
     "  {",
     "    if (i == 32)",
     "      {",
@@ -1525,10 +1525,10 @@ op ppi_tab[] =
     "int Sx = DSP_R (x) & 0xffff0000;",
     "int Sy = DSP_R (y) >> 16 & 0x7f;",
     "",
-    "if (Sy < 16)",
+    "if (Sy <= 16)",
     "  res = Sx << Sy;",
     "else if (Sy >= 128 - 16)",
-    "  res = Sx >> 128 - Sy;",
+    "  res = (unsigned) Sx >> 128 - Sy;        /* no sign extension */",
     "else",
     "  {",
     "    RAISE_EXCEPTION (SIGILL);",
@@ -1541,7 +1541,7 @@ op ppi_tab[] =
     "int Sx_grd = GET_DSP_GRD (x);",
     "int Sy = DSP_R (y) >> 16 & 0x7f;",
     "",
-    "if (Sy < 32)",
+    "if (Sy <= 32)",
     "  {",
     "    if (Sy == 32)",
     "      {",