qemu/int128: Add int128_lshift

Add left-shift to match the existing right-shift.

Backports 5be4dd043f5beb5e7587d1ef8dd4e3716ec05639
This commit is contained in:
Richard Henderson 2021-02-26 13:45:41 -05:00 committed by Lioncash
parent 6f341e0199
commit 234a22803d

View file

@ -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;