mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
MathUtil: Convert IsPow2 into a constexpr function
This commit is contained in:
parent
b9e360df7b
commit
3f4852a03d
@ -18,6 +18,11 @@ constexpr T Clamp(const T val, const T& min, const T& max)
|
|||||||
return std::max(min, std::min(max, val));
|
return std::max(min, std::min(max, val));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
constexpr bool IsPow2(u32 imm)
|
||||||
|
{
|
||||||
|
return (imm & (imm - 1)) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
// The most significant bit of the fraction is an is-quiet bit on all architectures we care about.
|
// The most significant bit of the fraction is an is-quiet bit on all architectures we care about.
|
||||||
|
|
||||||
static const u64 DOUBLE_SIGN = 0x8000000000000000ULL,
|
static const u64 DOUBLE_SIGN = 0x8000000000000000ULL,
|
||||||
@ -157,8 +162,6 @@ float MathFloatVectorSum(const std::vector<float>&);
|
|||||||
#define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
|
#define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
|
||||||
#define ROUND_DOWN(x, a) ((x) & ~((a) - 1))
|
#define ROUND_DOWN(x, a) ((x) & ~((a) - 1))
|
||||||
|
|
||||||
inline bool IsPow2(u32 imm) {return (imm & (imm - 1)) == 0;}
|
|
||||||
|
|
||||||
// Rounds down. 0 -> undefined
|
// Rounds down. 0 -> undefined
|
||||||
inline int IntLog2(u64 val)
|
inline int IntLog2(u64 val)
|
||||||
{
|
{
|
||||||
|
@ -924,7 +924,7 @@ void Jit64::MultiplyImmediate(u32 imm, int a, int d, bool overflow)
|
|||||||
if (!overflow)
|
if (!overflow)
|
||||||
{
|
{
|
||||||
// power of 2; just a shift
|
// power of 2; just a shift
|
||||||
if (IsPow2(imm))
|
if (MathUtil::IsPow2(imm))
|
||||||
{
|
{
|
||||||
u32 shift = IntLog2(imm);
|
u32 shift = IntLog2(imm);
|
||||||
// use LEA if it saves an op
|
// use LEA if it saves an op
|
||||||
|
Loading…
Reference in New Issue
Block a user