[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 01/10] qemu/int128: avoid undefined behavior in int128_lshift
From: |
Lucas Mateus Castro(alqotel) |
Subject: |
[PATCH 01/10] qemu/int128: avoid undefined behavior in int128_lshift |
Date: |
Wed, 30 Mar 2022 17:25:06 -0300 |
From: Matheus Ferst <matheus.ferst@eldorado.org.br>
Avoid the left shift of negative values in int128_lshift by casting
a/a.hi to unsigned.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br>
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br>
---
include/qemu/int128.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/qemu/int128.h b/include/qemu/int128.h
index 2c4064256c..2a19558ac6 100644
--- a/include/qemu/int128.h
+++ b/include/qemu/int128.h
@@ -85,7 +85,7 @@ static inline Int128 int128_rshift(Int128 a, int n)
static inline Int128 int128_lshift(Int128 a, int n)
{
- return a << n;
+ return (__uint128_t)a << n;
}
static inline Int128 int128_add(Int128 a, Int128 b)
@@ -305,7 +305,7 @@ static inline Int128 int128_lshift(Int128 a, int n)
if (n >= 64) {
return int128_make128(0, l);
} else if (n > 0) {
- return int128_make128(l, (a.hi << n) | (a.lo >> (64 - n)));
+ return int128_make128(l, ((uint64_t)a.hi << n) | (a.lo >> (64 - n)));
}
return a;
}
--
2.31.1
- [PATCH 00/10] VDIV/VMOD Implementation, Lucas Mateus Castro(alqotel), 2022/03/30
- [PATCH 01/10] qemu/int128: avoid undefined behavior in int128_lshift,
Lucas Mateus Castro(alqotel) <=
- [PATCH 02/10] qemu/int128: add int128_urshift, Lucas Mateus Castro(alqotel), 2022/03/30
- [PATCH 03/10] target/ppc: Implemented vector divide instructions, Lucas Mateus Castro(alqotel), 2022/03/30
- [PATCH 04/10] target/ppc: Implemented vector divide quadword, Lucas Mateus Castro(alqotel), 2022/03/30
- [PATCH 05/10] target/ppc: Implemented vector divide extended word, Lucas Mateus Castro(alqotel), 2022/03/30
- [PATCH 06/10] Implemented unsigned 256-by-128 division, Lucas Mateus Castro(alqotel), 2022/03/30
- [PATCH 07/10] Implemented signed 256-by-128 division, Lucas Mateus Castro(alqotel), 2022/03/30