Use BitOperations methods and delete now unused BitUtils methods (#3134)

Replaces BitUtils.CountTrailingZeros/CountLeadingZeros/IsPowerOfTwo with BitOperations methods
This commit is contained in:
Berkan Diler 2022-02-18 02:35:23 +01:00 committed by GitHub
parent 63c9c64196
commit 98c838b24c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 19 additions and 68 deletions

View file

@ -1,4 +1,5 @@
using Ryujinx.Common;
using System.Numerics;
namespace Ryujinx.HLE.HOS.Kernel.Common
{
@ -41,10 +42,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
range++;
// This is log2(Range) plus one.
int nextRangeLog2 = 64 - BitUtils.CountLeadingZeros64(range);
int nextRangeLog2 = 64 - BitOperations.LeadingZeroCount((ulong)range);
// If Range is already power of 2, subtract one to use log2(Range) directly.
int rangeLog2 = nextRangeLog2 - (BitUtils.IsPowerOfTwo64(range) ? 1 : 0);
int rangeLog2 = nextRangeLog2 - (BitOperations.IsPow2(range) ? 1 : 0);
int parts = rangeLog2 > 32 ? 2 : 1;
int bitsPerPart = rangeLog2 / parts;

View file

@ -1,6 +1,7 @@
using Ryujinx.Common;
using Ryujinx.HLE.HOS.Kernel.Common;
using System.Diagnostics;
using System.Numerics;
namespace Ryujinx.HLE.HOS.Kernel.Memory
{
@ -259,11 +260,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (backwards)
{
index = (index * 64 + 63) - BitUtils.CountLeadingZeros64(mask);
index = (index * 64 + 63) - BitOperations.LeadingZeroCount((ulong)mask);
}
else
{
index = index * 64 + BitUtils.CountLeadingZeros64(BitUtils.ReverseBits64(mask));
index = index * 64 + BitOperations.LeadingZeroCount((ulong)BitUtils.ReverseBits64(mask));
}
}
@ -312,11 +313,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (backwards)
{
index = index * 64 + BitUtils.CountLeadingZeros64(BitUtils.ReverseBits64(mask));
index = index * 64 + BitOperations.LeadingZeroCount((ulong)BitUtils.ReverseBits64(mask));
}
else
{
index = (index * 64 + 63) - BitUtils.CountLeadingZeros64(mask);
index = (index * 64 + 63) - BitOperations.LeadingZeroCount((ulong)mask);
}
}

View file

@ -1,5 +1,6 @@
using Ryujinx.Common;
using System;
using System.Numerics;
namespace Ryujinx.HLE.HOS.Kernel.Process
{
@ -32,7 +33,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
{
int mask = _idMasks[index];
int firstFreeBit = BitUtils.CountLeadingZeros32((mask + 1) & ~mask);
int firstFreeBit = BitOperations.LeadingZeroCount((uint)((mask + 1) & ~mask));
if (firstFreeBit < 32)
{

View file

@ -3,6 +3,7 @@ using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
using System.Numerics;
namespace Ryujinx.HLE.HOS.Kernel.Process
{
@ -130,7 +131,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
return KernelResult.Success;
}
int codeMask = 1 << (32 - BitUtils.CountLeadingZeros32(code + 1));
int codeMask = 1 << (32 - BitOperations.LeadingZeroCount((uint)code + 1));
// Check if the property was already set.
if (((mask0 & codeMask) & 0x1e008) != 0)