Skip to content

Commit

Permalink
MathUtil: Convert IsPow2 into a constexpr function
Browse files Browse the repository at this point in the history
  • Loading branch information
lioncash committed Sep 12, 2015
1 parent b9e360d commit 3f4852a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 3 deletions.
7 changes: 5 additions & 2 deletions Source/Core/Common/MathUtil.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ constexpr T Clamp(const T val, const T& min, const T& max)
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.

static const u64 DOUBLE_SIGN = 0x8000000000000000ULL,
Expand Down Expand Up @@ -157,8 +162,6 @@ float MathFloatVectorSum(const std::vector<float>&);
#define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
#define ROUND_DOWN(x, a) ((x) & ~((a) - 1))

inline bool IsPow2(u32 imm) {return (imm & (imm - 1)) == 0;}

// Rounds down. 0 -> undefined
inline int IntLog2(u64 val)
{
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -924,7 +924,7 @@ void Jit64::MultiplyImmediate(u32 imm, int a, int d, bool overflow)
if (!overflow)
{
// power of 2; just a shift
if (IsPow2(imm))
if (MathUtil::IsPow2(imm))
{
u32 shift = IntLog2(imm);
// use LEA if it saves an op
Expand Down

0 comments on commit 3f4852a

Please sign in to comment.