public void RunClassFldScenario() { TestLibrary.TestFramework.BeginScenario(nameof(RunClassFldScenario)); var result = Bmi1.BitFieldExtract(_fld1, _fld2, _fld3); ValidateResult(_fld1, _fld2, _fld3, result); }
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); }
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)); }
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); }
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); }
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); }
public void RunStructFldScenario(ScalarTernOpTest__BitFieldExtractUInt32 testClass) { var result = Bmi1.BitFieldExtract(_fld1, _fld2, _fld3); testClass.ValidateResult(_fld1, _fld2, _fld3, result); }
public static uint range(uint src, BitPos i0, BitPos i1) => Bmi1.BitFieldExtract(src, (byte)i0, (byte)(i1 - i0));
public static ushort range(ushort src, BitPos i0, BitPos i1) => (ushort)Bmi1.BitFieldExtract(src, i0, (byte)(i1 - i0));
public static byte range(byte src, BitPos i0, BitPos i1) => (byte)Bmi1.BitFieldExtract(src, i0, (byte)(i1 - i0));