Message ID | 20210910112624.72748-3-luis.pires@eldorado.org.br |
---|---|
State | New |
Headers | show |
Series | target/ppc: DFP instructions using decodetree | expand |
On 9/10/21 4:26 AM, Luis Pires wrote: > *plow (lower 64 bits of the dividend) is passed into divs128() as > a signed 64-bit integer. When building an __int128_t from it, it > must be zero-extended, instead of sign-extended. > > Suggested-by: Richard Henderson<richard.henderson@linaro.org> > Signed-off-by: Luis Pires<luis.pires@eldorado.org.br> > --- > include/qemu/host-utils.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/include/qemu/host-utils.h b/include/qemu/host-utils.h index 711b221704..753b9fb89f 100644 --- a/include/qemu/host-utils.h +++ b/include/qemu/host-utils.h @@ -70,7 +70,7 @@ static inline int divs128(int64_t *plow, int64_t *phigh, int64_t divisor) if (divisor == 0) { return 1; } else { - __int128_t dividend = ((__int128_t)*phigh << 64) | *plow; + __int128_t dividend = ((__int128_t)*phigh << 64) | (uint64_t)*plow; __int128_t result = dividend / divisor; *plow = result; *phigh = dividend % divisor;
*plow (lower 64 bits of the dividend) is passed into divs128() as a signed 64-bit integer. When building an __int128_t from it, it must be zero-extended, instead of sign-extended. Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Luis Pires <luis.pires@eldorado.org.br> --- include/qemu/host-utils.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)