2000-09-26 Dave Brolley <brolley@redhat.com>
authorDave Brolley <brolley@redhat.com>
Tue, 26 Sep 2000 17:23:58 +0000 (17:23 +0000)
committerDave Brolley <brolley@redhat.com>
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 e7407ed..a45804e 100644 (file)
@@ -321,6 +321,74 @@ 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;