using System.Numerics;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;

namespace SoulstormReplayReader.Benchmarks;

[SimpleJob(RuntimeMoniker.Net80)]
[MemoryDiagnoser]
public class TestBenchy
{
    [Params(0xff3246aa, 0xff536ecd)]
    public uint TestUInt;

    [Benchmark]
    public void ConvertBgraToArgbBits()
    {
        for (int i = 0; i < 1000; i++)
        {
            var u = (TestUInt & 0x000000FFU) << 24 | (TestUInt & 0x0000FF00U) << 8 | (TestUInt & 0x00FF0000U) >> 8 | (TestUInt & 0xFF000000U) >> 24;
        }
    }

    [Benchmark]
    public void ConvertBgraToArgbRotate()
    {
        for (int i = 0; i < 1000; i++)
        {
            var u = BitOperations.RotateRight(TestUInt & 0x00FF00FFu, 8) + BitOperations.RotateLeft(TestUInt & 0xFF00FF00u, 8);
        }
    }
}