Go to the documentation of this file.
30 #include "../../Basic/interface/BasicPlatformMisc.hpp"
31 #include "../../../Platforms/Basic/interface/DebugUtilities.hpp"
39 if (Val == 0)
return 32;
41 unsigned long MSB = 32;
42 _BitScanReverse(&MSB, Val);
50 if (Val == 0)
return 64;
52 unsigned long MSB = 64;
54 _BitScanReverse64(&MSB, Val);
75 if (Val == 0)
return 32;
77 unsigned long LSB = 32;
78 _BitScanForward(&LSB, Val);
86 if (Val == 0)
return 64;
88 unsigned long LSB = 64;
90 _BitScanForward64(&LSB, Val);
111 #if defined _M_ARM || defined _M_ARM64
114 const uint8x8_t Vsum = vcnt_u8(vcreate_u8(
static_cast<uint64_t
>(Val)));
116 auto Bits =
static_cast<Diligent::Uint32>(vget_lane_u32(vpaddl_u16(vpaddl_u8(Vsum)), 0));
118 auto Bits = __popcnt(Val);
126 #if defined _M_ARM || defined _M_ARM64
128 const uint8x8_t Vsum = vcnt_u8(vcreate_u8(Val));
130 auto Bits =
static_cast<Diligent::Uint32>(vget_lane_u64(vpaddl_u32(vpaddl_u16(vpaddl_u8(Vsum))), 0));
132 auto Bits = __popcnt64(Val);
uint64_t Uint64
64-bit unsigned integer
Definition: BasicTypes.h:50
static Diligent::Uint32 CountOneBits(Diligent::Uint32 Val)
Definition: Win32PlatformMisc.hpp:109
static Diligent::Uint32 GetMSB(Diligent::Uint32 Val)
Definition: Win32PlatformMisc.hpp:37
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
static Diligent::Uint32 GetLSB(Diligent::Uint32 Val)
Definition: Win32PlatformMisc.hpp:73
#define VERIFY_EXPR(...)
Definition: DebugUtilities.hpp:79
static Diligent::Uint32 GetLSB(Diligent::Uint64 Val)
Definition: Win32PlatformMisc.hpp:84
static Diligent::Uint32 CountOneBits(Diligent::Uint64 Val)
Definition: Win32PlatformMisc.hpp:124
static Diligent::Uint32 GetMSB(Diligent::Uint64 Val)
Definition: Win32PlatformMisc.hpp:48
Definition: Win32PlatformMisc.hpp:35