diff options
author | Frédéric Pétrot <frederic.petrot@univ-grenoble-alpes.fr> | 2021-10-25 14:28:03 +0200 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2021-10-27 17:10:00 -0700 |
commit | 1c46937358fc27a9e446d08c877389ee84d6767d (patch) | |
tree | f11552eb9c466cd90b4ac68e4ab7f6edba165179 /include/qemu | |
parent | c52d69e7dbaaed0ffdef8125e79218672c30161d (diff) | |
download | qemu-1c46937358fc27a9e446d08c877389ee84d6767d.zip qemu-1c46937358fc27a9e446d08c877389ee84d6767d.tar.gz qemu-1c46937358fc27a9e446d08c877389ee84d6767d.tar.bz2 |
qemu/int128: Add int128_{not,xor}
Addition of not and xor on 128-bit integers.
Signed-off-by: Frédéric Pétrot <frederic.petrot@univ-grenoble-alpes.fr>
Co-authored-by: Fabien Portas <fabien.portas@grenoble-inp.org>
Message-Id: <20211025122818.168890-3-frederic.petrot@univ-grenoble-alpes.fr>
[rth: Split out logical operations.]
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/qemu')
-rw-r--r-- | include/qemu/int128.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/qemu/int128.h b/include/qemu/int128.h index 2ac0746..b6d517a 100644 --- a/include/qemu/int128.h +++ b/include/qemu/int128.h @@ -58,6 +58,11 @@ static inline Int128 int128_exts64(int64_t a) return a; } +static inline Int128 int128_not(Int128 a) +{ + return ~a; +} + static inline Int128 int128_and(Int128 a, Int128 b) { return a & b; @@ -68,6 +73,11 @@ static inline Int128 int128_or(Int128 a, Int128 b) return a | b; } +static inline Int128 int128_xor(Int128 a, Int128 b) +{ + return a ^ b; +} + static inline Int128 int128_rshift(Int128 a, int n) { return a >> n; @@ -235,6 +245,11 @@ static inline Int128 int128_exts64(int64_t a) return int128_make128(a, (a < 0) ? -1 : 0); } +static inline Int128 int128_not(Int128 a) +{ + return int128_make128(~a.lo, ~a.hi); +} + static inline Int128 int128_and(Int128 a, Int128 b) { return int128_make128(a.lo & b.lo, a.hi & b.hi); @@ -245,6 +260,11 @@ static inline Int128 int128_or(Int128 a, Int128 b) return int128_make128(a.lo | b.lo, a.hi | b.hi); } +static inline Int128 int128_xor(Int128 a, Int128 b) +{ + return int128_make128(a.lo ^ b.lo, a.hi ^ b.hi); +} + static inline Int128 int128_rshift(Int128 a, int n) { int64_t h; |