public static uint fo1(uint value) { if (AdvSimd.IsSupported) { var input = Vector64.CreateScalar(value); return(AdvSimd.Extract(input, 0)); } return(0); }
public void RunBasicScenario() { TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); Int64 value = TestLibrary.Generator.GetInt64(); Vector64 <Int64> result = Vector64.CreateScalar(value); ValidateResult(result, value); }
public static int PopCount(uint value) { if (Popcnt.IsSupported) { return((int)Popcnt.PopCount(value)); } if (AdvSimd.Arm64.IsSupported) { // PopCount works on vector so convert input value to vector first. Vector64 <uint> input = Vector64.CreateScalar(value); Vector64 <byte> aggregated = AdvSimd.Arm64.AddAcross(AdvSimd.PopCount(input.AsByte())); return(aggregated.ToScalar()); } return(SoftwareFallback(value));
static int Tests_AdvSimd_Arm64_Swapped() { var result = 100; // Begin CompareEqual Tests if (!ValidateResult_Vector128 <double>(AdvSimd_Arm64_CompareEqual_Vector128_Double_Zero_Swapped(Vector128 <double> .Zero), Double.NaN)) { result = -1; } if (!ValidateResult_Vector128 <ulong>(AdvSimd_Arm64_CompareEqual_Vector128_UInt64_Zero_Swapped(Vector128 <ulong> .Zero), UInt64.MaxValue)) { result = -1; } if (!ValidateResult_Vector128 <long>(AdvSimd_Arm64_CompareEqual_Vector128_Int64_Zero_Swapped(Vector128 <long> .Zero), -1)) { result = -1; } if (!ValidateResult_Vector64 <float>(AdvSimd_Arm64_CompareEqualScalar_Vector64_Single_Zero_Swapped(Vector64 <float> .Zero), Vector64.CreateScalar(Single.NaN))) { result = -1; } if (!ValidateResult_Vector64 <double>(AdvSimd_Arm64_CompareEqualScalar_Vector64_Double_Zero_Swapped(Vector64 <double> .Zero), Vector64.CreateScalar(Double.NaN))) { result = -1; } if (!ValidateResult_Vector64 <ulong>(AdvSimd_Arm64_CompareEqualScalar_Vector64_UInt64_Zero_Swapped(Vector64 <ulong> .Zero), Vector64.CreateScalar(UInt64.MaxValue))) { result = -1; } if (!ValidateResult_Vector64 <long>(AdvSimd_Arm64_CompareEqualScalar_Vector64_Int64_Zero_Swapped(Vector64 <long> .Zero), Vector64.CreateScalar(-1L))) { result = -1; } // End CompareEqual Tests return(result); }