* gencode.c (tab): For shad snd shld, fix result for
authorJoern Rennecke <joern.rennecke@embecosm.com>
Wed, 18 Aug 2004 11:47:15 +0000 (11:47 +0000)
committerJoern Rennecke <joern.rennecke@embecosm.com>
Wed, 18 Aug 2004 11:47:15 +0000 (11:47 +0000)
(op1 < 0 && shift_amount == 0).

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

index 549e49976ba026e477e6c1ed277b0b9ee6a60a8e..10b4ae217101bf9189973d2b8f153f5cafccf62f 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-18  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * gencode.c (tab): For shad snd shld, fix result for
+       (op1 < 0 && shift_amount == 0).
+
 2004-02-02  Michael Snyder  <msnyder@redhat.com>
 
        * gencode.c (movua.l): Set thislock to 0, not n.
index 33475918704f7b2dddb09c8529fe5e2c9d1d82bb..155138a2daf7e9649c4ae0a3ba04f1050149178a 100644 (file)
@@ -1054,7 +1054,7 @@ op tab[] =
   },
 
   { "n", "mn", "shad <REG_M>,<REG_N>", "0100nnnnmmmm1100",
-    "R[n] = (R[m] < 0) ? (R[n] >> ((-R[m])&0x1f)) : (R[n] << (R[m] & 0x1f));",
+    "R[n] = (R[m] < 0) ? (R[m]&0x1f ? R[n] >> ((-R[m])&0x1f) : R[n] >> 31) : (R[n] << (R[m] & 0x1f));",
   },
 
   { "n", "n", "shal <REG_N>", "0100nnnn00100000",
@@ -1068,7 +1068,7 @@ op tab[] =
   },
 
   { "n", "mn", "shld <REG_M>,<REG_N>", "0100nnnnmmmm1101",
-    "R[n] = (R[m] < 0) ? (UR[n] >> ((-R[m])&0x1f)): (R[n] << (R[m] & 0x1f));",
+    "R[n] = (R[m] < 0) ? (R[m]&0x1f ? UR[n] >> ((-R[m])&0x1f) : 0): (R[n] << (R[m] & 0x1f));",
   },
 
   { "n", "n", "shll <REG_N>", "0100nnnn00000000",