From 1cfd97e1a042d78e87bbe7b0dde85c6ccfc27ed8 Mon Sep 17 00:00:00 2001 From: Stanislav Shwartsman Date: Thu, 23 Nov 2023 19:03:08 +0200 Subject: [PATCH] added most_significant_bit* methods to scalar_arith.h --- bochs/cpu/scalar_arith.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bochs/cpu/scalar_arith.h b/bochs/cpu/scalar_arith.h index c1313151c..e965b9b36 100644 --- a/bochs/cpu/scalar_arith.h +++ b/bochs/cpu/scalar_arith.h @@ -87,6 +87,11 @@ BX_CPP_INLINE unsigned lzcntw(Bit16u val_16) return count; } +BX_CPP_INLINE unsigned most_significant_bitw(Bit16u val_16) +{ + return 15 - lzcntw(val_16); +} + BX_CPP_INLINE unsigned lzcntd(Bit32u val_32) { Bit32u mask = 0x80000000; @@ -100,6 +105,11 @@ BX_CPP_INLINE unsigned lzcntd(Bit32u val_32) return count; } +BX_CPP_INLINE unsigned most_significant_bitd(Bit32u val_32) +{ + return 31 - lzcntd(val_32); +} + BX_CPP_INLINE unsigned lzcntq(Bit64u val_64) { Bit64u mask = BX_CONST64(0x8000000000000000); @@ -113,6 +123,11 @@ BX_CPP_INLINE unsigned lzcntq(Bit64u val_64) return count; } +BX_CPP_INLINE unsigned most_significant_bitq(Bit64u val_64) +{ + return 63 - lzcntq(val_64); +} + // popcnt BX_CPP_INLINE unsigned popcntb(Bit8u val_8)