[PATCH 31/55] include/qemu/int128.h: Add function to create Int128 from int64_t

Peter Maydell posted 55 patches 4 years, 8 months ago
Maintainers: Peter Maydell <peter.maydell@linaro.org>, Richard Henderson <richard.henderson@linaro.org>
There is a newer version of this series
[PATCH 31/55] include/qemu/int128.h: Add function to create Int128 from int64_t
Posted by Peter Maydell 4 years, 8 months ago
int128_make64() creates an Int128 from an unsigned 64 bit value; add
a function int128_makes64() creating an Int128 from a signed 64 bit
value.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 include/qemu/int128.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/include/qemu/int128.h b/include/qemu/int128.h
index 52fc2384211..64500385e37 100644
--- a/include/qemu/int128.h
+++ b/include/qemu/int128.h
@@ -11,6 +11,11 @@ static inline Int128 int128_make64(uint64_t a)
     return a;
 }
 
+static inline Int128 int128_makes64(int64_t a)
+{
+    return a;
+}
+
 static inline Int128 int128_make128(uint64_t lo, uint64_t hi)
 {
     return (__uint128_t)hi << 64 | lo;
@@ -167,6 +172,11 @@ static inline Int128 int128_make64(uint64_t a)
     return (Int128) { a, 0 };
 }
 
+static inline Int128 int128_makes64(int64_t a)
+{
+    return (Int128) { a, a >> 63 };
+}
+
 static inline Int128 int128_make128(uint64_t lo, uint64_t hi)
 {
     return (Int128) { lo, hi };
-- 
2.20.1


Re: [PATCH 31/55] include/qemu/int128.h: Add function to create Int128 from int64_t
Posted by Philippe Mathieu-Daudé 4 years, 8 months ago
On 6/7/21 6:57 PM, Peter Maydell wrote:
> int128_make64() creates an Int128 from an unsigned 64 bit value; add
> a function int128_makes64() creating an Int128 from a signed 64 bit
> value.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  include/qemu/int128.h | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/include/qemu/int128.h b/include/qemu/int128.h
> index 52fc2384211..64500385e37 100644
> --- a/include/qemu/int128.h
> +++ b/include/qemu/int128.h
> @@ -11,6 +11,11 @@ static inline Int128 int128_make64(uint64_t a)
>      return a;
>  }

> +static inline Int128 int128_makes64(int64_t a)
> +{
> +    return (Int128) { a, a >> 63 };

This file would be easier to review using explicit field names:

       return (Int128) { .lo = a, .hi = a >> 63 };

Also, maybe we could rename int128_makeX -> int128_make_uX
before introducing int128_make_sX.

Regardless:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> +}
> +
>  static inline Int128 int128_make128(uint64_t lo, uint64_t hi)
>  {
>      return (Int128) { lo, hi };
> 


Re: [PATCH 31/55] include/qemu/int128.h: Add function to create Int128 from int64_t
Posted by Richard Henderson 4 years, 8 months ago
On 6/7/21 9:57 AM, Peter Maydell wrote:
> int128_make64() creates an Int128 from an unsigned 64 bit value; add
> a function int128_makes64() creating an Int128 from a signed 64 bit
> value.
> 
> Signed-off-by: Peter Maydell<peter.maydell@linaro.org>
> ---
>   include/qemu/int128.h | 10 ++++++++++
>   1 file changed, 10 insertions(+)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~