This commit was generated by cvs2svn to track changes on a CVS vendor
[deliverable/binutils-gdb.git] / sim / common / sim-n-bits.h
index 996095a96e755bc60fadbeb65d49f529103f39f6..83157fff05a503a43dfaa13f631dc3cf093d7e84 100644 (file)
@@ -24,7 +24,7 @@
 #error "N must be #defined"
 #endif
 
-#include "sim-xcat.h"
+#include "symcat.h"
 
 #if defined(__STDC__) && defined(signed)
 /* If signed were defined to be say __signed (ie, some versions of Linux),
 /* NOTE: See end of file for #undef */
 #define unsignedN XCONCAT2(unsigned,N)
 #define signedN XCONCAT2(signed,N)
-#define MASKn XCONCAT2(MASK,N)
-#define LSMASKEDn XCONCAT2(LSMASKED,N)
 #define LSMASKn XCONCAT2(LSMASK,N)
-#define MSMASKEDn XCONCAT2(MSMASKED,N)
 #define MSMASKn XCONCAT2(MSMASK,N)
+#define LSMASKEDn XCONCAT2(LSMASKED,N)
+#define MSMASKEDn XCONCAT2(MSMASKED,N)
 #define LSEXTRACTEDn XCONCAT2(LSEXTRACTED,N)
 #define MSEXTRACTEDn XCONCAT2(MSEXTRACTED,N)
-#define INSERTEDn XCONCAT2(INSERTED,N)
+#define LSINSERTEDn XCONCAT2(LSINSERTED,N)
+#define MSINSERTEDn XCONCAT2(MSINSERTED,N)
 #define ROTn XCONCAT2(ROT,N)
 #define ROTLn XCONCAT2(ROTL,N)
 #define ROTRn XCONCAT2(ROTR,N)
-#define SEXTn XCONCAT2(SEXT,N)
+#define MSSEXTn XCONCAT2(MSSEXT,N)
+#define LSSEXTn XCONCAT2(LSSEXT,N)
 
 /* TAGS: LSMASKED16 LSMASKED32 LSMASKED64 */
 
@@ -99,16 +100,29 @@ MSEXTRACTEDn (unsignedN val,
   return val;
 }
 
-/* TAGS: INSERTED16 INSERTED32 INSERTED64 */
+/* TAGS: LSINSERTED16 LSINSERTED32 LSINSERTED64 */
 
 INLINE_SIM_BITS\
 (unsignedN)
-INSERTEDn (unsignedN val,
-          int start,
-          int stop)
+LSINSERTEDn (unsignedN val,
+            int start,
+            int stop)
 {
-  val <<= _LSB_SHIFT (N, stop);
-  val &= MASKn (start, stop);
+  val <<= stop;
+  val &= LSMASKn (start, stop);
+  return val;
+}
+
+/* TAGS: MSINSERTED16 MSINSERTED32 MSINSERTED64 */
+
+INLINE_SIM_BITS\
+(unsignedN)
+MSINSERTEDn (unsignedN val,
+            int start,
+            int stop)
+{
+  val <<= ((N - 1) - stop);
+  val &= MSMASKn (start, stop);
   return val;
 }
 
@@ -153,35 +167,52 @@ ROTRn (unsignedN val,
   return result;
 }
 
-/* TAGS: SEXT16 SEXT32 SEXT64 */
+/* TAGS: LSSEXT16 LSSEXT32 LSSEXT64 */
+
+INLINE_SIM_BITS\
+(unsignedN)
+LSSEXTn (signedN val,
+        int sign_bit)
+{
+  int shift;
+  /* make the sign-bit most significant and then smear it back into
+     position */
+  ASSERT (sign_bit < N);
+  shift = ((N - 1) - sign_bit);
+  val <<= shift;
+  val >>= shift;
+  return val;
+}
+
+/* TAGS: MSSEXT16 MSSEXT32 MSSEXT64 */
 
 INLINE_SIM_BITS\
 (unsignedN)
-SEXTn (signedN val,
-       int sign_bit)
+MSSEXTn (signedN val,
+        int sign_bit)
 {
   /* make the sign-bit most significant and then smear it back into
      position */
   ASSERT (sign_bit < N);
-  val <<= _MSB_SHIFT (N, sign_bit);
-  val >>= _MSB_SHIFT (N, sign_bit);
+  val <<= sign_bit;
+  val >>= sign_bit;
   return val;
 }
 
 
 /* NOTE: See start of file for #define */
-#undef SEXTn
+#undef LSSEXTn
+#undef MSSEXTn
 #undef ROTLn
 #undef ROTRn
 #undef ROTn
-#undef INSERTEDn
+#undef LSINSERTEDn
+#undef MSINSERTEDn
 #undef LSEXTRACTEDn
 #undef MSEXTRACTEDn
 #undef LSMASKEDn
 #undef LSMASKn
 #undef MSMASKEDn
 #undef MSMASKn
-#undef MASKn
-#undef MASKEDn
 #undef signedN
 #undef unsignedN
This page took 0.024836 seconds and 4 git commands to generate.