Beispiel #1
0
 private static void AddScale(float a, Span <float> src, Span <float> dst)
 {
     if (Avx.IsSupported)
     {
         AvxIntrinsics.AddScaleU(a, src, dst);
     }
     else if (Sse.IsSupported)
     {
         SseIntrinsics.AddScaleU(a, src, dst);
     }
     else
     {
         for (int i = 0; i < dst.Length; i++)
         {
             dst[i] += a * src[i];
         }
     }
 }
Beispiel #2
0
        public static void AddScale(float scale, ReadOnlySpan <float> source, Span <float> destination, int count)
        {
            Contracts.AssertNonEmpty(source);
            Contracts.AssertNonEmpty(destination);
            Contracts.Assert(count > 0);
            Contracts.Assert(count <= source.Length);
            Contracts.Assert(count <= destination.Length);

            if (Avx.IsSupported)
            {
                AvxIntrinsics.AddScaleU(scale, source, destination, count);
            }
            else if (Sse.IsSupported)
            {
                SseIntrinsics.AddScaleU(scale, source, destination, count);
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    destination[i] += scale * source[i];
                }
            }
        }
        public static void AddScale(float a, ReadOnlySpan <float> src, Span <float> dst, int count)
        {
            Contracts.AssertNonEmpty(src);
            Contracts.AssertNonEmpty(dst);
            Contracts.Assert(count > 0);
            Contracts.Assert(count <= src.Length);
            Contracts.Assert(count <= dst.Length);

            if (Avx.IsSupported)
            {
                AvxIntrinsics.AddScaleU(a, src, dst, count);
            }
            else if (Sse.IsSupported)
            {
                SseIntrinsics.AddScaleU(a, src, dst, count);
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    dst[i] += a * src[i];
                }
            }
        }
 public void AddScaleU()
 => AvxIntrinsics.AddScaleU(DefaultScale, src, dst, Length);
Beispiel #5
0
 public void ManagedAddScaleUPerf()
 {
     AvxIntrinsics.AddScaleU(DEFAULT_SCALE, new Span <float>(src, 0, LEN), new Span <float>(dst, 0, LEN));
 }
 public void AddScaleU()
 => AvxIntrinsics.AddScaleU(DEFAULT_SCALE, new Span <float>(src, 0, LEN), new Span <float>(dst, 0, LEN));
Beispiel #7
0
 public void AddScaleU()
 => AvxIntrinsics.AddScaleU(DefaultScale, new Span <float>(src, 0, Length), new Span <float>(dst, 0, Length));