示例#1
0
 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);
        }
示例#3
0
        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));
示例#4
0
    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);
    }