From 2000-06-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
[deliverable/binutils-gdb.git] / sim / common / sim-bits.c
index a200fa50c02929fd8865f0e7fa86f60de2b05ddf..4ba0f79055c158c4093cf9ee255481a20729524d 100644 (file)
@@ -72,6 +72,17 @@ LSEXTRACTED (unsigned_word val,
       return val;
     }
 #endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+  if (stop >= 16)
+    return 0;
+  else
+    {
+      if (start < 16)
+       val &= LSMASK (start, 0);
+      val >>= stop;
+      return val;
+    }
+#endif
 }
 
 
@@ -96,6 +107,17 @@ MSEXTRACTED (unsigned_word val,
       return val;
     }
 #endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+  if (stop < 16)
+    return 0;
+  else
+    {
+      if (start >= 16)
+       val &= MSMASK (start, 64 - 1);
+      val >>= (64 - stop - 1);
+      return val;
+    }
+#endif
 }
 
 
@@ -121,6 +143,18 @@ LSINSERTED (unsigned_word val,
       return val;
     }
 #endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+  /* Bit numbers are 63..0, even for 16 bit targets.
+     On 16 bit targets we ignore 63..16  */
+  if (stop >= 16)
+    return 0;
+  else
+    {
+      val <<= stop;
+      val &= LSMASK (start, stop);
+      return val;
+    }
+#endif
 }
 
 INLINE_SIM_BITS\
@@ -145,6 +179,18 @@ MSINSERTED (unsigned_word val,
       return val;
     }
 #endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+  /* Bit numbers are 0..63, even for 16 bit targets.
+     On 16 bit targets we ignore 0..47.  */
+  if (stop < 32 + 16)
+    return 0;
+  else
+    {
+      val <<= ((64 - 1) - stop);
+      val &= MSMASK (start, stop);
+      return val;
+    }
+#endif
 }
 
 
@@ -166,6 +212,14 @@ LSSEXT (signed_word val,
     return val;
   }
 #endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+  if (sign_bit >= 16)
+    return val;
+  else {
+    val = LSSEXT16 (val, sign_bit);
+    return val;
+  }
+#endif
 }
 
 INLINE_SIM_BITS\
@@ -185,10 +239,22 @@ MSSEXT (signed_word val,
     return val;
   }
 #endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+  if (sign_bit < 32 + 16)
+    return val;
+  else {
+    val = MSSEXT16 (val, sign_bit - 32 - 16);
+    return val;
+  }
+#endif
 }
 
 
 
+#define N 8
+#include "sim-n-bits.h"
+#undef N
+
 #define N 16
 #include "sim-n-bits.h"
 #undef N
This page took 0.023758 seconds and 4 git commands to generate.