forked from Imagelibrary/binutils-gdb
Add {LS,MS}SEXT and {LS,MS}INSERTED macros. Eliminates bug in SEXT.
This commit is contained in:
@@ -391,11 +391,27 @@ INLINE_SIM_BITS(unsigned_word) MSEXTRACTED (unsigned_word val, int start, int st
|
||||
|
||||
/* move a group of bits around */
|
||||
|
||||
INLINE_SIM_BITS(unsigned16) INSERTED16 (unsigned16 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned32) INSERTED32 (unsigned32 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned64) INSERTED64 (unsigned64 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned16) LSINSERTED16 (unsigned16 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned32) LSINSERTED32 (unsigned32 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned64) LSINSERTED64 (unsigned64 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned_word) LSINSERTED (unsigned_word val, int start, int stop);
|
||||
|
||||
INLINE_SIM_BITS(unsigned_word) INSERTED (unsigned_word val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned16) MSINSERTED16 (unsigned16 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned32) MSINSERTED32 (unsigned32 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned64) MSINSERTED64 (unsigned64 val, int start, int stop);
|
||||
INLINE_SIM_BITS(unsigned_word) MSINSERTED (unsigned_word val, int start, int stop);
|
||||
|
||||
#if (WITH_TARGET_WORD_MSB == 0)
|
||||
#define INSERTED16 MSINSERTED16
|
||||
#define INSERTED32 MSINSERTED32
|
||||
#define INSERTED64 MSINSERTED64
|
||||
#define INSERTED MSINSERTED
|
||||
#else
|
||||
#define INSERTED16 LSINSERTED16
|
||||
#define INSERTED32 LSINSERTED32
|
||||
#define INSERTED64 LSINSERTED64
|
||||
#define INSERTED LSINSERTED
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -464,11 +480,27 @@ INLINE_SIM_BITS(unsigned64) ROTR64 (unsigned64 val, int shift);
|
||||
|
||||
/* Sign extension operations */
|
||||
|
||||
INLINE_SIM_BITS(unsigned16) SEXT16 (signed16 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned32) SEXT32 (signed32 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned64) SEXT64 (signed64 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned16) LSSEXT16 (signed16 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned32) LSSEXT32 (signed32 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned64) LSSEXT64 (signed64 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned_word) LSSEXT (signed_word val, int sign_bit);
|
||||
|
||||
INLINE_SIM_BITS(unsigned_word) SEXT (signed_word val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned16) MSSEXT16 (signed16 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned32) MSSEXT32 (signed32 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned64) MSSEXT64 (signed64 val, int sign_bit);
|
||||
INLINE_SIM_BITS(unsigned_word) MSSEXT (signed_word val, int sign_bit);
|
||||
|
||||
#if (WITH_TARGET_WORD_MSB == 0)
|
||||
#define SEXT16 MSSEXT16
|
||||
#define SEXT32 MSSEXT32
|
||||
#define SEXT64 MSSEXT64
|
||||
#define SEXT MSSEXT
|
||||
#else
|
||||
#define SEXT16 LSSEXT16
|
||||
#define SEXT32 LSSEXT32
|
||||
#define SEXT64 LSSEXT64
|
||||
#define SEXT LSSEXT
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user