Merged RV64IMFD extensions to master branch
This commit is contained in:
@@ -78,16 +78,18 @@ inline uint32_t sext32(uint32_t word, uint32_t width) {
|
||||
return ((word >> (width - 1)) & 0x1) ? (word | ~mask) : word;
|
||||
}
|
||||
|
||||
inline uint32_t sext64(uint64_t word, uint32_t width) {
|
||||
inline uint64_t sext64(uint64_t word, uint64_t width) {
|
||||
assert(width > 1);
|
||||
assert(width <= 64);
|
||||
uint64_t mask = (1 << width) - 1;
|
||||
return ((word >> (width - 1)) & 0x1) ? (word | ~mask) : word;
|
||||
uint64_t unity = 1;
|
||||
uint64_t mask = (unity << width) - 0x1;
|
||||
return ((word >> (width - 0x1)) & 0x1) ? (word | ~mask) : word;
|
||||
}
|
||||
|
||||
inline uint32_t sext128(__uint128_t word, uint32_t width) {
|
||||
inline __uint128_t sext128(__uint128_t word, uint32_t width) {
|
||||
assert(width > 1);
|
||||
assert(width <= 128);
|
||||
uint128_t mask = (1 << width) - 1;
|
||||
__uint128_t unity = 1;
|
||||
__uint128_t mask = (unity << width) - 1;
|
||||
return ((word >> (width - 1)) & 0x1) ? (word | ~mask) : word;
|
||||
}
|
||||
Reference in New Issue
Block a user