mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-02-01 23:21:08 +00:00
qemu/int128: Add int128_lshift
Add left-shift to match the existing right-shift. Backports 5be4dd043f5beb5e7587d1ef8dd4e3716ec05639
This commit is contained in:
parent
6f341e0199
commit
234a22803d
|
@ -70,6 +70,11 @@ static inline Int128 int128_add(Int128 a, Int128 b)
|
|||
return a + b;
|
||||
}
|
||||
|
||||
static inline Int128 int128_lshift(Int128 a, int n)
|
||||
{
|
||||
return a << n;
|
||||
}
|
||||
|
||||
static inline Int128 int128_neg(Int128 a)
|
||||
{
|
||||
return -a;
|
||||
|
@ -226,6 +231,17 @@ static inline Int128 int128_rshift(Int128 a, int n)
|
|||
}
|
||||
}
|
||||
|
||||
static inline Int128 int128_lshift(Int128 a, int n)
|
||||
{
|
||||
uint64_t l = a.lo << (n & 63);
|
||||
if (n >= 64) {
|
||||
return int128_make128(0, l);
|
||||
} else if (n > 0) {
|
||||
return int128_make128(l, (a.hi << n) | (a.lo >> (64 - n)));
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
static inline Int128 int128_add(Int128 a, Int128 b)
|
||||
{
|
||||
uint64_t lo = a.lo + b.lo;
|
||||
|
|
Loading…
Reference in a new issue