OSDN Git Service

2000-09-26 Dave Brolley <brolley@redhat.com>
authorbrolley <brolley>
Tue, 26 Sep 2000 17:23:58 +0000 (17:23 +0000)
committerbrolley <brolley>
Tue, 26 Sep 2000 17:23:58 +0000 (17:23 +0000)
* cgen-utils.c (RORQI): New function.
(ROLQI): New function.
(RORHI): New function.
(ROLHI): New function.

sim/common/ChangeLog
sim/common/cgen-utils.c

index 3f13ea6..4b43e06 100644 (file)
@@ -1,3 +1,10 @@
+2000-09-26  Dave Brolley  <brolley@redhat.com>
+
+       * cgen-utils.c (RORQI): New function.
+       (ROLQI): New function.
+       (RORHI): New function.
+       (ROLHI): New function.
+
 2000-08-28  Dave Brolley  <brolley@redhat.com>
 
        * cgen-trace.c (sim_cgen_disassemble_insn): Make sure entire insn is
index 2faff5c..a45804e 100644 (file)
@@ -32,7 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define min(a,b) ((a) < (b) ? (a) : (b))
 
 const char *mode_names[] = {
-  "VM",
+  "VOID",
   "BI",
   "QI",
   "HI",
@@ -59,28 +59,22 @@ const char *mode_names[] = {
 static const CGEN_IBASE virtual_insn_entries[] =
 {
   {
-    VIRTUAL_INSN_X_INVALID, "--invalid--", NULL, 0,
-    { CGEN_INSN_NBOOL_ATTRS, V, { 0 } }
+    VIRTUAL_INSN_X_INVALID, "--invalid--", NULL, 0, { V, { 0 } }
   },
   {
-    VIRTUAL_INSN_X_BEFORE, "--before--", NULL, 0,
-    { CGEN_INSN_NBOOL_ATTRS, V, { 0 } }
+    VIRTUAL_INSN_X_BEFORE, "--before--", NULL, 0, { V, { 0 } }
   },
   {
-    VIRTUAL_INSN_X_AFTER, "--after--", NULL, 0,
-    { CGEN_INSN_NBOOL_ATTRS, V, { 0 } }
+    VIRTUAL_INSN_X_AFTER, "--after--", NULL, 0, { V, { 0 } }
   },
   {
-    VIRTUAL_INSN_X_BEGIN, "--begin--", NULL, 0,
-    { CGEN_INSN_NBOOL_ATTRS, V, { 0 } }
+    VIRTUAL_INSN_X_BEGIN, "--begin--", NULL, 0, { V, { 0 } }
   },
   {
-    VIRTUAL_INSN_X_CHAIN, "--chain--", NULL, 0,
-    { CGEN_INSN_NBOOL_ATTRS, V, { 0 } }
+    VIRTUAL_INSN_X_CHAIN, "--chain--", NULL, 0, { V, { 0 } }
   },
   {
-    VIRTUAL_INSN_X_CTI_CHAIN, "--cti-chain--", NULL, 0,
-    { CGEN_INSN_NBOOL_ATTRS, V, { 0 } }
+    VIRTUAL_INSN_X_CTI_CHAIN, "--cti-chain--", NULL, 0, { V, { 0 } }
   }
 };
 
@@ -326,3 +320,106 @@ CONVDISI (val)
 }
 
 #endif /* DI_FN_SUPPORT */
+\f
+QI
+RORQI (val, shift)
+     QI  val;
+     int shift;
+{
+  if (shift != 0)
+    {
+      int remain = 8 - shift;
+      int mask = (1 << shift) - 1;
+      QI result = (val & mask) << remain;
+      mask = (1 << remain) - 1;
+      result |= (val >> shift) & mask;
+      return result;
+    }
+  return val;
+}
+
+QI
+ROLQI (val, shift)
+     QI  val;
+     int shift;
+{
+  if (shift != 0)
+    {
+      int remain = 8 - shift;
+      int mask = (1 << remain) - 1;
+      QI result = (val & mask) << shift;
+      mask = (1 << shift) - 1;
+      result |= (val >> remain) & mask;
+      return result;
+    }
+  return val;
+}
+
+HI
+RORHI (val, shift)
+     HI  val;
+     int shift;
+{
+  if (shift != 0)
+    {
+      int remain = 16 - shift;
+      int mask = (1 << shift) - 1;
+      HI result = (val & mask) << remain;
+      mask = (1 << remain) - 1;
+      result |= (val >> shift) & mask;
+      return result;
+    }
+  return val;
+}
+
+HI
+ROLHI (val, shift)
+     HI  val;
+     int shift;
+{
+  if (shift != 0)
+    {
+      int remain = 16 - shift;
+      int mask = (1 << remain) - 1;
+      HI result = (val & mask) << shift;
+      mask = (1 << shift) - 1;
+      result |= (val >> remain) & mask;
+      return result;
+    }
+  return val;
+}
+
+SI
+RORSI (val, shift)
+     SI  val;
+     int shift;
+{
+  if (shift != 0)
+    {
+      int remain = 32 - shift;
+      int mask = (1 << shift) - 1;
+      SI result = (val & mask) << remain;
+      mask = (1 << remain) - 1;
+      result |= (val >> shift) & mask;
+      return result;
+    }
+  return val;
+}
+
+SI
+ROLSI (val, shift)
+     SI  val;
+     int shift;
+{
+  if (shift != 0)
+    {
+      int remain = 32 - shift;
+      int mask = (1 << remain) - 1;
+      SI result = (val & mask) << shift;
+      mask = (1 << shift) - 1;
+      result |= (val >> remain) & mask;
+      return result;
+    }
+
+  return val;
+}