Beispiel #1
0
        public void RunClassFldScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClassFldScenario));

            var result = Bmi1.BitFieldExtract(_fld1, _fld2, _fld3);

            ValidateResult(_fld1, _fld2, _fld3, result);
        }
Beispiel #2
0
        public void RunStructLclFldScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario));

            var test   = TestStruct.Create();
            var result = Bmi1.BitFieldExtract(test._fld1, test._fld2, test._fld3);

            ValidateResult(test._fld1, test._fld2, test._fld3, result);
        }
Beispiel #3
0
        public void RunClassLclFldScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario));

            var test   = new ScalarTernOpTest__BitFieldExtractUInt32();
            var result = Bmi1.BitFieldExtract(test._fld1, test._fld2, test._fld3);

            ValidateResult(test._fld1, test._fld2, test._fld3, result);
        }
        public void RunLclVarScenario_UnsafeRead()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_UnsafeRead));

            var data1  = Unsafe.ReadUnaligned <UInt32>(ref Unsafe.As <UInt32, byte>(ref _data1));
            var data2  = Unsafe.ReadUnaligned <UInt16>(ref Unsafe.As <UInt16, byte>(ref _data2));
            var result = Bmi1.BitFieldExtract(data1, data2);

            ValidateResult(data1, data2, result);
        }
        public static uint ExtractRange(uint value, byte start, byte length)
        {
#if NETCOREAPP3_1 || NET5_0
            if (Bmi1.IsSupported)
            {
                return(Bmi1.BitFieldExtract(value, start, length));
            }
#endif

            return((value >> start) & ((1u << length) - 1u));
        }
Beispiel #6
0
 public static uint ExtractBits(uint value, byte start, byte length, uint mask)
 {
     if (Bmi1.IsSupported)
     {
         return(Bmi1.BitFieldExtract(value, start, length));
     }
     else
     {
         return((value & mask) >> start);
     }
 }
        public void RunClsVarScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario));

            var result = Bmi1.BitFieldExtract(
                _clsVar1,
                _clsVar2
                );

            ValidateResult(_clsVar1, _clsVar2, result);
        }
Beispiel #8
0
        public void RunBasicScenario_UnsafeRead()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_UnsafeRead));

            var result = Bmi1.BitFieldExtract(
                Unsafe.ReadUnaligned <UInt32>(ref Unsafe.As <UInt32, byte>(ref _data1)),
                Unsafe.ReadUnaligned <Byte>(ref Unsafe.As <Byte, byte>(ref _data2)),
                Unsafe.ReadUnaligned <Byte>(ref Unsafe.As <Byte, byte>(ref _data3))
                );

            ValidateResult(_data1, _data2, _data3, result);
        }
Beispiel #9
0
 private static unsafe void GetModRm(ref byte *ip, out byte mod, out byte rm)
 {
     rm = (byte)(*ip & 0x07u);
     if (Bmi1.IsSupported)
     {
         mod = (byte)Bmi1.BitFieldExtract(*ip, 0x0206);
     }
     else
     {
         mod = (byte)((*ip & 0xC0u) >> 6);
     }
 }
        public override ulong Run(CancellationToken cancellationToken)
        {
            if (!Bmi1.IsSupported)
            {
                return(0uL);
            }

            var iterations = 0uL;
            var bfe        = randomInt;

            while (!cancellationToken.IsCancellationRequested)
            {
                for (var i = 0; i < LENGTH; i++)
                {
                    bfe = Bmi1.BitFieldExtract(bfe, 0, 16);
                }

                iterations++;
            }

            return(iterations + bfe - bfe);
        }
Beispiel #11
0
            public void RunStructFldScenario(ScalarTernOpTest__BitFieldExtractUInt32 testClass)
            {
                var result = Bmi1.BitFieldExtract(_fld1, _fld2, _fld3);

                testClass.ValidateResult(_fld1, _fld2, _fld3, result);
            }
Beispiel #12
0
 public static uint range(uint src, BitPos i0, BitPos i1)
 => Bmi1.BitFieldExtract(src, (byte)i0, (byte)(i1 - i0));
Beispiel #13
0
 public static ushort range(ushort src, BitPos i0, BitPos i1)
 => (ushort)Bmi1.BitFieldExtract(src, i0, (byte)(i1 - i0));
Beispiel #14
0
 public static byte range(byte src, BitPos i0, BitPos i1)
 => (byte)Bmi1.BitFieldExtract(src, i0, (byte)(i1 - i0));