2000-12-04 Ben Elliston <bje@redhat.com>
authorBen Elliston <bje@au.ibm.com>
Mon, 4 Dec 2000 04:05:45 +0000 (04:05 +0000)
committerBen Elliston <bje@au.ibm.com>
Mon, 4 Dec 2000 04:05:45 +0000 (04:05 +0000)
* cgen-ops.h (SUBWORDSIQI): Mask off top bits.
(SUBWORDSIUQI): Likewise.
(SUBWORDDIHI): Likewise.
(SUBWORDDIQI): New function.

sim/common/ChangeLog
sim/common/cgen-ops.h

index ec82ccbcc5bfde3c39cdb0b13a933b859eafba90..074fcd7486f79b95205c34ec9812463d68c95874 100644 (file)
@@ -1,5 +1,10 @@
 2000-12-04  Ben Elliston  <bje@redhat.com>
 
+       * cgen-ops.h (SUBWORDSIQI): Mask off top bits.
+       (SUBWORDSIUQI): Likewise.
+       (SUBWORDDIHI): Likewise.
+       (SUBWORDDIQI): New function.
+
        * cgen-trace.c (disassemble_insn): Remove unused declaration.
        * cgen-scache.c (scache_option_handler): Remove unused local var.
 
index 83f4459242f1f94c8eca1555eca53965e3306e94..d829e930e757d8954b5fdfa9ce7ff383940df540 100644 (file)
@@ -323,21 +323,28 @@ SEMOPS_INLINE QI
 SUBWORDSIQI (SI in, int byte)
 {
   assert (byte >= 0 && byte <= 3);
-  return (UQI) (in >> (8 * (3 - byte)));
+  return (UQI) (in >> (8 * (3 - byte))) & 0xFF;
 }
 
 SEMOPS_INLINE UQI
 SUBWORDSIUQI (SI in, int byte)
 {
   assert (byte >= 0 && byte <= 3);
-  return (UQI) (in >> (8 * (3 - byte)));
+  return (UQI) (in >> (8 * (3 - byte))) & 0xFF;
+}
+
+SEMOPS_INLINE QI
+SUBWORDDIQI (DI in, int byte)
+{
+  assert (byte >= 0 && byte <= 7);
+  return (UQI) (in >> (8 * (7 - byte))) & 0xFF;
 }
 
 SEMOPS_INLINE HI
 SUBWORDDIHI (DI in, int word)
 {
   assert (word >= 0 && word <= 3);
-  return (UHI) (in >> (16 * (3 - word)));
+  return (UHI) (in >> (16 * (3 - word))) & 0xFFFF;
 }
 
 SEMOPS_INLINE HI
@@ -450,6 +457,7 @@ HI SUBWORDSIHI (HI);
 SI SUBWORDSFSI (SF);
 SF SUBWORDSISF (SI);
 DF SUBWORDDIDF (DI);
+QI SUBWORDDIQI (DI, int);
 HI SUBWORDDIHI (DI, int);
 SI SUBWORDDISI (DI, int);
 SI SUBWORDDFSI (DF, int);