5887 references to Vector512
System.IO.Hashing (11)
System\IO\Hashing\Adler32.cs (11)
200if (Vector512.IsHardwareAccelerated && Avx512BW.IsSupported && source.Length >= Vector512<byte>.Count) 424Debug.Assert(source.Length >= Vector512<byte>.Count); 434Vector512<sbyte> weights = Vector512.Create( 445Vector512<uint> vs1 = Vector512.CreateScalar(s1); 446Vector512<uint> vs2 = Vector512.CreateScalar(s2); 447Vector512<uint> vs3 = Vector512<uint>.Zero; 451Vector512<byte> data = Vector512.LoadUnsafe(ref sourceRef); 454Vector512<uint> vs1_0 = vs1; 455vs1 += Avx512BW.SumAbsoluteDifferences(data, Vector512<byte>.Zero).AsUInt32(); 457vs2 += Avx512BW.MultiplyAddAdjacent(Avx512BW.MultiplyAddAdjacent(data, weights), Vector512<short>.One).AsUInt32();
System.Numerics.Tensors (1743)
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IAggregationOperator.cs (104)
20static abstract T Invoke(Vector512<T> x); 35public Vector512<T> Invoke(Vector512<T> x) => TOperator.Invoke(x); 72if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && TTransformOperator.Vectorizable) 76if (remainder >= (uint)Vector512<T>.Count) 515Vector512<T> vresult = Vector512.Create(TAggregationOperator.IdentityValue); 519Vector512<T> beg = transform.Invoke(Vector512.LoadUnsafe(ref xRef)); 520Vector512<T> end = transform.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<T>.Count)); 524if (remainder > (uint)(Vector512<T>.Count * 8)) 550misalignment = ((uint)sizeof(Vector512<T>) - ((nuint)xPtr % (uint)sizeof(Vector512<T>))) / (uint)sizeof(T); 554Debug.Assert(((nuint)xPtr % (uint)sizeof(Vector512<T>)) == 0); 564misalignment = (uint)Vector512<T>.Count; 569Vector512<T> vector1; 570Vector512<T> vector2; 571Vector512<T> vector3; 572Vector512<T> vector4; 576while (remainder >= (uint)(Vector512<T>.Count * 8)) 580vector1 = transform.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0))); 581vector2 = transform.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1))); 582vector3 = transform.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2))); 583vector4 = transform.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3))); 592vector1 = transform.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4))); 593vector2 = transform.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5))); 594vector3 = transform.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6))); 595vector4 = transform.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7))); 605xPtr += (uint)(Vector512<T>.Count * 8); 607remainder -= (uint)(Vector512<T>.Count * 8); 628(nuint blocks, nuint trailing) = Math.DivRem(remainder, (nuint)Vector512<T>.Count); 636Vector512<T> vector = transform.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 7))); 643Vector512<T> vector = transform.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 6))); 650Vector512<T> vector = transform.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 5))); 657Vector512<T> vector = transform.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 4))); 664Vector512<T> vector = transform.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 3))); 671Vector512<T> vector = transform.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 2))); 678Vector512<T> vector = transform.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 1))); 1191if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && TBinaryOperator.Vectorizable) 1195if (remainder >= (uint)Vector512<T>.Count) 1686Vector512<T> vresult = Vector512.Create(TAggregationOperator.IdentityValue); 1690Vector512<T> beg = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef), 1692Vector512<T> end = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<T>.Count), 1693Vector512.LoadUnsafe(ref yRef, remainder - (uint)Vector512<T>.Count)); 1697if (remainder > (uint)(Vector512<T>.Count * 8)) 1725misalignment = ((uint)sizeof(Vector512<T>) - ((nuint)xPtr % (uint)sizeof(Vector512<T>))) / (uint)sizeof(T); 1730Debug.Assert(((nuint)xPtr % (uint)sizeof(Vector512<T>)) == 0); 1740misalignment = (uint)Vector512<T>.Count; 1748Vector512<T> vector1; 1749Vector512<T> vector2; 1750Vector512<T> vector3; 1751Vector512<T> vector4; 1755while (remainder >= (uint)(Vector512<T>.Count * 8)) 1759vector1 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 1760Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 0))); 1761vector2 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 1762Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 1))); 1763vector3 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 1764Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 2))); 1765vector4 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 1766Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 3))); 1775vector1 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 1776Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 4))); 1777vector2 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 1778Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 5))); 1779vector3 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 1780Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 6))); 1781vector4 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 1782Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 7))); 1792xPtr += (uint)(Vector512<T>.Count * 8); 1793yPtr += (uint)(Vector512<T>.Count * 8); 1795remainder -= (uint)(Vector512<T>.Count * 8); 1817(nuint blocks, nuint trailing) = Math.DivRem(remainder, (nuint)Vector512<T>.Count); 1825Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 7)), 1826Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 7))); 1833Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 6)), 1834Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 6))); 1841Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 5)), 1842Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 5))); 1849Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 4)), 1850Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 4))); 1857Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 3)), 1858Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 3))); 1865Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 2)), 1866Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 2))); 1873Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 1)), 1874Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 1))); 2463private static Vector512<T> CreateAlignmentMaskVector512<T>(int count) 2571private static Vector512<T> CreateRemainderMaskVector512<T>(int count)
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IBinaryOperator.cs (190)
20static abstract Vector512<T> Invoke(Vector512<T> x, Vector512<T> y); 85if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && TBinaryOperator.Vectorizable) 87if (remainder >= (uint)Vector512<T>.Count) 644Vector512<T> beg = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef), 646Vector512<T> end = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<T>.Count), 647Vector512.LoadUnsafe(ref yRef, remainder - (uint)Vector512<T>.Count)); 649if (remainder > (uint)(Vector512<T>.Count * 8)) 676nuint misalignment = ((uint)sizeof(Vector512<T>) - ((nuint)dPtr % (uint)sizeof(Vector512<T>))) / (uint)sizeof(T); 682Debug.Assert(((nuint)dPtr % (uint)sizeof(Vector512<T>)) == 0); 687Vector512<T> vector1; 688Vector512<T> vector2; 689Vector512<T> vector3; 690Vector512<T> vector4; 697while (remainder >= (uint)(Vector512<T>.Count * 8)) 701vector1 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 702Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 0))); 703vector2 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 704Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 1))); 705vector3 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 706Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 2))); 707vector4 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 708Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 3))); 710vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 0)); 711vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 1)); 712vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 2)); 713vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 3)); 717vector1 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 718Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 4))); 719vector2 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 720Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 5))); 721vector3 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 722Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 6))); 723vector4 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 724Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 7))); 726vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 4)); 727vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 5)); 728vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 6)); 729vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 7)); 734xPtr += (uint)(Vector512<T>.Count * 8); 735yPtr += (uint)(Vector512<T>.Count * 8); 736dPtr += (uint)(Vector512<T>.Count * 8); 738remainder -= (uint)(Vector512<T>.Count * 8); 743while (remainder >= (uint)(Vector512<T>.Count * 8)) 747vector1 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 748Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 0))); 749vector2 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 750Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 1))); 751vector3 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 752Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 2))); 753vector4 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 754Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 3))); 756vector1.Store(dPtr + (uint)(Vector512<T>.Count * 0)); 757vector2.Store(dPtr + (uint)(Vector512<T>.Count * 1)); 758vector3.Store(dPtr + (uint)(Vector512<T>.Count * 2)); 759vector4.Store(dPtr + (uint)(Vector512<T>.Count * 3)); 763vector1 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 764Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 4))); 765vector2 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 766Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 5))); 767vector3 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 768Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 6))); 769vector4 = TBinaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 770Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 7))); 772vector1.Store(dPtr + (uint)(Vector512<T>.Count * 4)); 773vector2.Store(dPtr + (uint)(Vector512<T>.Count * 5)); 774vector3.Store(dPtr + (uint)(Vector512<T>.Count * 6)); 775vector4.Store(dPtr + (uint)(Vector512<T>.Count * 7)); 780xPtr += (uint)(Vector512<T>.Count * 8); 781yPtr += (uint)(Vector512<T>.Count * 8); 782dPtr += (uint)(Vector512<T>.Count * 8); 784remainder -= (uint)(Vector512<T>.Count * 8); 804remainder = (remainder + (uint)(Vector512<T>.Count - 1)) & (nuint)(-Vector512<T>.Count); 806switch (remainder / (uint)Vector512<T>.Count) 810Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 8)), 811Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 8))); 812vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 8)); 818Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 7)), 819Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 7))); 820vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 7)); 826Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 6)), 827Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 6))); 828vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 6)); 834Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 5)), 835Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 5))); 836vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 5)); 842Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 4)), 843Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 4))); 844vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 4)); 850Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 3)), 851Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 3))); 852vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 3)); 858Vector512<T> vector = TBinaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 2)), 859Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 2))); 860vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 2)); 867end.StoreUnsafe(ref dRef, endIndex - (uint)Vector512<T>.Count); 1417if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && TTransformOperator.Vectorizable && TBinaryOperator.Vectorizable) 1419if (remainder >= (uint)Vector512<T>.Count) 1968Vector512<T> yVec = Vector512.Create(y); 1970Vector512<T> beg = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef)), 1972Vector512<T> end = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<T>.Count)), 1975if (remainder > (uint)(Vector512<T>.Count * 8)) 2000nuint misalignment = ((uint)sizeof(Vector512<T>) - ((nuint)dPtr % (uint)sizeof(Vector512<T>))) / (uint)sizeof(T); 2005Debug.Assert(((nuint)dPtr % (uint)sizeof(Vector512<T>)) == 0); 2010Vector512<T> vector1; 2011Vector512<T> vector2; 2012Vector512<T> vector3; 2013Vector512<T> vector4; 2020while (remainder >= (uint)(Vector512<T>.Count * 8)) 2024vector1 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0))), 2026vector2 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1))), 2028vector3 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2))), 2030vector4 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3))), 2033vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 0)); 2034vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 1)); 2035vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 2)); 2036vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 3)); 2040vector1 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4))), 2042vector2 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5))), 2044vector3 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6))), 2046vector4 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7))), 2049vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 4)); 2050vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 5)); 2051vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 6)); 2052vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 7)); 2057xPtr += (uint)(Vector512<T>.Count * 8); 2058dPtr += (uint)(Vector512<T>.Count * 8); 2060remainder -= (uint)(Vector512<T>.Count * 8); 2065while (remainder >= (uint)(Vector512<T>.Count * 8)) 2069vector1 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0))), 2071vector2 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1))), 2073vector3 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2))), 2075vector4 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3))), 2078vector1.Store(dPtr + (uint)(Vector512<T>.Count * 0)); 2079vector2.Store(dPtr + (uint)(Vector512<T>.Count * 1)); 2080vector3.Store(dPtr + (uint)(Vector512<T>.Count * 2)); 2081vector4.Store(dPtr + (uint)(Vector512<T>.Count * 3)); 2085vector1 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4))), 2087vector2 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5))), 2089vector3 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6))), 2091vector4 = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7))), 2094vector1.Store(dPtr + (uint)(Vector512<T>.Count * 4)); 2095vector2.Store(dPtr + (uint)(Vector512<T>.Count * 5)); 2096vector3.Store(dPtr + (uint)(Vector512<T>.Count * 6)); 2097vector4.Store(dPtr + (uint)(Vector512<T>.Count * 7)); 2102xPtr += (uint)(Vector512<T>.Count * 8); 2103dPtr += (uint)(Vector512<T>.Count * 8); 2105remainder -= (uint)(Vector512<T>.Count * 8); 2124remainder = (remainder + (uint)(Vector512<T>.Count - 1)) & (nuint)(-Vector512<T>.Count); 2126switch (remainder / (uint)Vector512<T>.Count) 2130Vector512<T> vector = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 8))), 2132vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 8)); 2138Vector512<T> vector = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 7))), 2140vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 7)); 2146Vector512<T> vector = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 6))), 2148vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 6)); 2154Vector512<T> vector = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 5))), 2156vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 5)); 2162Vector512<T> vector = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 4))), 2164vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 4)); 2170Vector512<T> vector = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 3))), 2172vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 3)); 2178Vector512<T> vector = TBinaryOperator.Invoke(TTransformOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 2))), 2180vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 2)); 2187end.StoreUnsafe(ref dRef, endIndex - (uint)Vector512<T>.Count); 2730private static T HorizontalAggregate<T, TAggregate>(Vector512<T> x) where TAggregate : struct, IBinaryOperator<T> => 2775public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => TOperator.Invoke(y, x);
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IBooleanUnaryOperator.cs (47)
21static abstract Vector512<T> Invoke(Vector512<T> x); 30static abstract bool ShouldEarlyExit(Vector512<T> result); 41public static bool ShouldEarlyExit(Vector512<T> result) => Vector512.AnyWhereAllBitsSet(result); 60public static bool ShouldEarlyExit(Vector512<T> result) => 61typeof(T) == typeof(float) ? Vector512.EqualsAny(result.AsUInt32(), Vector512<uint>.Zero) : 62typeof(T) == typeof(double) ? Vector512.EqualsAny(result.AsUInt64(), Vector512<ulong>.Zero) : 63Vector512.EqualsAny(result, Vector512<T>.Zero); 83if (Vector512.IsHardwareAccelerated && TOperator.Vectorizable && Vector512<T>.IsSupported) 85oneVectorFromEnd = x.Length - Vector512<T>.Count; 96i += Vector512<T>.Count; 102TAnyAll.ShouldEarlyExit(TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(x.Length - Vector512<T>.Count))))) 217if (Vector512.IsHardwareAccelerated && TOperator.Vectorizable && Vector512<T>.IsSupported) 219int vectorFromEnd = x.Length - Vector512<T>.Count; 226i += Vector512<T>.Count; 233i = x.Length - Vector512<T>.Count; 241Vector512<byte> v = TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)i)).AsByte(); 243(v & Vector512<byte>.One).StoreUnsafe(ref Unsafe.As<bool, byte>(ref destinationRef), (uint)i); 325if (Vector512.IsHardwareAccelerated && TOperator.Vectorizable && Vector512<T>.IsSupported) 327int vectorsFromEnd = x.Length - (Vector512<T>.Count * sizeof(T)); 334i += Vector512<T>.Count * sizeof(T); 341i = x.Length - (Vector512<T>.Count * sizeof(T)); 349Vector512<byte> v = 352TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + Vector512<T>.Count))).AsUInt16()); 354(v & Vector512<byte>.One).StoreUnsafe(ref Unsafe.As<bool, byte>(ref destinationRef), (uint)i); 442if (Vector512.IsHardwareAccelerated && TOperator.Vectorizable && Vector512<T>.IsSupported) 444int vectorsFromEnd = x.Length - (Vector512<T>.Count * sizeof(T)); 451i += Vector512<T>.Count * sizeof(T); 458i = x.Length - (Vector512<T>.Count * sizeof(T)); 466Vector512<byte> v = 470TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + Vector512<T>.Count))).AsUInt32()), 472TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + (2 * Vector512<T>.Count)))).AsUInt32(), 473TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + (3 * Vector512<T>.Count)))).AsUInt32())); 475(v & Vector512<byte>.One).StoreUnsafe(ref Unsafe.As<bool, byte>(ref destinationRef), (uint)i); 569if (Vector512.IsHardwareAccelerated && TOperator.Vectorizable && Vector512<T>.IsSupported) 573int vectorsFromEnd = x.Length - (Vector512<T>.Count * sizeof(T)); 580i += Vector512<T>.Count * sizeof(T); 587i = x.Length - (Vector512<T>.Count * sizeof(T)); 595Vector512<byte> v = 600TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + Vector512<T>.Count))).AsUInt64()), 602TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + (2 * Vector512<T>.Count)))).AsUInt64(), 603TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + (3 * Vector512<T>.Count)))).AsUInt64())), 606TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + (4 * Vector512<T>.Count)))).AsUInt64(), 607TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + (5 * Vector512<T>.Count)))).AsUInt64()), 609TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + (6 * Vector512<T>.Count)))).AsUInt64(), 610TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)(i + (7 * Vector512<T>.Count)))).AsUInt64()))); 612(v & Vector512<byte>.One).StoreUnsafe(ref Unsafe.As<bool, byte>(ref destinationRef), (uint)i);
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IIndexOfMinMaxOperator.cs (83)
16static abstract T Aggregate(Vector512<T> value); 20static abstract Vector512<T> Compare(Vector512<T> x, Vector512<T> y); 31if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && x.Length >= Vector512<T>.Count) 555Vector512<T> result = Vector512.Create(x); 558Vector512<T> nanMask = Vector512.IsNaN(result); 559if (nanMask != Vector512<T>.Zero) 566Vector512<TInt> indexIncrement = Vector512.Create(TInt.CreateTruncating(Vector512<TInt>.Count)); 567Vector512<TInt> resultIndex = Vector512<TInt>.Indices; 568Vector512<TInt> currentIndex = resultIndex + indexIncrement; 569ReadOnlySpan<T> span = x.Slice(Vector512<T>.Count); 573Vector512<T> current; 574if (span.Length >= Vector512<T>.Count) 577span = span.Slice(Vector512<T>.Count); 582int start = x.Length - Vector512<T>.Count; 584currentIndex = Vector512.Create(TInt.CreateTruncating(start)) + Vector512<TInt>.Indices; 591Vector512<T> nanMask = Vector512.IsNaN(current); 592if (nanMask != Vector512<T>.Zero) 599Vector512<T> mask = TOperator.Compare(current, result); 610Vector512<TInt> aggMask = ~Vector512.Equals(result.As<T, TInt>(), Vector512.Create(aggResult).As<T, TInt>()); 611Vector512<TInt> aggIndex = resultIndex | aggMask; 622Vector512<T> result = Vector512.Create(x); 625Vector512<T> nanMask = Vector512.IsNaN(result); 626if (nanMask != Vector512<T>.Zero) 633Vector512<uint> indexIncrement = Vector512.Create((uint)Vector512<uint>.Count); 634Vector512<uint> resultIndex1 = Vector512<uint>.Indices; 635Vector512<uint> resultIndex2 = resultIndex1 + indexIncrement; 636Vector512<uint> currentIndex = resultIndex2 + indexIncrement; 637ReadOnlySpan<T> span = x.Slice(Vector512<T>.Count); 641Vector512<T> current; 642if (span.Length >= Vector512<T>.Count) 645span = span.Slice(Vector512<T>.Count); 650int start = x.Length - Vector512<T>.Count; 652currentIndex = Vector512.Create((uint)start) + Vector512<uint>.Indices; 659Vector512<T> nanMask = Vector512.IsNaN(current); 660if (nanMask != Vector512<T>.Zero) 667Vector512<T> mask = TOperator.Compare(current, result); 668(Vector512<int> mask1, Vector512<int> mask2) = Vector512.Widen(mask.AsInt16()); 681Vector512<short> aggMask = ~Vector512.Equals(result.AsInt16(), Vector512.Create(aggResult).AsInt16()); 683(Vector512<int> mask1, Vector512<int> mask2) = Vector512.Widen(aggMask); 684Vector512<uint> aggIndex = resultIndex1 | mask1.AsUInt32(); 697Vector512<T> result = Vector512.Create(x); 700Vector512<T> nanMask = Vector512.IsNaN(result); 701if (nanMask != Vector512<T>.Zero) 708Vector512<uint> indexIncrement = Vector512.Create((uint)Vector512<uint>.Count); 709Vector512<uint> resultIndex1 = Vector512<uint>.Indices; 710Vector512<uint> resultIndex2 = resultIndex1 + indexIncrement; 711Vector512<uint> resultIndex3 = resultIndex2 + indexIncrement; 712Vector512<uint> resultIndex4 = resultIndex3 + indexIncrement; 713Vector512<uint> currentIndex = resultIndex4 + indexIncrement; 714ReadOnlySpan<T> span = x.Slice(Vector512<T>.Count); 718Vector512<T> current; 719if (span.Length >= Vector512<T>.Count) 722span = span.Slice(Vector512<T>.Count); 727int start = x.Length - Vector512<T>.Count; 729currentIndex = Vector512.Create((uint)start) + Vector512<uint>.Indices; 736Vector512<T> nanMask = Vector512.IsNaN(current); 737if (nanMask != Vector512<T>.Zero) 744Vector512<T> mask = TOperator.Compare(current, result); 745(Vector512<short> lowerMask, Vector512<short> upperMask) = Vector512.Widen(mask.AsSByte()); 746(Vector512<int> mask1, Vector512<int> mask2) = Vector512.Widen(lowerMask); 747(Vector512<int> mask3, Vector512<int> mask4) = Vector512.Widen(upperMask); 764Vector512<sbyte> aggMask = ~Vector512.Equals(result.AsSByte(), Vector512.Create(aggResult).AsSByte()); 766(Vector512<short> lowerMask, Vector512<short> upperMask) = Vector512.Widen(aggMask); 767(Vector512<int> mask1, Vector512<int> mask2) = Vector512.Widen(lowerMask); 768(Vector512<int> mask3, Vector512<int> mask4) = Vector512.Widen(upperMask); 769Vector512<uint> aggIndex = resultIndex1 | mask1.AsUInt32();
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IStatefulUnaryOperator.cs (80)
20Vector512<T> Invoke(Vector512<T> x); 51if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && TStatefulUnaryOperator.Vectorizable) 53if (remainder >= (uint)Vector512<T>.Count) 547Vector512<T> beg = op.Invoke(Vector512.LoadUnsafe(ref xRef)); 548Vector512<T> end = op.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<T>.Count)); 550if (remainder > (uint)(Vector512<T>.Count * 8)) 575nuint misalignment = ((uint)sizeof(Vector512<T>) - ((nuint)dPtr % (uint)sizeof(Vector512<T>))) / (uint)sizeof(T); 580Debug.Assert(((nuint)dPtr % (uint)sizeof(Vector512<T>)) == 0); 585Vector512<T> vector1; 586Vector512<T> vector2; 587Vector512<T> vector3; 588Vector512<T> vector4; 595while (remainder >= (uint)(Vector512<T>.Count * 8)) 599vector1 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0))); 600vector2 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1))); 601vector3 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2))); 602vector4 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3))); 604vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 0)); 605vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 1)); 606vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 2)); 607vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 3)); 611vector1 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4))); 612vector2 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5))); 613vector3 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6))); 614vector4 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7))); 616vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 4)); 617vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 5)); 618vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 6)); 619vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 7)); 624xPtr += (uint)(Vector512<T>.Count * 8); 625dPtr += (uint)(Vector512<T>.Count * 8); 627remainder -= (uint)(Vector512<T>.Count * 8); 632while (remainder >= (uint)(Vector512<T>.Count * 8)) 636vector1 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0))); 637vector2 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1))); 638vector3 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2))); 639vector4 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3))); 641vector1.Store(dPtr + (uint)(Vector512<T>.Count * 0)); 642vector2.Store(dPtr + (uint)(Vector512<T>.Count * 1)); 643vector3.Store(dPtr + (uint)(Vector512<T>.Count * 2)); 644vector4.Store(dPtr + (uint)(Vector512<T>.Count * 3)); 648vector1 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4))); 649vector2 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5))); 650vector3 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6))); 651vector4 = op.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7))); 653vector1.Store(dPtr + (uint)(Vector512<T>.Count * 4)); 654vector2.Store(dPtr + (uint)(Vector512<T>.Count * 5)); 655vector3.Store(dPtr + (uint)(Vector512<T>.Count * 6)); 656vector4.Store(dPtr + (uint)(Vector512<T>.Count * 7)); 661xPtr += (uint)(Vector512<T>.Count * 8); 662dPtr += (uint)(Vector512<T>.Count * 8); 664remainder -= (uint)(Vector512<T>.Count * 8); 683remainder = (remainder + (uint)(Vector512<T>.Count - 1)) & (nuint)(-Vector512<T>.Count); 685switch (remainder / (uint)Vector512<T>.Count) 689Vector512<T> vector = op.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 8))); 690vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 8)); 696Vector512<T> vector = op.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 7))); 697vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 7)); 703Vector512<T> vector = op.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 6))); 704vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 6)); 710Vector512<T> vector = op.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 5))); 711vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 5)); 717Vector512<T> vector = op.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 4))); 718vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 4)); 724Vector512<T> vector = op.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 3))); 725vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 3)); 731Vector512<T> vector = op.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 2))); 732vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 2)); 739end.StoreUnsafe(ref dRef, endIndex - (uint)Vector512<T>.Count);
System\Numerics\Tensors\netcore\Common\TensorPrimitives.ITernaryOperator.cs (323)
20static abstract Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> z); 30public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> z) => TOperator.Invoke(x, z, y); 72if (TTernaryOperator.Vectorizable && Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported) 74if (remainder >= (uint)Vector512<T>.Count) 694Vector512<T> beg = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef), 697Vector512<T> end = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<T>.Count), 698Vector512.LoadUnsafe(ref yRef, remainder - (uint)Vector512<T>.Count), 699Vector512.LoadUnsafe(ref zRef, remainder - (uint)Vector512<T>.Count)); 701if (remainder > (uint)(Vector512<T>.Count * 8)) 730nuint misalignment = ((uint)sizeof(Vector512<T>) - ((nuint)dPtr % (uint)sizeof(Vector512<T>))) / (uint)sizeof(T); 737Debug.Assert(((nuint)dPtr % (uint)sizeof(Vector512<T>)) == 0); 742Vector512<T> vector1; 743Vector512<T> vector2; 744Vector512<T> vector3; 745Vector512<T> vector4; 752while (remainder >= (uint)(Vector512<T>.Count * 8)) 756vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 757Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 0)), 758Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 0))); 759vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 760Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 1)), 761Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 1))); 762vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 763Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 2)), 764Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 2))); 765vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 766Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 3)), 767Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 3))); 769vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 0)); 770vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 1)); 771vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 2)); 772vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 3)); 776vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 777Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 4)), 778Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 4))); 779vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 780Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 5)), 781Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 5))); 782vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 783Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 6)), 784Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 6))); 785vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 786Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 7)), 787Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 7))); 789vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 4)); 790vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 5)); 791vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 6)); 792vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 7)); 797xPtr += (uint)(Vector512<T>.Count * 8); 798yPtr += (uint)(Vector512<T>.Count * 8); 799zPtr += (uint)(Vector512<T>.Count * 8); 800dPtr += (uint)(Vector512<T>.Count * 8); 802remainder -= (uint)(Vector512<T>.Count * 8); 807while (remainder >= (uint)(Vector512<T>.Count * 8)) 811vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 812Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 0)), 813Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 0))); 814vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 815Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 1)), 816Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 1))); 817vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 818Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 2)), 819Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 2))); 820vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 821Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 3)), 822Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 3))); 824vector1.Store(dPtr + (uint)(Vector512<T>.Count * 0)); 825vector2.Store(dPtr + (uint)(Vector512<T>.Count * 1)); 826vector3.Store(dPtr + (uint)(Vector512<T>.Count * 2)); 827vector4.Store(dPtr + (uint)(Vector512<T>.Count * 3)); 831vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 832Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 4)), 833Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 4))); 834vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 835Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 5)), 836Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 5))); 837vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 838Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 6)), 839Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 6))); 840vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 841Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 7)), 842Vector512.Load(zPtr + (uint)(Vector512<T>.Count * 7))); 844vector1.Store(dPtr + (uint)(Vector512<T>.Count * 4)); 845vector2.Store(dPtr + (uint)(Vector512<T>.Count * 5)); 846vector3.Store(dPtr + (uint)(Vector512<T>.Count * 6)); 847vector4.Store(dPtr + (uint)(Vector512<T>.Count * 7)); 852xPtr += (uint)(Vector512<T>.Count * 8); 853yPtr += (uint)(Vector512<T>.Count * 8); 854zPtr += (uint)(Vector512<T>.Count * 8); 855dPtr += (uint)(Vector512<T>.Count * 8); 857remainder -= (uint)(Vector512<T>.Count * 8); 878remainder = (remainder + (uint)(Vector512<T>.Count - 1)) & (nuint)(-Vector512<T>.Count); 880switch (remainder / (uint)Vector512<T>.Count) 884Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 8)), 885Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 8)), 886Vector512.LoadUnsafe(ref zRef, remainder - (uint)(Vector512<T>.Count * 8))); 887vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 8)); 893Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 7)), 894Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 7)), 895Vector512.LoadUnsafe(ref zRef, remainder - (uint)(Vector512<T>.Count * 7))); 896vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 7)); 902Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 6)), 903Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 6)), 904Vector512.LoadUnsafe(ref zRef, remainder - (uint)(Vector512<T>.Count * 6))); 905vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 6)); 911Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 5)), 912Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 5)), 913Vector512.LoadUnsafe(ref zRef, remainder - (uint)(Vector512<T>.Count * 5))); 914vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 5)); 920Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 4)), 921Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 4)), 922Vector512.LoadUnsafe(ref zRef, remainder - (uint)(Vector512<T>.Count * 4))); 923vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 4)); 929Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 3)), 930Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 3)), 931Vector512.LoadUnsafe(ref zRef, remainder - (uint)(Vector512<T>.Count * 3))); 932vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 3)); 938Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 2)), 939Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 2)), 940Vector512.LoadUnsafe(ref zRef, remainder - (uint)(Vector512<T>.Count * 2))); 941vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 2)); 948end.StoreUnsafe(ref dRef, endIndex - (uint)Vector512<T>.Count); 1547if (TTernaryOperator.Vectorizable && Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported) 1549if (remainder >= (uint)Vector512<T>.Count) 2161Vector512<T> zVec = Vector512.Create(z); 2163Vector512<T> beg = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef), 2166Vector512<T> end = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<T>.Count), 2167Vector512.LoadUnsafe(ref yRef, remainder - (uint)Vector512<T>.Count), 2170if (remainder > (uint)(Vector512<T>.Count * 8)) 2197nuint misalignment = ((uint)sizeof(Vector512<T>) - ((nuint)dPtr % (uint)sizeof(Vector512<T>))) / (uint)sizeof(T); 2203Debug.Assert(((nuint)dPtr % (uint)sizeof(Vector512<T>)) == 0); 2208Vector512<T> vector1; 2209Vector512<T> vector2; 2210Vector512<T> vector3; 2211Vector512<T> vector4; 2218while (remainder >= (uint)(Vector512<T>.Count * 8)) 2222vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 2223Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 0)), 2225vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 2226Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 1)), 2228vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 2229Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 2)), 2231vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 2232Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 3)), 2235vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 0)); 2236vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 1)); 2237vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 2)); 2238vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 3)); 2242vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 2243Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 4)), 2245vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 2246Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 5)), 2248vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 2249Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 6)), 2251vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 2252Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 7)), 2255vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 4)); 2256vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 5)); 2257vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 6)); 2258vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 7)); 2263xPtr += (uint)(Vector512<T>.Count * 8); 2264yPtr += (uint)(Vector512<T>.Count * 8); 2265dPtr += (uint)(Vector512<T>.Count * 8); 2267remainder -= (uint)(Vector512<T>.Count * 8); 2272while (remainder >= (uint)(Vector512<T>.Count * 8)) 2276vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 2277Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 0)), 2279vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 2280Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 1)), 2282vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 2283Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 2)), 2285vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 2286Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 3)), 2289vector1.Store(dPtr + (uint)(Vector512<T>.Count * 0)); 2290vector2.Store(dPtr + (uint)(Vector512<T>.Count * 1)); 2291vector3.Store(dPtr + (uint)(Vector512<T>.Count * 2)); 2292vector4.Store(dPtr + (uint)(Vector512<T>.Count * 3)); 2296vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 2297Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 4)), 2299vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 2300Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 5)), 2302vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 2303Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 6)), 2305vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 2306Vector512.Load(yPtr + (uint)(Vector512<T>.Count * 7)), 2309vector1.Store(dPtr + (uint)(Vector512<T>.Count * 4)); 2310vector2.Store(dPtr + (uint)(Vector512<T>.Count * 5)); 2311vector3.Store(dPtr + (uint)(Vector512<T>.Count * 6)); 2312vector4.Store(dPtr + (uint)(Vector512<T>.Count * 7)); 2317xPtr += (uint)(Vector512<T>.Count * 8); 2318yPtr += (uint)(Vector512<T>.Count * 8); 2319dPtr += (uint)(Vector512<T>.Count * 8); 2321remainder -= (uint)(Vector512<T>.Count * 8); 2341remainder = (remainder + (uint)(Vector512<T>.Count - 1)) & (nuint)(-Vector512<T>.Count); 2343switch (remainder / (uint)Vector512<T>.Count) 2347Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 8)), 2348Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 8)), 2350vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 8)); 2356Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 7)), 2357Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 7)), 2359vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 7)); 2365Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 6)), 2366Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 6)), 2368vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 6)); 2374Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 5)), 2375Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 5)), 2377vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 5)); 2383Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 4)), 2384Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 4)), 2386vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 4)); 2392Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 3)), 2393Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 3)), 2395vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 3)); 2401Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 2)), 2402Vector512.LoadUnsafe(ref yRef, remainder - (uint)(Vector512<T>.Count * 2)), 2404vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 2)); 2411end.StoreUnsafe(ref dRef, endIndex - (uint)Vector512<T>.Count); 3033if (TTernaryOperator.Vectorizable && Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported) 3035if (remainder >= (uint)Vector512<T>.Count) 3637Vector512<T> yVec = Vector512.Create(y); 3638Vector512<T> zVec = Vector512.Create(z); 3640Vector512<T> beg = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef), 3643Vector512<T> end = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<T>.Count), 3647if (remainder > (uint)(Vector512<T>.Count * 8)) 3672nuint misalignment = ((uint)sizeof(Vector512<T>) - ((nuint)dPtr % (uint)sizeof(Vector512<T>))) / (uint)sizeof(T); 3677Debug.Assert(((nuint)dPtr % (uint)sizeof(Vector512<T>)) == 0); 3682Vector512<T> vector1; 3683Vector512<T> vector2; 3684Vector512<T> vector3; 3685Vector512<T> vector4; 3692while (remainder >= (uint)(Vector512<T>.Count * 8)) 3696vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 3699vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 3702vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 3705vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 3709vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 0)); 3710vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 1)); 3711vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 2)); 3712vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 3)); 3716vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 3719vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 3722vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 3725vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 3729vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 4)); 3730vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 5)); 3731vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 6)); 3732vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<T>.Count * 7)); 3737xPtr += (uint)(Vector512<T>.Count * 8); 3738dPtr += (uint)(Vector512<T>.Count * 8); 3740remainder -= (uint)(Vector512<T>.Count * 8); 3745while (remainder >= (uint)(Vector512<T>.Count * 8)) 3749vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 0)), 3752vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 1)), 3755vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 2)), 3758vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 3)), 3762vector1.Store(dPtr + (uint)(Vector512<T>.Count * 0)); 3763vector2.Store(dPtr + (uint)(Vector512<T>.Count * 1)); 3764vector3.Store(dPtr + (uint)(Vector512<T>.Count * 2)); 3765vector4.Store(dPtr + (uint)(Vector512<T>.Count * 3)); 3769vector1 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 4)), 3772vector2 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 5)), 3775vector3 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 6)), 3778vector4 = TTernaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<T>.Count * 7)), 3782vector1.Store(dPtr + (uint)(Vector512<T>.Count * 4)); 3783vector2.Store(dPtr + (uint)(Vector512<T>.Count * 5)); 3784vector3.Store(dPtr + (uint)(Vector512<T>.Count * 6)); 3785vector4.Store(dPtr + (uint)(Vector512<T>.Count * 7)); 3790xPtr += (uint)(Vector512<T>.Count * 8); 3791dPtr += (uint)(Vector512<T>.Count * 8); 3793remainder -= (uint)(Vector512<T>.Count * 8); 3812remainder = (remainder + (uint)(Vector512<T>.Count - 1)) & (nuint)(-Vector512<T>.Count); 3814switch (remainder / (uint)Vector512<T>.Count) 3818Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 8)), 3821vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 8)); 3827Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 7)), 3830vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 7)); 3836Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 6)), 3839vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 6)); 3845Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 5)), 3848vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 5)); 3854Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 4)), 3857vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 4)); 3863Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 3)), 3866vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 3)); 3872Vector512<T> vector = TTernaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<T>.Count * 2)), 3875vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<T>.Count * 2)); 3882end.StoreUnsafe(ref dRef, endIndex - (uint)Vector512<T>.Count);
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IUnaryInputBinaryOutput.cs (40)
19static abstract (Vector512<T> First, Vector512<T> Second) Invoke(Vector512<T> x); 29static abstract (Vector512<T> First, Vector512<T> Second) Invoke(Vector512<T> x, Vector512<T> y); 40public static (Vector512<T> First, Vector512<T> Second) Invoke(Vector512<T> x, Vector512<T> y) => TOperator.Invoke(y, x); 70if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && TUnaryOperator.Vectorizable) 72oneVectorFromEnd = x.Length - Vector512<T>.Count; 78(Vector512<T> first, Vector512<T> second) = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref sourceRef, (uint)i)); 82i += Vector512<T>.Count; 89i = x.Length - Vector512<T>.Count; 91(Vector512<T> first, Vector512<T> second) = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref sourceRef, (uint)i)); 205if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && TOperator.Vectorizable) 207oneVectorFromEnd = x.Length - Vector512<T>.Count; 213(Vector512<T> first, Vector512<T> second) = TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)i), Vector512.LoadUnsafe(ref yRef, (uint)i)); 217i += Vector512<T>.Count; 224Vector512<T> mask = Vector512.Equals(CreateRemainderMaskVector512<T>(x.Length - i), Vector512<T>.Zero); 226i = x.Length - Vector512<T>.Count; 228Vector512<T> first = Vector512.ConditionalSelect(mask, 232Vector512<T> second = Vector512.ConditionalSelect(mask, 386if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && TOperator.Vectorizable) 388oneVectorFromEnd = x.Length - Vector512<T>.Count; 391Vector512<T> yVec = Vector512.Create(y); 396(Vector512<T> first, Vector512<T> second) = TOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)i), yVec); 400i += Vector512<T>.Count; 407Vector512<T> mask = Vector512.Equals(CreateRemainderMaskVector512<T>(x.Length - i), Vector512<T>.Zero); 409i = x.Length - Vector512<T>.Count; 411Vector512<T> first = Vector512.ConditionalSelect(mask, 415Vector512<T> second = Vector512.ConditionalSelect(mask,
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IUnaryOneToFourOperator.cs (24)
21static abstract (Vector512<TOutput>, Vector512<TOutput>, Vector512<TOutput>, Vector512<TOutput>) Invoke(Vector512<TInput> x); 46Debug.Assert(Vector512<TInput>.IsSupported); 47Debug.Assert(Vector512<TOutput>.IsSupported); 49oneVectorFromEnd = x.Length - Vector512<TInput>.Count; 55(Vector512<TOutput>, Vector512<TOutput>, Vector512<TOutput>, Vector512<TOutput>) results = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref sourceRef, (uint)i)); 57results.Item2.StoreUnsafe(ref destinationRef, (uint)(i + Vector512<TOutput>.Count)); 58results.Item3.StoreUnsafe(ref destinationRef, (uint)(i + (Vector512<TOutput>.Count * 2))); 59results.Item4.StoreUnsafe(ref destinationRef, (uint)(i + (Vector512<TOutput>.Count * 3))); 61i += Vector512<TInput>.Count; 68i = x.Length - Vector512<TInput>.Count; 70(Vector512<TOutput>, Vector512<TOutput>, Vector512<TOutput>, Vector512<TOutput>) results = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref sourceRef, (uint)i)); 72results.Item2.StoreUnsafe(ref destinationRef, (uint)(i + Vector512<TOutput>.Count)); 73results.Item3.StoreUnsafe(ref destinationRef, (uint)(i + (Vector512<TOutput>.Count * 2))); 74results.Item4.StoreUnsafe(ref destinationRef, (uint)(i + (Vector512<TOutput>.Count * 3)));
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IUnaryOneToTwoOperator.cs (14)
21static abstract (Vector512<TOutput> Lower, Vector512<TOutput> Upper) Invoke(Vector512<TInput> x); 46Debug.Assert(Vector512<TInput>.IsSupported); 47Debug.Assert(Vector512<TOutput>.IsSupported); 49oneVectorFromEnd = x.Length - Vector512<TInput>.Count; 55(Vector512<TOutput> lower, Vector512<TOutput> upper) = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref sourceRef, (uint)i)); 57upper.StoreUnsafe(ref destinationRef, (uint)(i + Vector512<TOutput>.Count)); 59i += Vector512<TInput>.Count; 66i = x.Length - Vector512<TInput>.Count; 68(Vector512<TOutput> lower, Vector512<TOutput> upper) = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref sourceRef, (uint)i)); 70upper.StoreUnsafe(ref destinationRef, (uint)(i + Vector512<TOutput>.Count));
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IUnaryOperator.cs (83)
37static abstract Vector512<TOutput> Invoke(Vector512<TInput> x); 47public static Vector512<T> Invoke(Vector512<T> x) => x; 91if (Vector512.IsHardwareAccelerated && Vector512<TInput>.IsSupported && Vector512<TOutput>.IsSupported && TUnaryOperator.Vectorizable && sizeof(TInput) == sizeof(TOutput)) 93if (remainder >= (uint)Vector512<TInput>.Count) 587Vector512<TOutput> beg = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef)); 588Vector512<TOutput> end = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)Vector512<TInput>.Count)); 590if (remainder > (uint)(Vector512<TInput>.Count * 8)) 615nuint misalignment = ((uint)sizeof(Vector512<TInput>) - ((nuint)dPtr % (uint)sizeof(Vector512<TInput>))) / (uint)sizeof(TInput); 620Debug.Assert(((nuint)dPtr % (uint)sizeof(Vector512<TInput>)) == 0); 625Vector512<TOutput> vector1; 626Vector512<TOutput> vector2; 627Vector512<TOutput> vector3; 628Vector512<TOutput> vector4; 635while (remainder >= (uint)(Vector512<TInput>.Count * 8)) 639vector1 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 0))); 640vector2 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 1))); 641vector3 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 2))); 642vector4 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 3))); 644vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<TOutput>.Count * 0)); 645vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<TOutput>.Count * 1)); 646vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<TOutput>.Count * 2)); 647vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<TOutput>.Count * 3)); 651vector1 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 4))); 652vector2 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 5))); 653vector3 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 6))); 654vector4 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 7))); 656vector1.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<TOutput>.Count * 4)); 657vector2.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<TOutput>.Count * 5)); 658vector3.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<TOutput>.Count * 6)); 659vector4.StoreAlignedNonTemporal(dPtr + (uint)(Vector512<TOutput>.Count * 7)); 664xPtr += (uint)(Vector512<TInput>.Count * 8); 665dPtr += (uint)(Vector512<TInput>.Count * 8); 667remainder -= (uint)(Vector512<TInput>.Count * 8); 672while (remainder >= (uint)(Vector512<TInput>.Count * 8)) 676vector1 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 0))); 677vector2 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 1))); 678vector3 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 2))); 679vector4 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 3))); 681vector1.Store(dPtr + (uint)(Vector512<TOutput>.Count * 0)); 682vector2.Store(dPtr + (uint)(Vector512<TOutput>.Count * 1)); 683vector3.Store(dPtr + (uint)(Vector512<TOutput>.Count * 2)); 684vector4.Store(dPtr + (uint)(Vector512<TOutput>.Count * 3)); 688vector1 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 4))); 689vector2 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 5))); 690vector3 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 6))); 691vector4 = TUnaryOperator.Invoke(Vector512.Load(xPtr + (uint)(Vector512<TInput>.Count * 7))); 693vector1.Store(dPtr + (uint)(Vector512<TOutput>.Count * 4)); 694vector2.Store(dPtr + (uint)(Vector512<TOutput>.Count * 5)); 695vector3.Store(dPtr + (uint)(Vector512<TOutput>.Count * 6)); 696vector4.Store(dPtr + (uint)(Vector512<TOutput>.Count * 7)); 701xPtr += (uint)(Vector512<TInput>.Count * 8); 702dPtr += (uint)(Vector512<TOutput>.Count * 8); 704remainder -= (uint)(Vector512<TInput>.Count * 8); 723remainder = (remainder + (uint)(Vector512<TInput>.Count - 1)) & (nuint)(-Vector512<TInput>.Count); 725switch (remainder / (uint)Vector512<TInput>.Count) 729Vector512<TOutput> vector = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<TInput>.Count * 8))); 730vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<TOutput>.Count * 8)); 736Vector512<TOutput> vector = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<TInput>.Count * 7))); 737vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<TOutput>.Count * 7)); 743Vector512<TOutput> vector = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<TInput>.Count * 6))); 744vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<TOutput>.Count * 6)); 750Vector512<TOutput> vector = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<TInput>.Count * 5))); 751vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<TOutput>.Count * 5)); 757Vector512<TOutput> vector = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<TInput>.Count * 4))); 758vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<TOutput>.Count * 4)); 764Vector512<TOutput> vector = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<TInput>.Count * 3))); 765vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<TOutput>.Count * 3)); 771Vector512<TOutput> vector = TUnaryOperator.Invoke(Vector512.LoadUnsafe(ref xRef, remainder - (uint)(Vector512<TInput>.Count * 2))); 772vector.StoreUnsafe(ref dRef, remainder - (uint)(Vector512<TOutput>.Count * 2)); 779end.StoreUnsafe(ref dRef, endIndex - (uint)Vector512<TOutput>.Count);
System\Numerics\Tensors\netcore\Common\TensorPrimitives.IUnaryTwoToOneOperator.cs (10)
21static abstract Vector512<TOutput> Invoke(Vector512<TInput> lower, Vector512<TInput> upper); 46Debug.Assert(Vector512<TInput>.IsSupported); 47Debug.Assert(Vector512<TOutput>.IsSupported); 49twoVectorsFromEnd = x.Length - (Vector512<TInput>.Count * 2); 57Vector512.LoadUnsafe(ref xRef, (uint)(i + Vector512<TInput>.Count))).StoreUnsafe(ref destinationRef, (uint)i); 59i += Vector512<TInput>.Count * 2; 66i = x.Length - (Vector512<TInput>.Count * 2); 70Vector512.LoadUnsafe(ref xRef, (uint)(i + Vector512<TInput>.Count))).StoreUnsafe(ref destinationRef, (uint)i);
System\Numerics\Tensors\netcore\TensorPrimitives.Abs.cs (6)
92public static Vector512<T> Invoke(Vector512<T> x) 103Vector512<T> abs = Vector512.ConditionalSelect(Vector512.LessThan(x, Vector512<T>.Zero), -x, x); 104if (Vector512.LessThan(abs, Vector512<T>.Zero) != Vector512<T>.Zero)
System\Numerics\Tensors\netcore\TensorPrimitives.Acos.cs (2)
36public static Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.Acosh.cs (2)
36public static Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.AcosPi.cs (2)
36public static Vector512<T> Invoke(Vector512<T> x) => AcosOperator<T>.Invoke(x) / Vector512.Create(T.Pi);
System\Numerics\Tensors\netcore\TensorPrimitives.Add.cs (4)
70public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => x + y; 74public static T Invoke(Vector512<T> x) => Vector512.Sum(x);
System\Numerics\Tensors\netcore\TensorPrimitives.AddMultiply.cs (4)
102public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> z) => (x + y) * z;
System\Numerics\Tensors\netcore\TensorPrimitives.Asin.cs (2)
76public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Asinh.cs (2)
36public static Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.AsinPi.cs (2)
36public static Vector512<T> Invoke(Vector512<T> x) => AsinOperator<T>.Invoke(x) / Vector512.Create(T.Pi);
System\Numerics\Tensors\netcore\TensorPrimitives.Atan.cs (2)
36public static Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.Atan2.cs (3)
77public static Vector512<T> Invoke(Vector512<T> y, Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.Atan2Pi.cs (3)
77public static Vector512<T> Invoke(Vector512<T> y, Vector512<T> x) => Atan2Operator<T>.Invoke(y, x) / Vector512.Create(T.Pi);
System\Numerics\Tensors\netcore\TensorPrimitives.Atanh.cs (2)
36public static Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.AtanPi.cs (2)
36public static Vector512<T> Invoke(Vector512<T> x) => AtanOperator<T>.Invoke(x) / Vector512.Create(T.Pi);
System\Numerics\Tensors\netcore\TensorPrimitives.BitDecrement.cs (34)
144public static Vector512<T> Invoke(Vector512<T> x) 148Vector512<float> xFloat = x.AsSingle(); 149Vector512<uint> bits = xFloat.AsUInt32(); 152Vector512<uint> result = Vector512.ConditionalSelect( 154bits + Vector512<uint>.One, 155bits - Vector512<uint>.One); 158Vector512<uint> isPositiveZero = Vector512.IsZero(xFloat).AsUInt32(); 159Vector512<uint> specialValue = Vector512.Create(BitConverter.SingleToUInt32Bits(-float.Epsilon)) & isPositiveZero; 161Vector512<uint> isNaNOrNegInf = (Vector512.IsNaN(xFloat) | Vector512.IsNegativeInfinity(xFloat)).AsUInt32(); 164Vector512<uint> specialMask = isPositiveZero | isNaNOrNegInf; 170Vector512<double> xDouble = x.AsDouble(); 171Vector512<ulong> bits = xDouble.AsUInt64(); 174Vector512<ulong> result = Vector512.ConditionalSelect( 176bits + Vector512<ulong>.One, 177bits - Vector512<ulong>.One); 180Vector512<ulong> isPositiveZero = Vector512.IsZero(xDouble).AsUInt64(); 181Vector512<ulong> specialValue = Vector512.Create(BitConverter.DoubleToUInt64Bits(-double.Epsilon)) & isPositiveZero; 183Vector512<ulong> isNaNOrNegInf = (Vector512.IsNaN(xDouble) | Vector512.IsNegativeInfinity(xDouble)).AsUInt64(); 186Vector512<ulong> specialMask = isPositiveZero | isNaNOrNegInf; 264public static Vector512<short> Invoke(Vector512<short> x) 266Vector512<ushort> bits = x.AsUInt16(); 269Vector512<ushort> isNegative = Vector512.IsNegative(x).AsUInt16(); 270Vector512<ushort> result = Vector512.ConditionalSelect( 272bits + Vector512<ushort>.One, 273bits - Vector512<ushort>.One); 276Vector512<ushort> isPositiveZero = Vector512.IsZero(bits); 277Vector512<ushort> specialValue = Vector512.Create(NegativeEpsilonBits) & isPositiveZero; 281Vector512<ushort> absValue = bits & Vector512.Create((ushort)0x7FFF); 282Vector512<ushort> isNaN = Vector512.GreaterThan(absValue, Vector512.Create(PositiveInfinityBits)); 283Vector512<ushort> isNegInf = Vector512.Equals(bits, Vector512.Create(NegativeInfinityBits)); 284Vector512<ushort> isNaNOrNegInf = isNaN | isNegInf; 287Vector512<ushort> specialMask = isPositiveZero | isNaNOrNegInf;
System\Numerics\Tensors\netcore\TensorPrimitives.BitIncrement.cs (34)
144public static Vector512<T> Invoke(Vector512<T> x) 148Vector512<float> xFloat = x.AsSingle(); 149Vector512<uint> bits = xFloat.AsUInt32(); 152Vector512<uint> result = Vector512.ConditionalSelect( 154bits - Vector512<uint>.One, 155bits + Vector512<uint>.One); 158Vector512<uint> isNegativeZero = Vector512.Equals(bits, Vector512.Create(0x8000_0000u)); 159Vector512<uint> specialValue = Vector512.Create(0x0000_0001u) & isNegativeZero; 161Vector512<uint> isNaNOrPosInf = (Vector512.IsNaN(xFloat) | Vector512.IsPositiveInfinity(xFloat)).AsUInt32(); 164Vector512<uint> specialMask = isNegativeZero | isNaNOrPosInf; 170Vector512<double> xDouble = x.AsDouble(); 171Vector512<ulong> bits = xDouble.AsUInt64(); 174Vector512<ulong> result = Vector512.ConditionalSelect( 176bits - Vector512<ulong>.One, 177bits + Vector512<ulong>.One); 180Vector512<ulong> isNegativeZero = Vector512.Equals(bits, Vector512.Create(0x8000_0000_0000_0000ul)); 181Vector512<ulong> specialValue = Vector512.Create(0x0000_0000_0000_0001ul) & isNegativeZero; 183Vector512<ulong> isNaNOrPosInf = (Vector512.IsNaN(xDouble) | Vector512.IsPositiveInfinity(xDouble)).AsUInt64(); 186Vector512<ulong> specialMask = isNegativeZero | isNaNOrPosInf; 264public static Vector512<short> Invoke(Vector512<short> x) 266Vector512<ushort> bits = x.AsUInt16(); 269Vector512<ushort> isNegative = Vector512.IsNegative(x).AsUInt16(); 270Vector512<ushort> result = Vector512.ConditionalSelect( 272bits - Vector512<ushort>.One, 273bits + Vector512<ushort>.One); 276Vector512<ushort> isNegativeZero = Vector512.Equals(bits, Vector512.Create(NegativeZeroBits)); 277Vector512<ushort> specialValue = Vector512.Create(EpsilonBits) & isNegativeZero; 281Vector512<ushort> absValue = bits & Vector512.Create((ushort)0x7FFF); 282Vector512<ushort> isNaN = Vector512.GreaterThan(absValue, Vector512.Create(PositiveInfinityBits)); 283Vector512<ushort> isPosInf = Vector512.Equals(bits, Vector512.Create(PositiveInfinityBits)); 284Vector512<ushort> isNaNOrPosInf = isNaN | isPosInf; 287Vector512<ushort> specialMask = isNegativeZero | isNaNOrPosInf;
System\Numerics\Tensors\netcore\TensorPrimitives.BitwiseAnd.cs (3)
63public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => x & y;
System\Numerics\Tensors\netcore\TensorPrimitives.BitwiseOr.cs (3)
63public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => x | y;
System\Numerics\Tensors\netcore\TensorPrimitives.Cbrt.cs (2)
59public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Ceiling.cs (2)
64public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Clamp.cs (12)
224public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> min, Vector512<T> max) => Vector512.Clamp(x, min, max); 237public static Vector512<T> Invoke(Vector512<T> min, Vector512<T> max, Vector512<T> x) => Vector512.Clamp(x, min, max); 250public static Vector512<T> Invoke(Vector512<T> max, Vector512<T> x, Vector512<T> min) => Vector512.Clamp(x, min, max);
System\Numerics\Tensors\netcore\TensorPrimitives.ConvertChecked.cs (2)
40public static Vector512<TTo> Invoke(Vector512<TFrom> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.ConvertHelpers.cs (77)
170public static Vector512<float> Invoke(Vector512<int> x) => Vector512.ConvertToSingle(x); 181public static Vector512<float> Invoke(Vector512<uint> x) => Vector512.ConvertToSingle(x); 192public static Vector512<double> Invoke(Vector512<ulong> x) => Vector512.ConvertToDouble(x); 203public static Vector512<double> Invoke(Vector512<long> x) => Vector512.ConvertToDouble(x); 214public static (Vector512<double> Lower, Vector512<double> Upper) Invoke(Vector512<float> x) => Vector512.Widen(x); 225public static Vector512<float> Invoke(Vector512<double> lower, Vector512<double> upper) => Vector512.Narrow(lower, upper); 236public static (Vector512<ushort> Lower, Vector512<ushort> Upper) Invoke(Vector512<byte> x) => Vector512.Widen(x); 265public static (Vector512<uint>, Vector512<uint>, Vector512<uint>, Vector512<uint>) Invoke(Vector512<byte> x) 267(Vector512<ushort> Lower, Vector512<ushort> Upper) ushorts = Vector512.Widen(x); 268(Vector512<uint> Lower, Vector512<uint> Upper) uintsLower = Vector512.Widen(ushorts.Lower); 269(Vector512<uint> Lower, Vector512<uint> Upper) uintsUpper = Vector512.Widen(ushorts.Upper); 306public static (Vector512<float>, Vector512<float>, Vector512<float>, Vector512<float>) Invoke(Vector512<byte> x) 326public static (Vector512<short> Lower, Vector512<short> Upper) Invoke(Vector512<sbyte> x) => Vector512.Widen(x); 337public static (Vector512<uint> Lower, Vector512<uint> Upper) Invoke(Vector512<ushort> x) => Vector512.Widen(x); 348public static (Vector512<int> Lower, Vector512<int> Upper) Invoke(Vector512<short> x) => Vector512.Widen(x); 359public static (Vector512<ulong> Lower, Vector512<ulong> Upper) Invoke(Vector512<uint> x) => Vector512.Widen(x); 370public static (Vector512<long> Lower, Vector512<long> Upper) Invoke(Vector512<int> x) => Vector512.Widen(x); 496public static (Vector512<float> Lower, Vector512<float> Upper) Invoke(Vector512<short> x) 498(Vector512<int> lowerInt32, Vector512<int> upperInt32) = Vector512.Widen(x); 503static Vector512<float> HalfAsWidenedUInt32ToSingle(Vector512<uint> value) 506Vector512<uint> sign = value & Vector512.Create(SingleSignMask); 509Vector512<uint> bitValueInProcess = value; 512Vector512<uint> offsetExponent = bitValueInProcess & Vector512.Create(HalfExponentMask); 515Vector512<uint> subnormalMask = Vector512.Equals(offsetExponent, Vector512<uint>.Zero); 518Vector512<uint> infinityOrNaNMask = Vector512.Equals(offsetExponent, Vector512.Create(HalfExponentMask)); 521Vector512<uint> maskedExponentLowerBound = subnormalMask & Vector512.Create(ExponentLowerBound); 524Vector512<uint> offsetMaskedExponentLowerBound = Vector512.Create(ExponentOffset) | maskedExponentLowerBound; 530offsetMaskedExponentLowerBound = Vector512.ConditionalSelect(Vector512.Equals(infinityOrNaNMask, Vector512<uint>.Zero), 541Vector512<uint> absoluteValue = (bitValueInProcess.AsSingle() - maskedExponentLowerBound.AsSingle()).AsUInt32(); 701public static Vector512<ushort> Invoke(Vector512<float> lower, Vector512<float> upper) 707static Vector512<uint> SingleToHalfAsWidenedUInt32(Vector512<float> value) 709Vector512<uint> bitValue = value.AsUInt32(); 712Vector512<uint> sign = Vector512.ShiftRightLogical(bitValue & Vector512.Create(SingleSignMask), 16); 715Vector512<uint> realMask = Vector512.Equals(value, value).AsUInt32(); 724Vector512<uint> exponentOffset0 = Vector512.Max(value, Vector512.Create(MinExp).AsSingle()).AsUInt32(); 737Vector512<uint> maskedHalfExponentForNaN = ~realMask & Vector512.Create(ExponentMask); 743Vector512<uint> newExponent = Vector512.ShiftRightLogical(bitValue, 13); 755Vector512<uint> signAndMaskedExponent = maskedHalfExponentForNaN | sign;
System\Numerics\Tensors\netcore\TensorPrimitives.ConvertSaturating.cs (2)
40public static Vector512<TTo> Invoke(Vector512<TFrom> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.ConvertToInteger.cs (6)
76public static Vector512<TTo> Invoke(Vector512<TFrom> x) 80return Vector512.IsNegative(Vector512<TTo>.AllBitsSet) != Vector512<TTo>.Zero ? 87return Vector512.IsNegative(Vector512<TTo>.AllBitsSet) != Vector512<TTo>.Zero ?
System\Numerics\Tensors\netcore\TensorPrimitives.ConvertToIntegerNative.cs (6)
75public static Vector512<TTo> Invoke(Vector512<TFrom> x) 79return Vector512.IsNegative(Vector512<TTo>.AllBitsSet) != Vector512<TTo>.Zero ? 86return Vector512.IsNegative(Vector512<TTo>.AllBitsSet) != Vector512<TTo>.Zero ?
System\Numerics\Tensors\netcore\TensorPrimitives.ConvertTruncating.cs (28)
112public static Vector512<int> Invoke(Vector512<float> x) => Vector512.ConvertToInt32(x); 124public static Vector512<uint> Invoke(Vector512<float> x) => Vector512.ConvertToUInt32(x); 136public static Vector512<ulong> Invoke(Vector512<double> x) => Vector512.ConvertToUInt64(x); 148public static Vector512<long> Invoke(Vector512<double> x) => Vector512.ConvertToInt64(x); 159public static Vector512<byte> Invoke(Vector512<ushort> lower, Vector512<ushort> upper) => Vector512.Narrow(lower, upper); 170public static Vector512<sbyte> Invoke(Vector512<short> lower, Vector512<short> upper) => Vector512.Narrow(lower, upper); 181public static Vector512<ushort> Invoke(Vector512<uint> lower, Vector512<uint> upper) => Vector512.Narrow(lower, upper); 192public static Vector512<short> Invoke(Vector512<int> lower, Vector512<int> upper) => Vector512.Narrow(lower, upper); 203public static Vector512<uint> Invoke(Vector512<ulong> lower, Vector512<ulong> upper) => Vector512.Narrow(lower, upper); 214public static Vector512<int> Invoke(Vector512<long> lower, Vector512<long> upper) => Vector512.Narrow(lower, upper); 225public static Vector512<TTo> Invoke(Vector512<TFrom> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.CopySign.cs (3)
72public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y)
System\Numerics\Tensors\netcore\TensorPrimitives.Cos.cs (2)
101public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Cosh.cs (8)
122public static Vector512<T> Invoke(Vector512<T> t) 126Vector512<float> x = t.AsSingle(); 128Vector512<float> y = Vector512.Abs(x); 129Vector512<float> z = ExpOperator<float>.Invoke(y - Vector512.Create((float)Single_LOGV)); 135Vector512<double> x = t.AsDouble(); 137Vector512<double> y = Vector512.Abs(x); 138Vector512<double> z = ExpOperator<double>.Invoke(y - Vector512.Create(Double_LOGV));
System\Numerics\Tensors\netcore\TensorPrimitives.CosineSimilarity.cs (41)
61if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && x.Length >= Vector512<T>.Count) 66Vector512<T> dotProductVector = Vector512<T>.Zero; 67Vector512<T> xSumOfSquaresVector = Vector512<T>.Zero; 68Vector512<T> ySumOfSquaresVector = Vector512<T>.Zero; 71int oneVectorFromEnd = x.Length - Vector512<T>.Count; 80i += Vector512<T>.Count; 87Vector512<T> remainderMask = CreateRemainderMaskVector512<T>(x.Length - i); 90Vector512.LoadUnsafe(ref xRef, (uint)(x.Length - Vector512<T>.Count)) & remainderMask, 91Vector512.LoadUnsafe(ref yRef, (uint)(x.Length - Vector512<T>.Count)) & remainderMask, 201if (Vector512.IsHardwareAccelerated && x.Length >= Vector512<short>.Count) 207Vector512<float> dotProductVector = Vector512<float>.Zero; 208Vector512<float> xSumOfSquaresVector = Vector512<float>.Zero; 209Vector512<float> ySumOfSquaresVector = Vector512<float>.Zero; 212int oneVectorFromEnd = x.Length - Vector512<short>.Count; 216(Vector512<float> xVecLower, Vector512<float> xVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(Vector512.LoadUnsafe(ref xRef, (uint)i)); 217(Vector512<float> yVecLower, Vector512<float> yVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(Vector512.LoadUnsafe(ref yRef, (uint)i)); 222i += Vector512<short>.Count; 229Vector512<short> remainderMask = CreateRemainderMaskVector512<short>(x.Length - i); 231(Vector512<float> xVecLower, Vector512<float> xVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke( 232Vector512.LoadUnsafe(ref xRef, (uint)(x.Length - Vector512<short>.Count)) & remainderMask); 233(Vector512<float> yVecLower, Vector512<float> yVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke( 234Vector512.LoadUnsafe(ref yRef, (uint)(x.Length - Vector512<short>.Count)) & remainderMask); 363private static void Update<T>(Vector512<T> xVec, Vector512<T> yVec, ref Vector512<T> dotProductVector, ref Vector512<T> xSumOfSquaresVector, ref Vector512<T> ySumOfSquaresVector) where T : INumberBase<T> 383private static T Finalize<T>(Vector512<T> dotProductVector, Vector512<T> xSumOfSquaresVector, Vector512<T> ySumOfSquaresVector) where T : IRootFunctions<T> =>
System\Numerics\Tensors\netcore\TensorPrimitives.CosPi.cs (3)
94public static Vector512<T> Invoke(Vector512<T> x) 96Vector512<T> xpi = x * Vector512.Create(T.Pi);
System\Numerics\Tensors\netcore\TensorPrimitives.Decrement.cs (3)
39public static Vector512<T> Invoke(Vector512<T> x) => x - Vector512<T>.One;
System\Numerics\Tensors\netcore\TensorPrimitives.DegreesToRadians.cs (2)
65public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Distance.cs (4)
68public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) 70Vector512<T> tmp = x - y;
System\Numerics\Tensors\netcore\TensorPrimitives.Divide.cs (3)
98public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => x / y;
System\Numerics\Tensors\netcore\TensorPrimitives.DivRem.cs (5)
96public static (Vector512<T>, Vector512<T>) Invoke(Vector512<T> x, Vector512<T> y) 98Vector512<T> quotient = x / y;
System\Numerics\Tensors\netcore\TensorPrimitives.Exp.cs (2)
75public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Exp10.cs (2)
46public static Vector512<T> Invoke(Vector512<T> x) => ExpOperator<T>.Invoke(x * Vector512.Create(T.CreateTruncating(NaturalLog10)));
System\Numerics\Tensors\netcore\TensorPrimitives.Exp10M1.cs (3)
44public static Vector512<T> Invoke(Vector512<T> x) => Exp10Operator<T>.Invoke(x) - Vector512<T>.One;
System\Numerics\Tensors\netcore\TensorPrimitives.Exp2.cs (2)
46public static Vector512<T> Invoke(Vector512<T> x) => ExpOperator<T>.Invoke(x * Vector512.Create(T.CreateTruncating(NaturalLog2)));
System\Numerics\Tensors\netcore\TensorPrimitives.Exp2M1.cs (3)
44public static Vector512<T> Invoke(Vector512<T> x) => Exp2Operator<T>.Invoke(x) - Vector512<T>.One;
System\Numerics\Tensors\netcore\TensorPrimitives.ExpM1.cs (3)
44public static Vector512<T> Invoke(Vector512<T> x) => ExpOperator<T>.Invoke(x) - Vector512<T>.One;
System\Numerics\Tensors\netcore\TensorPrimitives.FloatHelpers.cs (10)
16private static Vector512<float> ApplyScalar<TOperator>(Vector512<float> floats) where TOperator : IUnaryOperator<float, float> => 25private static Vector512<double> ApplyScalar<TOperator>(Vector512<double> doubles) where TOperator : IUnaryOperator<double, double> => 54private static (Vector512<float> First, Vector512<float> Second) Apply2xScalar<TOperator>(Vector512<float> floats) 90private static (Vector512<double> First, Vector512<double> Second) Apply2xScalar<TOperator>(Vector512<double> doubles)
System\Numerics\Tensors\netcore\TensorPrimitives.Floor.cs (2)
64public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.FusedMultiplyAdd.cs (4)
150public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> z)
System\Numerics\Tensors\netcore\TensorPrimitives.Half.cs (31)
335public static Vector512<short> Invoke(Vector512<short> x) 337(Vector512<float> xVecLower, Vector512<float> xVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(x); 373public static Vector512<short> Invoke(Vector512<short> x, Vector512<short> y) 375(Vector512<float> xVecLower, Vector512<float> xVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(x); 376(Vector512<float> yVecLower, Vector512<float> yVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(y); 412public static Vector512<short> Invoke(Vector512<short> x, Vector512<short> y) 414(Vector512<float> xVecLower, Vector512<float> xVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(x); 415(Vector512<float> yVecLower, Vector512<float> yVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(y); 437public static short Invoke(Vector512<short> x) 439(Vector512<float> xVecLower, Vector512<float> xVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(x); 480public static Vector512<short> Invoke(Vector512<short> x, Vector512<short> y, Vector512<short> z) 482(Vector512<float> xVecLower, Vector512<float> xVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(x); 483(Vector512<float> yVecLower, Vector512<float> yVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(y); 484(Vector512<float> zVecLower, Vector512<float> zVecUpper) = WidenHalfAsInt16ToSingleOperator.Invoke(z);
System\Numerics\Tensors\netcore\TensorPrimitives.HammingDistance.cs (11)
79if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && x.Length >= Vector512<T>.Count) 84int oneVectorFromEnd = x.Length - Vector512<T>.Count; 88Vector512<T> xVec = Vector512.LoadUnsafe(ref xRef, (uint)i); 89Vector512<T> yVec = Vector512.LoadUnsafe(ref yRef, (uint)i); 93i += Vector512<T>.Count; 100Vector512<T> xVec = Vector512.LoadUnsafe(ref xRef, (uint)(x.Length - Vector512<T>.Count)); 101Vector512<T> yVec = Vector512.LoadUnsafe(ref yRef, (uint)(x.Length - Vector512<T>.Count)); 103Vector512<T> remainderMask = CreateRemainderMaskVector512<T>(x.Length - i);
System\Numerics\Tensors\netcore\TensorPrimitives.Hypot.cs (3)
69public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y)
System\Numerics\Tensors\netcore\TensorPrimitives.Ieee754Remainder.cs (3)
65public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.ILogB.cs (5)
42public static Vector512<int> Invoke(Vector512<T> x) => throw new NotSupportedException(); 53public static Vector512<int> Invoke(Vector512<double> lower, Vector512<double> upper) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.Increment.cs (3)
39public static Vector512<T> Invoke(Vector512<T> x) => x + Vector512<T>.One;
System\Numerics\Tensors\netcore\TensorPrimitives.IndexOfMax.cs (10)
34public static T Aggregate(Vector512<T> x) => HorizontalAggregate<T, MaxOperator<T>>(x); 78public static Vector512<T> Compare(Vector512<T> x, Vector512<T> y) 82Vector512<T> equalResult = Vector512.IsPositive(x) & Vector512.IsNegative(y); 98private static int IndexOfFirstMatch<T>(Vector512<T> mask) => 136private static unsafe Vector512<T> ElementWiseSelect<T>(Vector512<T> mask, Vector512<T> left, Vector512<T> right)
System\Numerics\Tensors\netcore\TensorPrimitives.IndexOfMaxMagnitude.cs (8)
33public static T Aggregate(Vector512<T> x) => HorizontalAggregate<T, MaxMagnitudeOperator<T>>(x); 112public static Vector512<T> Compare(Vector512<T> x, Vector512<T> y) 114Vector512<T> xMag = Vector512.Abs(x), yMag = Vector512.Abs(y); 117Vector512<T> equalResult = Vector512.IsPositive(x) & Vector512.IsNegative(y); 127Vector512<T> equalResult = Vector512.IsPositive(x) & Vector512.IsNegative(y); 128Vector512<T> nonOverflowResult = Vector512.GreaterThan(xMag, yMag) | (Vector512.Equals(xMag, yMag) & equalResult);
System\Numerics\Tensors\netcore\TensorPrimitives.IndexOfMin.cs (5)
33public static T Aggregate(Vector512<T> x) => HorizontalAggregate<T, MinOperator<T>>(x); 77public static Vector512<T> Compare(Vector512<T> x, Vector512<T> y) 81Vector512<T> equalResult = Vector512.IsNegative(x) & Vector512.IsPositive(y);
System\Numerics\Tensors\netcore\TensorPrimitives.IndexOfMinMagnitude.cs (8)
33public static T Aggregate(Vector512<T> x) => HorizontalAggregate<T, MinMagnitudeOperator<T>>(x); 112public static Vector512<T> Compare(Vector512<T> x, Vector512<T> y) 114Vector512<T> xMag = Vector512.Abs(x), yMag = Vector512.Abs(y); 117Vector512<T> equalResult = Vector512.IsNegative(x) & Vector512.IsPositive(y); 127Vector512<T> equalResult = Vector512.IsNegative(x) & Vector512.IsPositive(y); 128Vector512<T> nonOverflowResult = Vector512.LessThan(xMag, yMag) | (Vector512.Equals(xMag, yMag) & equalResult);
System\Numerics\Tensors\netcore\TensorPrimitives.IsCanonical.cs (3)
70public static Vector512<T> Invoke(Vector512<T> x) => Vector512<T>.AllBitsSet;
System\Numerics\Tensors\netcore\TensorPrimitives.IsComplexNumber.cs (2)
71public static Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.IsEvenInteger.cs (2)
53public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsEvenInteger(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsFinite.cs (2)
72public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsFinite(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsImaginaryNumber.cs (2)
71public static Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.IsInfinity.cs (2)
59public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsInfinity(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsInteger.cs (2)
70public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsInteger(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsNaN.cs (2)
70public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsNaN<T>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsNegative.cs (2)
74public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsNegative<T>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsNegativeInfinity.cs (2)
59public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsNegativeInfinity(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsNormal.cs (2)
56public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsNormal(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsOddInteger.cs (2)
53public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsOddInteger(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsPositive.cs (2)
52public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsPositive<T>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsPositiveInfinity.cs (2)
59public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsPositiveInfinity(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsPow2.cs (5)
62public static Vector512<T> Invoke(Vector512<T> x) => 63Vector512.Equals(x & (x - Vector512<T>.One), Vector512<T>.Zero) & 64Vector512.GreaterThan(x, Vector512<T>.Zero);
System\Numerics\Tensors\netcore\TensorPrimitives.IsRealNumber.cs (2)
70public static Vector512<T> Invoke(Vector512<T> x) => ~Vector512.IsNaN(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsSubnormal.cs (2)
59public static Vector512<T> Invoke(Vector512<T> x) => Vector512.IsSubnormal(x);
System\Numerics\Tensors\netcore\TensorPrimitives.IsZero.cs (3)
52public static Vector512<T> Invoke(Vector512<T> x) => Vector512.Equals(x, Vector512<T>.Zero);
System\Numerics\Tensors\netcore\TensorPrimitives.LeadingZeroCount.cs (11)
161public static Vector512<T> Invoke(Vector512<T> x) 170Vector512<byte> lookupVectorA = 179Vector512<byte> lookupVectorB = Vector512.Create((byte)1); 180Vector512<byte> bit7ZeroMask = Avx512BW.CompareLessThan(x.AsByte(), Vector512.Create((byte)128)); 188Vector512<uint> lowHalf = Vector512.Create((uint)0x0000FFFF); 189Vector512<uint> x_bot16 = (x.AsUInt32() << 16) | lowHalf; 190Vector512<uint> x_top16 = x.AsUInt32() | lowHalf; 191Vector512<uint> lz_bot16 = Avx512CD.LeadingZeroCount(x_bot16); 192Vector512<uint> lz_top16 = Avx512CD.LeadingZeroCount(x_top16); 193Vector512<uint> lz_top16_shift = lz_top16 << 16;
System\Numerics\Tensors\netcore\TensorPrimitives.Lerp.cs (4)
129public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> amount)
System\Numerics\Tensors\netcore\TensorPrimitives.Log.cs (5)
131public static Vector512<T> Invoke(Vector512<T> x) 153public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => LogOperator<T>.Invoke(x) / LogOperator<T>.Invoke(y);
System\Numerics\Tensors\netcore\TensorPrimitives.Log10.cs (2)
50public static Vector512<T> Invoke(Vector512<T> x) => LogOperator<T>.Invoke(x) / Vector512.Create(T.CreateTruncating(NaturalLog10));
System\Numerics\Tensors\netcore\TensorPrimitives.Log10P1.cs (3)
49public static Vector512<T> Invoke(Vector512<T> x) => Log10Operator<T>.Invoke(x + Vector512<T>.One);
System\Numerics\Tensors\netcore\TensorPrimitives.Log2.cs (2)
77public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Log2P1.cs (3)
49public static Vector512<T> Invoke(Vector512<T> x) => Log2Operator<T>.Invoke(x + Vector512<T>.One);
System\Numerics\Tensors\netcore\TensorPrimitives.LogP1.cs (3)
49public static Vector512<T> Invoke(Vector512<T> x) => LogOperator<T>.Invoke(x + Vector512<T>.One);
System\Numerics\Tensors\netcore\TensorPrimitives.Max.cs (16)
115public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => Vector512.Max(x, y); 119public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MaxOperator<T>>(x); 140if (Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported && x.Length >= Vector512<T>.Count) 146Vector512<T> result = Vector512.LoadUnsafe(ref xRef, 0); 147Vector512<T> current; 149Vector512<T> nanMask; 154if (nanMask != Vector512<T>.Zero) 160int oneVectorFromEnd = x.Length - Vector512<T>.Count; 161int i = Vector512<T>.Count; 173if (nanMask != Vector512<T>.Zero) 180i += Vector512<T>.Count; 186current = Vector512.LoadUnsafe(ref xRef, (uint)(x.Length - Vector512<T>.Count)); 192if (nanMask != Vector512<T>.Zero)
System\Numerics\Tensors\netcore\TensorPrimitives.MaxMagnitude.cs (4)
109public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) 116public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MaxMagnitudeOperator<T>>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.MaxMagnitudeNumber.cs (4)
124public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) 131public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MaxMagnitudeNumberOperator<T>>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.MaxNumber.cs (4)
117public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) 124public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MaxNumberOperator<T>>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.Min.cs (4)
114public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => Vector512.Min(x, y); 118public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MinOperator<T>>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.MinMagnitude.cs (4)
119public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) 126public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MinMagnitudeOperator<T>>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.MinMagnitudeNumber.cs (4)
124public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) 131public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MinMagnitudeNumberOperator<T>>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.MinNumber.cs (4)
117public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) 124public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MinNumberOperator<T>>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.Multiply.cs (4)
71public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => x * y; 75public static T Invoke(Vector512<T> x) => HorizontalAggregate<T, MultiplyOperator<T>>(x);
System\Numerics\Tensors\netcore\TensorPrimitives.MultiplyAdd.cs (4)
103public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> z) => (x * y) + z;
System\Numerics\Tensors\netcore\TensorPrimitives.MultiplyAddEstimate.cs (4)
154public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y, Vector512<T> z)
System\Numerics\Tensors\netcore\TensorPrimitives.Negate.cs (2)
41public static Vector512<T> Invoke(Vector512<T> x) => -x;
System\Numerics\Tensors\netcore\TensorPrimitives.OnesComplement.cs (2)
38public static Vector512<T> Invoke(Vector512<T> x) => ~x;
System\Numerics\Tensors\netcore\TensorPrimitives.PopCount.cs (16)
184public static Vector512<T> Invoke(Vector512<T> x) 188Vector512<byte> c1 = Vector512.Create((byte)0x55); 189Vector512<byte> c2 = Vector512.Create((byte)0x33); 190Vector512<byte> c3 = Vector512.Create((byte)0x0F); 196Vector512<byte> tmp = x.AsByte(); 204Vector512<ushort> c1 = Vector512.Create((ushort)0x5555); 205Vector512<ushort> c2 = Vector512.Create((ushort)0x3333); 206Vector512<ushort> c3 = Vector512.Create((ushort)0x0F0F); 207Vector512<ushort> c4 = Vector512.Create((ushort)0x0101); 209Vector512<ushort> tmp = x.AsUInt16(); 218Vector512<uint> c1 = Vector512.Create(0x55555555u); 219Vector512<uint> c2 = Vector512.Create(0x33333333u); 220Vector512<uint> c3 = Vector512.Create(0x0F0F0F0Fu); 221Vector512<uint> c4 = Vector512.Create(0x01010101u); 223Vector512<uint> tmp = x.AsUInt32();
System\Numerics\Tensors\netcore\TensorPrimitives.Pow.cs (3)
92public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y)
System\Numerics\Tensors\netcore\TensorPrimitives.RadiansToDegrees.cs (2)
58public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Reciprocal.cs (12)
106public static Vector512<T> Invoke(Vector512<T> x) => Vector512<T>.One / x; 115public static Vector512<T> Invoke(Vector512<T> x) => Vector512<T>.One / Vector512.Sqrt(x); 166public static Vector512<T> Invoke(Vector512<T> x) 174return Vector512<T>.One / x; 226public static Vector512<T> Invoke(Vector512<T> x) 234return Vector512<T>.One / Vector512.Sqrt(x);
System\Numerics\Tensors\netcore\TensorPrimitives.Remainder.cs (3)
107public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) =>
System\Numerics\Tensors\netcore\TensorPrimitives.RootN.cs (2)
61public Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Rotate.cs (4)
50public Vector512<T> Invoke(Vector512<T> x) => (x << _amount) | (x >>> ((sizeof(T) * 8) - _amount)); 63public Vector512<T> Invoke(Vector512<T> x) => (x >>> _amount) | (x << ((sizeof(T) * 8) - _amount));
System\Numerics\Tensors\netcore\TensorPrimitives.Round.cs (6)
172public static Vector512<T> Invoke(Vector512<T> x) 229public static Vector512<T> Invoke(Vector512<T> x) 256public Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.ScaleB.cs (2)
36public Vector512<T> Invoke(Vector512<T> x) => x * Vector512.Create(_pow2n);
System\Numerics\Tensors\netcore\TensorPrimitives.ShiftLeft.cs (2)
35public Vector512<T> Invoke(Vector512<T> x) => x << _amount;
System\Numerics\Tensors\netcore\TensorPrimitives.ShiftRightArithmetic.cs (2)
35public Vector512<T> Invoke(Vector512<T> x) => x >> _amount;
System\Numerics\Tensors\netcore\TensorPrimitives.ShiftRightLogical.cs (2)
35public Vector512<T> Invoke(Vector512<T> x) => x >>> _amount;
System\Numerics\Tensors\netcore\TensorPrimitives.Sigmoid.cs (2)
48public static Vector512<T> Invoke(Vector512<T> x) => Vector512.Create(T.One) / (Vector512.Create(T.One) + ExpOperator<T>.Invoke(-x));
System\Numerics\Tensors\netcore\TensorPrimitives.Sign.cs (11)
90public static Vector512<int> Invoke(Vector512<T> x) 94return Vector512.ConditionalSelect(Vector512.Equals(x, Vector512<T>.Zero).AsInt32(), 95Vector512<int>.Zero, 96Vector512<int>.One); 101Vector512<int> value = x.AsInt32(); 105if (Vector512.EqualsAny(Vector512.IsNaN(x).AsInt32(), Vector512<int>.AllBitsSet)) 110return Vector512.ConditionalSelect(Vector512.LessThan(x, Vector512<T>.Zero).AsInt32(), 112Vector512.ConditionalSelect(Vector512.GreaterThan(x, Vector512<T>.Zero).AsInt32(), 113Vector512<int>.One, 114Vector512<int>.Zero));
System\Numerics\Tensors\netcore\TensorPrimitives.Sin.cs (2)
91public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.SinCos.cs (3)
37public static (Vector512<T> First, Vector512<T> Second) Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.SinCosPi.cs (3)
37public static (Vector512<T> First, Vector512<T> Second) Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.Sinh.cs (12)
112public static Vector512<T> Invoke(Vector512<T> t) 116Vector512<float> x = t.AsSingle(); 118Vector512<float> y = Vector512.Abs(x); 119Vector512<float> z = ExpOperator<float>.Invoke(y - Vector512.Create((float)Single_LOGV)); 120Vector512<float> result = Vector512.Create((float)Single_HALFV) * (z - (Vector512.Create((float)Single_INVV2) / z)); 121Vector512<uint> sign = x.AsUInt32() & Vector512.Create(~(uint)int.MaxValue); 127Vector512<double> x = t.AsDouble(); 129Vector512<double> y = Vector512.Abs(x); 130Vector512<double> z = ExpOperator<double>.Invoke(y - Vector512.Create(Double_LOGV)); 131Vector512<double> result = Vector512.Create(Double_HALFV) * (z - (Vector512.Create(Double_INVV2) / z)); 132Vector512<ulong> sign = x.AsUInt64() & Vector512.Create(~(ulong)long.MaxValue);
System\Numerics\Tensors\netcore\TensorPrimitives.SinPi.cs (3)
94public static Vector512<T> Invoke(Vector512<T> x) 96Vector512<T> xpi = x * Vector512.Create(T.Pi);
System\Numerics\Tensors\netcore\TensorPrimitives.Sqrt.cs (2)
39public static Vector512<T> Invoke(Vector512<T> x) => Vector512.Sqrt(x);
System\Numerics\Tensors\netcore\TensorPrimitives.StdDev.cs (3)
60public Vector512<T> Invoke(Vector512<T> x) 62Vector512<T> diff = x - Vector512.Create(_subtrahend);
System\Numerics\Tensors\netcore\TensorPrimitives.Subtract.cs (3)
94public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => x - y;
System\Numerics\Tensors\netcore\TensorPrimitives.Sum.cs (2)
78public static Vector512<T> Invoke(Vector512<T> x) => x * x;
System\Numerics\Tensors\netcore\TensorPrimitives.Tan.cs (48)
94public static Vector512<T> Invoke(Vector512<T> x) 198public static Vector512<float> Invoke(Vector512<float> x) 200Vector512<float> uxMasked = Vector512.Abs(x); 206Vector512<float> dn = MultiplyAddEstimateOperator<float>.Invoke(uxMasked, Vector512.Create(2 / float.Pi), Vector512.Create(AlmHuge)); 207Vector512<uint> odd = dn.AsUInt32() << 31; 210Vector512<float> f = uxMasked; 216Vector512<float> f2 = f * f; 217Vector512<float> f4 = f2 * f2; 218Vector512<float> f8 = f4 * f4; 219Vector512<float> f12 = f8 * f4; 220Vector512<float> a1 = MultiplyAddEstimateOperator<float>.Invoke(Vector512.Create(C2), f2, Vector512.Create(C1)); 221Vector512<float> a2 = MultiplyAddEstimateOperator<float>.Invoke(Vector512.Create(C4), f2, Vector512.Create(C3)); 222Vector512<float> a3 = MultiplyAddEstimateOperator<float>.Invoke(Vector512.Create(C6), f2, Vector512.Create(C5)); 223Vector512<float> b1 = MultiplyAddEstimateOperator<float>.Invoke(a2, f4, a1); 224Vector512<float> b2 = MultiplyAddEstimateOperator<float>.Invoke(f8, a3, f12 * Vector512.Create(C7)); 225Vector512<float> poly = MultiplyAddEstimateOperator<float>.Invoke(f * f2, b1 + b2, f); 227Vector512<float> result = (poly.AsUInt32() ^ (x.AsUInt32() & Vector512.Create(~SignMask))).AsSingle(); 228return Vector512.ConditionalSelect(Vector512.Equals(odd, Vector512<uint>.Zero).AsSingle(), 355public static Vector512<double> Invoke(Vector512<double> x) 357Vector512<double> uxMasked = Vector512.Abs(x); 364Vector512<double> dn = MultiplyAddEstimateOperator<double>.Invoke(uxMasked, Vector512.Create(2 / double.Pi), Vector512.Create(AlmHuge)); 365Vector512<ulong> odd = dn.AsUInt64() << 63; 369Vector512<double> f = uxMasked; 375Vector512<double> g = f * f; 376Vector512<double> g2 = g * g; 377Vector512<double> g3 = g * g2; 378Vector512<double> g5 = g3 * g2; 379Vector512<double> g7 = g5 * g2; 380Vector512<double> g9 = g7 * g2; 381Vector512<double> g11 = g9 * g2; 382Vector512<double> g13 = g11 * g2; 383Vector512<double> a1 = MultiplyAddEstimateOperator<double>.Invoke(Vector512.Create(C3), g, Vector512.Create(C1)); 384Vector512<double> a2 = MultiplyAddEstimateOperator<double>.Invoke(Vector512.Create(C7), g, Vector512.Create(C5)); 385Vector512<double> a3 = MultiplyAddEstimateOperator<double>.Invoke(Vector512.Create(C11), g, Vector512.Create(C9)); 386Vector512<double> a4 = MultiplyAddEstimateOperator<double>.Invoke(Vector512.Create(C15), g, Vector512.Create(C13)); 387Vector512<double> a5 = MultiplyAddEstimateOperator<double>.Invoke(Vector512.Create(C19), g, Vector512.Create(C17)); 388Vector512<double> a6 = MultiplyAddEstimateOperator<double>.Invoke(Vector512.Create(C23), g, Vector512.Create(C21)); 389Vector512<double> a7 = MultiplyAddEstimateOperator<double>.Invoke(Vector512.Create(C27), g, Vector512.Create(C25)); 390Vector512<double> b1 = MultiplyAddEstimateOperator<double>.Invoke(g, a1, g3 * a2); 391Vector512<double> b2 = MultiplyAddEstimateOperator<double>.Invoke(g5, a3, g7 * a4); 392Vector512<double> b3 = MultiplyAddEstimateOperator<double>.Invoke(g9, a5, g11 * a6); 393Vector512<double> q = MultiplyAddEstimateOperator<double>.Invoke(g13, a7, b1 + b2 + b3); 394Vector512<double> poly = MultiplyAddEstimateOperator<double>.Invoke(f, q, f); 396Vector512<double> result = (poly.AsUInt64() ^ (x.AsUInt64() & Vector512.Create(~SignMask))).AsDouble(); 397return Vector512.ConditionalSelect(Vector512.Equals(odd, Vector512<ulong>.Zero).AsDouble(),
System\Numerics\Tensors\netcore\TensorPrimitives.Tanh.cs (10)
114public static Vector512<T> Invoke(Vector512<T> t) 118Vector512<float> x = t.AsSingle(); 120Vector512<float> y = Vector512.Abs(x); 121Vector512<float> z = ExpM1Operator<float>.Invoke(Vector512.Create(-2f) * y); 122Vector512<uint> sign = x.AsUInt32() & Vector512.Create(~(uint)int.MaxValue); 127Vector512<double> x = t.AsDouble(); 129Vector512<double> y = Vector512.Abs(x); 130Vector512<double> z = ExpM1Operator<double>.Invoke(Vector512.Create(-2d) * y); 131Vector512<ulong> sign = x.AsUInt64() & Vector512.Create(~(ulong)long.MaxValue);
System\Numerics\Tensors\netcore\TensorPrimitives.TanPi.cs (2)
46public static Vector512<T> Invoke(Vector512<T> x) => throw new NotSupportedException();
System\Numerics\Tensors\netcore\TensorPrimitives.TrailingZeroCount.cs (3)
56public static Vector512<T> Invoke(Vector512<T> x) 59return PopCountOperator<T>.Invoke(~x & (x - Vector512<T>.One));
System\Numerics\Tensors\netcore\TensorPrimitives.Truncate.cs (2)
66public static Vector512<T> Invoke(Vector512<T> x)
System\Numerics\Tensors\netcore\TensorPrimitives.Xor.cs (3)
63public static Vector512<T> Invoke(Vector512<T> x, Vector512<T> y) => x ^ y;
System.Private.CoreLib (4116)
src\runtime\src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Helper\Base64DecoderHelper.cs (17)
853Vector512<sbyte> vbmiLookup0 = Vector512.Create(decoder.VbmiLookup0).AsSByte(); 854Vector512<sbyte> vbmiLookup1 = Vector512.Create(decoder.VbmiLookup1).AsSByte(); 855Vector512<byte> vbmiPackedLanesControl = Vector512.Create( 861Vector512<sbyte> mergeConstant0 = Vector512.Create(0x01400140).AsSByte(); 862Vector512<short> mergeConstant1 = Vector512.Create(0x00011000).AsInt16(); 868if (!decoder.TryLoadVector512(src, srcStart, sourceLength, out Vector512<sbyte> str)) 877Vector512<sbyte> origIndex = Avx512Vbmi.PermuteVar64x8x2(vbmiLookup0, str, vbmiLookup1); 878Vector512<sbyte> errorVec = (origIndex.AsInt32() | str.AsInt32()).AsSByte(); 886Vector512<short> multiAdd1 = Avx512BW.MultiplyAddAdjacent(origIndex.AsByte(), mergeConstant0); 888Vector512<int> multiAdd2 = Avx512BW.MultiplyAddAdjacent(multiAdd1, mergeConstant1); 893AssertWrite<Vector512<sbyte>>(dest, destStart, destLength); 1547public unsafe bool TryLoadVector512(byte* src, byte* srcStart, int sourceLength, out Vector512<sbyte> str) 1549AssertRead<Vector512<sbyte>>(src, srcStart, sourceLength); 1717public unsafe bool TryLoadVector512(ushort* src, ushort* srcStart, int sourceLength, out Vector512<sbyte> str) 1719AssertRead<Vector512<ushort>>(src, srcStart, sourceLength); 1720Vector512<ushort> utf16VectorLower = Vector512.Load(src); 1721Vector512<ushort> utf16VectorUpper = Vector512.Load(src + 32);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Helper\Base64EncoderHelper.cs (17)
152Vector512<sbyte> shuffleVecVbmi = Vector512.Create( 157Vector512<sbyte> vbmiLookup = Vector512.Create(encoder.EncodingMap).AsSByte(); 159Vector512<ushort> maskAC = Vector512.Create((uint)0x0fc0fc00).AsUInt16(); 160Vector512<uint> maskBB = Vector512.Create((uint)0x3f003f00); 161Vector512<ushort> shiftAC = Vector512.Create((uint)0x0006000a).AsUInt16(); 162Vector512<ushort> shiftBB = Vector512.Create((uint)0x00080004).AsUInt16(); 170Vector512<sbyte> str = Vector512.Load(src).AsSByte(); 181Vector512<ushort> temp1 = (str.AsUInt16() & maskAC); 184Vector512<ushort> temp2 = Avx512BW.ShiftRightLogicalVariable(temp1, shiftAC).AsUInt16(); 187Vector512<ushort> temp3 = Avx512BW.ShiftLeftLogicalVariable(str.AsUInt16(), shiftBB).AsUInt16(); 203AssertRead<Vector512<sbyte>>(src, srcStart, sourceLength); 777public unsafe void StoreVector512ToDestination(byte* dest, byte* destStart, int destLength, Vector512<byte> str) 779AssertWrite<Vector512<sbyte>>(dest, destStart, destLength); 856public unsafe void StoreVector512ToDestination(ushort* dest, ushort* destStart, int destLength, Vector512<byte> str) 858AssertWrite<Vector512<short>>(dest, destStart, destLength); 859(Vector512<ushort> utf16LowVector, Vector512<ushort> utf16HighVector) = Vector512.Widen(str);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Helper\Base64Helper.cs (2)
97unsafe void StoreVector512ToDestination(T* dest, T* destStart, int destLength, Vector512<byte> str); 143unsafe bool TryLoadVector512(T* src, T* srcStart, int sourceLength, out Vector512<sbyte> str);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Url\Base64UrlDecoder.cs (2)
448public unsafe bool TryLoadVector512(byte* src, byte* srcStart, int sourceLength, out Vector512<sbyte> str) => 533public unsafe bool TryLoadVector512(ushort* src, ushort* srcStart, int sourceLength, out Vector512<sbyte> str) =>
src\runtime\src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Url\Base64UrlEncoder.cs (2)
298public unsafe void StoreVector512ToDestination(byte* dest, byte* destStart, int destLength, Vector512<byte> str) => 355public unsafe void StoreVector512ToDestination(ushort* dest, ushort* destStart, int destLength, Vector512<byte> str) =>
src\runtime\src\libraries\System.Private.CoreLib\src\System\Collections\BitArray.cs (18)
231while (valuesAsBytes.Length >= Vector512<byte>.Count) 233Vector512<byte> vector = Vector512.Create(valuesAsBytes); 234Vector512<byte> isFalse = Vector512.Equals(vector, Vector512<byte>.Zero); 238i += (uint)Vector512<byte>.Count; 239valuesAsBytes = valuesAsBytes.Slice(Vector512<byte>.Count); 520i = Apply<Vector512<byte>>(count, thisArray, valueArray); 837if (Vector512.IsHardwareAccelerated && (uint)_bitLength >= Vector512<byte>.Count) 842Vector512<byte> shuffleMask = Vector512.Create(lowerShuffleMask_CopyToBoolArray256, upperShuffleMask_CopyToBoolArray256); 843Vector512<byte> bitMask = Vector512.Create(0x80402010_08040201).AsByte(); 844Vector512<byte> ones = Vector512<byte>.One; 848for (; (i + Vector512<byte>.Count) <= (uint)_bitLength; i += (uint)Vector512<byte>.Count) 851Vector512<ulong> scalar = Vector512.Create(bits); 852Vector512<byte> shuffled = Vector512.Shuffle(scalar.AsByte(), shuffleMask); 853Vector512<byte> extracted = shuffled & bitMask; 857Vector512<byte> normalized = Vector512.Min(extracted, ones);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Globalization\Ordinal.cs (2)
167if (Vector512.IsHardwareAccelerated && length >= Vector512<ushort>.Count) 169return EqualsIgnoreCase_Vector<Vector512<ushort>>(ref charA, ref charB, length);
src\runtime\src\libraries\System.Private.CoreLib\src\System\MemoryExtensions.MinMax.cs (15)
205static abstract Vector512<T> Compare(Vector512<T> left, Vector512<T> right); 213public static Vector512<T> Compare(Vector512<T> left, Vector512<T> right) => Vector512.Min(left, right); 221public static Vector512<T> Compare(Vector512<T> left, Vector512<T> right) => Vector512.Max(left, right); 270else if (!Vector512.IsHardwareAccelerated || span.Length < Vector512<T>.Count) 289Vector512<T> best = Vector512.Create(data); 290data = data.Slice(Vector512<T>.Count); 292while (data.Length > Vector512<T>.Count) 295data = data.Slice(Vector512<T>.Count); 297best = TMinMax.Compare(best, Vector512.Create(span.Slice(span.Length - Vector512<T>.Count)));
src\runtime\src\libraries\System.Private.CoreLib\src\System\Numerics\BigIntegerCalculator.Shared.cs (5)
125while (Vector512.IsHardwareAccelerated && remaining.Length >= Vector512<nuint>.Count + 1) 127Vector512<nuint> current = Vector512.Create(remaining) >> shift; 128Vector512<nuint> carries = Vector512.Create(remaining.Slice(1)) << back; 130Vector512<nuint> newValue = current | carries; 133remaining = remaining.Slice(Vector512<nuint>.Count);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Numerics\Vector.cs (18)
470if (Vector<double>.Count == Vector512<double>.Count) 493if (Vector<double>.Count == Vector512<double>.Count) 601if (Vector<float>.Count == Vector512<float>.Count) 764if (Vector<T>.Count == Vector512<T>.Count) 883if (Vector<T>.Count == Vector512<T>.Count) 938if (Vector<T>.Count == Vector512<T>.Count) 962if (Vector<T>.Count == Vector512<T>.Count) 986if (Vector<T>.Count == Vector512<T>.Count) 1010if (Vector<T>.Count == Vector512<T>.Count) 1034if (Vector<T>.Count == Vector512<T>.Count) 1058if (Vector<T>.Count == Vector512<T>.Count) 1091if (Vector<T>.Count == Vector512<T>.Count) 1115if (Vector<T>.Count == Vector512<T>.Count) 1147if (Vector<T>.Count == Vector512<T>.Count) 1701if (Vector<T>.Count == Vector512<T>.Count) 1939if (Vector<T>.Count == Vector512<T>.Count) 2981if (Vector<uint>.Count == Vector512<uint>.Count) 3007if (Vector<ulong>.Count == Vector512<ulong>.Count)
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\Vector256.cs (21)
834return VectorMath.AsinSingle<Vector256<float>, Vector256<int>, Vector512<double>, Vector512<long>>(vector); 875return VectorMath.CosSingle<Vector256<float>, Vector256<int>, Vector512<double>, Vector512<long>>(vector); 1853return VectorMath.DegreesToRadiansSingle<Vector256<float>, Vector512<double>>(degrees); 1960return VectorMath.ExpSingle<Vector256<float>, Vector256<uint>, Vector512<double>, Vector512<ulong>>(vector); 2204return VectorMath.HypotSingle<Vector256<float>, Vector512<double>>(x, y); 3183return VectorMath.RadiansToDegreesSingle<Vector256<float>, Vector512<double>>(radians); 3638return VectorMath.SinSingle<Vector256<float>, Vector256<int>, Vector512<double>, Vector512<long>>(vector); 3682return VectorMath.SinCosSingle<Vector256<float>, Vector256<int>, Vector512<double>, Vector512<long>>(vector); 3837/// <summary>Converts the given vector to a new <see cref="Vector512{T}" /> with the lower 256-bits set to the value of the given vector and the upper 256-bits initialized to zero.</summary> 3840/// <returns>A new <see cref="Vector512{T}" /> with the lower 256-bits set to the value of <paramref name="vector" /> and the upper 256-bits initialized to zero.</returns> 3843public static Vector512<T> ToVector512<T>(this Vector256<T> vector) 3847Vector512<T> result = default; 3852/// <summary>Converts the given vector to a new <see cref="Vector512{T}" /> with the lower 256-bits set to the value of the given vector and the upper 256-bits left uninitialized.</summary> 3855/// <returns>A new <see cref="Vector512{T}" /> with the lower 256-bits set to the value of <paramref name="vector" /> and the upper 256-bits left uninitialized.</returns> 3858public static Vector512<T> ToVector512Unsafe<T>(this Vector256<T> vector) 3865Unsafe.SkipInit(out Vector512<T> result);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\Vector512_1.cs (367)
31public readonly unsafe struct Vector512<T> : ISimdVector<Vector512<T>, T> 36/// <summary>Gets a new <see cref="Vector512{T}" /> with all bits set to 1.</summary> 38public static Vector512<T> AllBitsSet 44/// <summary>Gets the number of <typeparamref name="T" /> that are in a <see cref="Vector512{T}" />.</summary> 56/// <summary>Gets a new <see cref="Vector512{T}" /> with the elements set to their index.</summary> 58public static Vector512<T> Indices 65Unsafe.SkipInit(out Vector512<T> result); 99/// <summary>Gets a new <see cref="Vector512{T}" /> with all elements initialized to one.</summary> 101public static Vector512<T> One 107/// <summary>Gets a new <see cref="Vector512{T}" /> with all elements initialized to zero.</summary> 109public static Vector512<T> Zero 135public static Vector512<T> operator +(Vector512<T> left, Vector512<T> right) 150public static Vector512<T> operator &(Vector512<T> left, Vector512<T> right) 165public static Vector512<T> operator |(Vector512<T> left, Vector512<T> right) 180public static Vector512<T> operator /(Vector512<T> left, Vector512<T> right) 194public static Vector512<T> operator /(Vector512<T> left, T right) 209public static bool operator ==(Vector512<T> left, Vector512<T> right) 222public static Vector512<T> operator ^(Vector512<T> left, Vector512<T> right) 236public static bool operator !=(Vector512<T> left, Vector512<T> right) => !(left == right); 244public static Vector512<T> operator <<(Vector512<T> value, int shiftCount) 259public static Vector512<T> operator *(Vector512<T> left, Vector512<T> right) 274public static Vector512<T> operator *(Vector512<T> left, T right) 288public static Vector512<T> operator *(T left, Vector512<T> right) => right * left; 296public static Vector512<T> operator ~(Vector512<T> vector) 310public static Vector512<T> operator >>(Vector512<T> value, int shiftCount) 325public static Vector512<T> operator -(Vector512<T> left, Vector512<T> right) 339public static Vector512<T> operator -(Vector512<T> vector) 343return vector ^ Vector512<float>.NegativeZero.As<float, T>(); 347return vector ^ Vector512<double>.NegativeZero.As<double, T>(); 360public static Vector512<T> operator +(Vector512<T> value) 372public static Vector512<T> operator >>>(Vector512<T> value, int shiftCount) 382/// <returns><c>true</c> if <paramref name="obj" /> is a <see cref="Vector512{T}" /> and is equal to the current instance; otherwise, <c>false</c>.</returns> 383public override bool Equals([NotNullWhen(true)] object? obj) => (obj is Vector512<T> other) && Equals(other); 385/// <summary>Determines whether the specified <see cref="Vector512{T}" /> is equal to the current instance.</summary> 386/// <param name="other">The <see cref="Vector512{T}" /> to compare with the current instance.</param> 390public bool Equals(Vector512<T> other) 399Vector512<T> result = Vector512.Equals(this, other) | ~(Vector512.Equals(this, this) | Vector512.Equals(other, other)); 400return result.AsInt32() == Vector512<int>.AllBitsSet; 461static int ISimdVector<Vector512<T>, T>.Alignment => Vector512.Alignment; 464static int ISimdVector<Vector512<T>, T>.ElementCount => Vector512<T>.Count; 467static bool ISimdVector<Vector512<T>, T>.IsHardwareAccelerated 475static Vector512<T> ISimdVector<Vector512<T>, T>.Abs(Vector512<T> vector) => Vector512.Abs(vector); 479static Vector512<T> ISimdVector<Vector512<T>, T>.Add(Vector512<T> left, Vector512<T> right) => left + right; 483static bool ISimdVector<Vector512<T>, T>.All(Vector512<T> vector, T value) => Vector512.All(vector, value); 487static bool ISimdVector<Vector512<T>, T>.AllWhereAllBitsSet(Vector512<T> vector) => Vector512.AllWhereAllBitsSet(vector); 491static Vector512<T> ISimdVector<Vector512<T>, T>.AndNot(Vector512<T> left, Vector512<T> right) => Vector512.AndNot(left, right); 495static bool ISimdVector<Vector512<T>, T>.Any(Vector512<T> vector, T value) => Vector512.Any(vector, value); 499static bool ISimdVector<Vector512<T>, T>.AnyWhereAllBitsSet(Vector512<T> vector) => Vector512.AnyWhereAllBitsSet(vector); 503static Vector512<T> ISimdVector<Vector512<T>, T>.BitwiseAnd(Vector512<T> left, Vector512<T> right) => left & right; 507static Vector512<T> ISimdVector<Vector512<T>, T>.BitwiseOr(Vector512<T> left, Vector512<T> right) => left | right; 511static Vector512<T> ISimdVector<Vector512<T>, T>.Ceiling(Vector512<T> vector) => Vector512.Ceiling(vector); 515static Vector512<T> ISimdVector<Vector512<T>, T>.Clamp(Vector512<T> value, Vector512<T> min, Vector512<T> max) => Vector512.Clamp(value, min, max); 519static Vector512<T> ISimdVector<Vector512<T>, T>.ClampNative(Vector512<T> value, Vector512<T> min, Vector512<T> max) => Vector512.ClampNative(value, min, max); 523static Vector512<T> ISimdVector<Vector512<T>, T>.ConditionalSelect(Vector512<T> condition, Vector512<T> left, Vector512<T> right) => Vector512.ConditionalSelect(condition, left, right); 527static Vector512<T> ISimdVector<Vector512<T>, T>.CopySign(Vector512<T> value, Vector512<T> sign) => Vector512.CopySign(value, sign); 530static void ISimdVector<Vector512<T>, T>.CopyTo(Vector512<T> vector, T[] destination) => vector.CopyTo(destination); 533static void ISimdVector<Vector512<T>, T>.CopyTo(Vector512<T> vector, T[] destination, int startIndex) => vector.CopyTo(destination, startIndex); 536static void ISimdVector<Vector512<T>, T>.CopyTo(Vector512<T> vector, Span<T> destination) => vector.CopyTo(destination); 540static int ISimdVector<Vector512<T>, T>.Count(Vector512<T> vector, T value) => Vector512.Count(vector, value); 544static int ISimdVector<Vector512<T>, T>.CountWhereAllBitsSet(Vector512<T> vector) => Vector512.CountWhereAllBitsSet(vector); 548static Vector512<T> ISimdVector<Vector512<T>, T>.Create(T value) => Vector512.Create(value); 551static Vector512<T> ISimdVector<Vector512<T>, T>.Create(T[] values) => Vector512.Create(values); 554static Vector512<T> ISimdVector<Vector512<T>, T>.Create(T[] values, int index) => Vector512.Create(values, index); 557static Vector512<T> ISimdVector<Vector512<T>, T>.Create(ReadOnlySpan<T> values) => Vector512.Create(values); 561static Vector512<T> ISimdVector<Vector512<T>, T>.CreateScalar(T value) => Vector512.CreateScalar(value); 565static Vector512<T> ISimdVector<Vector512<T>, T>.CreateScalarUnsafe(T value) => Vector512.CreateScalarUnsafe(value); 569static Vector512<T> ISimdVector<Vector512<T>, T>.Divide(Vector512<T> left, Vector512<T> right) => left / right; 573static Vector512<T> ISimdVector<Vector512<T>, T>.Divide(Vector512<T> left, T right) => left / right; 577static T ISimdVector<Vector512<T>, T>.Dot(Vector512<T> left, Vector512<T> right) => Vector512.Dot(left, right); 581static Vector512<T> ISimdVector<Vector512<T>, T>.Equals(Vector512<T> left, Vector512<T> right) => Vector512.Equals(left, right); 585static bool ISimdVector<Vector512<T>, T>.EqualsAll(Vector512<T> left, Vector512<T> right) => left == right; 589static bool ISimdVector<Vector512<T>, T>.EqualsAny(Vector512<T> left, Vector512<T> right) => Vector512.EqualsAny(left, right); 593static Vector512<T> ISimdVector<Vector512<T>, T>.Floor(Vector512<T> vector) => Vector512.Floor(vector); 597static T ISimdVector<Vector512<T>, T>.GetElement(Vector512<T> vector, int index) => vector.GetElement(index); 601static Vector512<T> ISimdVector<Vector512<T>, T>.GreaterThan(Vector512<T> left, Vector512<T> right) => Vector512.GreaterThan(left, right); 605static bool ISimdVector<Vector512<T>, T>.GreaterThanAll(Vector512<T> left, Vector512<T> right) => Vector512.GreaterThanAll(left, right); 609static bool ISimdVector<Vector512<T>, T>.GreaterThanAny(Vector512<T> left, Vector512<T> right) => Vector512.GreaterThanAny(left, right); 613static Vector512<T> ISimdVector<Vector512<T>, T>.GreaterThanOrEqual(Vector512<T> left, Vector512<T> right) => Vector512.GreaterThanOrEqual(left, right); 617static bool ISimdVector<Vector512<T>, T>.GreaterThanOrEqualAll(Vector512<T> left, Vector512<T> right) => Vector512.GreaterThanOrEqualAll(left, right); 621static bool ISimdVector<Vector512<T>, T>.GreaterThanOrEqualAny(Vector512<T> left, Vector512<T> right) => Vector512.GreaterThanOrEqualAny(left, right); 625static int ISimdVector<Vector512<T>, T>.IndexOf(Vector512<T> vector, T value) => Vector512.IndexOf(vector, value); 629static int ISimdVector<Vector512<T>, T>.IndexOfWhereAllBitsSet(Vector512<T> vector) => Vector512.IndexOfWhereAllBitsSet(vector); 633static Vector512<T> ISimdVector<Vector512<T>, T>.IsEvenInteger(Vector512<T> vector) => Vector512.IsEvenInteger(vector); 637static Vector512<T> ISimdVector<Vector512<T>, T>.IsFinite(Vector512<T> vector) => Vector512.IsFinite(vector); 641static Vector512<T> ISimdVector<Vector512<T>, T>.IsInfinity(Vector512<T> vector) => Vector512.IsInfinity(vector); 645static Vector512<T> ISimdVector<Vector512<T>, T>.IsInteger(Vector512<T> vector) => Vector512.IsInteger(vector); 649static Vector512<T> ISimdVector<Vector512<T>, T>.IsNaN(Vector512<T> vector) => Vector512.IsNaN(vector); 653static Vector512<T> ISimdVector<Vector512<T>, T>.IsNegative(Vector512<T> vector) => Vector512.IsNegative(vector); 657static Vector512<T> ISimdVector<Vector512<T>, T>.IsNegativeInfinity(Vector512<T> vector) => Vector512.IsNegativeInfinity(vector); 661static Vector512<T> ISimdVector<Vector512<T>, T>.IsNormal(Vector512<T> vector) => Vector512.IsNormal(vector); 665static Vector512<T> ISimdVector<Vector512<T>, T>.IsOddInteger(Vector512<T> vector) => Vector512.IsOddInteger(vector); 669static Vector512<T> ISimdVector<Vector512<T>, T>.IsPositive(Vector512<T> vector) => Vector512.IsPositive(vector); 673static Vector512<T> ISimdVector<Vector512<T>, T>.IsPositiveInfinity(Vector512<T> vector) => Vector512.IsPositiveInfinity(vector); 677static Vector512<T> ISimdVector<Vector512<T>, T>.IsSubnormal(Vector512<T> vector) => Vector512.IsSubnormal(vector); 680static Vector512<T> ISimdVector<Vector512<T>, T>.IsZero(Vector512<T> vector) => Vector512.IsZero(vector); 684static int ISimdVector<Vector512<T>, T>.LastIndexOf(Vector512<T> vector, T value) => Vector512.LastIndexOf(vector, value); 688static int ISimdVector<Vector512<T>, T>.LastIndexOfWhereAllBitsSet(Vector512<T> vector) => Vector512.LastIndexOfWhereAllBitsSet(vector); 692static Vector512<T> ISimdVector<Vector512<T>, T>.LessThan(Vector512<T> left, Vector512<T> right) => Vector512.LessThan(left, right); 696static bool ISimdVector<Vector512<T>, T>.LessThanAll(Vector512<T> left, Vector512<T> right) => Vector512.LessThanAll(left, right); 700static bool ISimdVector<Vector512<T>, T>.LessThanAny(Vector512<T> left, Vector512<T> right) => Vector512.LessThanAny(left, right); 704static Vector512<T> ISimdVector<Vector512<T>, T>.LessThanOrEqual(Vector512<T> left, Vector512<T> right) => Vector512.LessThanOrEqual(left, right); 708static bool ISimdVector<Vector512<T>, T>.LessThanOrEqualAll(Vector512<T> left, Vector512<T> right) => Vector512.LessThanOrEqualAll(left, right); 712static bool ISimdVector<Vector512<T>, T>.LessThanOrEqualAny(Vector512<T> left, Vector512<T> right) => Vector512.LessThanOrEqualAny(left, right); 716static Vector512<T> ISimdVector<Vector512<T>, T>.Load(T* source) => Vector512.Load(source); 720static Vector512<T> ISimdVector<Vector512<T>, T>.LoadAligned(T* source) => Vector512.LoadAligned(source); 724static Vector512<T> ISimdVector<Vector512<T>, T>.LoadAlignedNonTemporal(T* source) => Vector512.LoadAlignedNonTemporal(source); 728static Vector512<T> ISimdVector<Vector512<T>, T>.LoadUnsafe(ref readonly T source) => Vector512.LoadUnsafe(in source); 732static Vector512<T> ISimdVector<Vector512<T>, T>.LoadUnsafe(ref readonly T source, nuint elementOffset) => Vector512.LoadUnsafe(in source, elementOffset); 736static Vector512<T> ISimdVector<Vector512<T>, T>.Max(Vector512<T> left, Vector512<T> right) => Vector512.Max(left, right); 740static Vector512<T> ISimdVector<Vector512<T>, T>.MaxMagnitude(Vector512<T> left, Vector512<T> right) => Vector512.MaxMagnitude(left, right); 744static Vector512<T> ISimdVector<Vector512<T>, T>.MaxMagnitudeNumber(Vector512<T> left, Vector512<T> right) => Vector512.MaxMagnitudeNumber(left, right); 748static Vector512<T> ISimdVector<Vector512<T>, T>.MaxNative(Vector512<T> left, Vector512<T> right) => Vector512.MaxNative(left, right); 752static Vector512<T> ISimdVector<Vector512<T>, T>.MaxNumber(Vector512<T> left, Vector512<T> right) => Vector512.MaxNumber(left, right); 756static Vector512<T> ISimdVector<Vector512<T>, T>.Min(Vector512<T> left, Vector512<T> right) => Vector512.Min(left, right); 760static Vector512<T> ISimdVector<Vector512<T>, T>.MinMagnitude(Vector512<T> left, Vector512<T> right) => Vector512.MinMagnitude(left, right); 764static Vector512<T> ISimdVector<Vector512<T>, T>.MinMagnitudeNumber(Vector512<T> left, Vector512<T> right) => Vector512.MinMagnitudeNumber(left, right); 768static Vector512<T> ISimdVector<Vector512<T>, T>.MinNative(Vector512<T> left, Vector512<T> right) => Vector512.MinNative(left, right); 772static Vector512<T> ISimdVector<Vector512<T>, T>.MinNumber(Vector512<T> left, Vector512<T> right) => Vector512.MinNumber(left, right); 776static Vector512<T> ISimdVector<Vector512<T>, T>.Multiply(Vector512<T> left, Vector512<T> right) => left * right; 780static Vector512<T> ISimdVector<Vector512<T>, T>.Multiply(Vector512<T> left, T right) => left * right; 784static Vector512<T> ISimdVector<Vector512<T>, T>.MultiplyAddEstimate(Vector512<T> left, Vector512<T> right, Vector512<T> addend) => Vector512.MultiplyAddEstimate(left, right, addend); 788static Vector512<T> ISimdVector<Vector512<T>, T>.Negate(Vector512<T> vector) => -vector; 792static bool ISimdVector<Vector512<T>, T>.None(Vector512<T> vector, T value) => Vector512.None(vector, value); 796static bool ISimdVector<Vector512<T>, T>.NoneWhereAllBitsSet(Vector512<T> vector) => Vector512.NoneWhereAllBitsSet(vector); 800static Vector512<T> ISimdVector<Vector512<T>, T>.OnesComplement(Vector512<T> vector) => ~vector; 804static Vector512<T> ISimdVector<Vector512<T>, T>.Round(Vector512<T> vector) => Vector512.Round(vector); 808static Vector512<T> ISimdVector<Vector512<T>, T>.ShiftLeft(Vector512<T> vector, int shiftCount) => vector << shiftCount; 812static Vector512<T> ISimdVector<Vector512<T>, T>.ShiftRightArithmetic(Vector512<T> vector, int shiftCount) => vector >> shiftCount; 816static Vector512<T> ISimdVector<Vector512<T>, T>.ShiftRightLogical(Vector512<T> vector, int shiftCount) => vector >>> shiftCount; 820static Vector512<T> ISimdVector<Vector512<T>, T>.Sqrt(Vector512<T> vector) => Vector512.Sqrt(vector); 824static void ISimdVector<Vector512<T>, T>.Store(Vector512<T> source, T* destination) => source.Store(destination); 828static void ISimdVector<Vector512<T>, T>.StoreAligned(Vector512<T> source, T* destination) => source.StoreAligned(destination); 832static void ISimdVector<Vector512<T>, T>.StoreAlignedNonTemporal(Vector512<T> source, T* destination) => source.StoreAlignedNonTemporal(destination); 836static void ISimdVector<Vector512<T>, T>.StoreUnsafe(Vector512<T> vector, ref T destination) => vector.StoreUnsafe(ref destination); 840static void ISimdVector<Vector512<T>, T>.StoreUnsafe(Vector512<T> vector, ref T destination, nuint elementOffset) => vector.StoreUnsafe(ref destination, elementOffset); 844static Vector512<T> ISimdVector<Vector512<T>, T>.Subtract(Vector512<T> left, Vector512<T> right) => left - right; 848static T ISimdVector<Vector512<T>, T>.Sum(Vector512<T> vector) => Vector512.Sum(vector); 852static T ISimdVector<Vector512<T>, T>.ToScalar(Vector512<T> vector) => vector.ToScalar(); 856static Vector512<T> ISimdVector<Vector512<T>, T>.Truncate(Vector512<T> vector) => Vector512.Truncate(vector); 859static bool ISimdVector<Vector512<T>, T>.TryCopyTo(Vector512<T> vector, Span<T> destination) => vector.TryCopyTo(destination); 863static Vector512<T> ISimdVector<Vector512<T>, T>.WithElement(Vector512<T> vector, int index, T value) => vector.WithElement(index, value); 867static Vector512<T> ISimdVector<Vector512<T>, T>.Xor(Vector512<T> left, Vector512<T> right) => left ^ right;
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\Vector512.cs (990)
57extension<T>(Vector512<T>) 61public static Vector512<T> E 68public static Vector512<T> Pi 75public static Vector512<T> Tau 83extension<T>(Vector512<T>) 87public static Vector512<T> Epsilon 94public static Vector512<T> NaN 101public static Vector512<T> NegativeInfinity 108public static Vector512<T> NegativeZero 115public static Vector512<T> PositiveInfinity 123extension<T>(Vector512<T>) 127public static Vector512<T> NegativeOne 134public static Vector512<T> SignSequence 149public static Vector512<T> Abs<T>(Vector512<T> vector) 166public static Vector512<T> Add<T>(Vector512<T> left, Vector512<T> right) => left + right; 171public static Vector512<T> AddSaturate<T>(Vector512<T> left, Vector512<T> right) 189public static bool All<T>(Vector512<T> vector, T value) => vector == Create(value); 194public static bool AllWhereAllBitsSet<T>(Vector512<T> vector) 218public static Vector512<T> AndNot<T>(Vector512<T> left, Vector512<T> right) => left & ~right; 223public static bool Any<T>(Vector512<T> vector, T value) => EqualsAny(vector, Create(value)); 228public static bool AnyWhereAllBitsSet<T>(Vector512<T> vector) 252public static Vector512<TTo> As<TFrom, TTo>(this Vector512<TFrom> vector) 257return Unsafe.BitCast<Vector512<TFrom>, Vector512<TTo>>(vector); 260/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;Byte&gt;" />.</summary> 266public static Vector512<byte> AsByte<T>(this Vector512<T> vector) => vector.As<T, byte>(); 268/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;Double&gt;" />.</summary> 274public static Vector512<double> AsDouble<T>(this Vector512<T> vector) => vector.As<T, double>(); 276/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;Int16&gt;" />.</summary> 282public static Vector512<short> AsInt16<T>(this Vector512<T> vector) => vector.As<T, short>(); 284/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;Int32&gt;" />.</summary> 290public static Vector512<int> AsInt32<T>(this Vector512<T> vector) => vector.As<T, int>(); 292/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;Int64&gt;" />.</summary> 298public static Vector512<long> AsInt64<T>(this Vector512<T> vector) => vector.As<T, long>(); 300/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;IntPtr&gt;" />.</summary> 306public static Vector512<nint> AsNInt<T>(this Vector512<T> vector) => vector.As<T, nint>(); 308/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;UIntPtr&gt;" />.</summary> 315public static Vector512<nuint> AsNUInt<T>(this Vector512<T> vector) => vector.As<T, nuint>(); 317/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;SByte&gt;" />.</summary> 324public static Vector512<sbyte> AsSByte<T>(this Vector512<T> vector) => vector.As<T, sbyte>(); 326/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;Single&gt;" />.</summary> 332public static Vector512<float> AsSingle<T>(this Vector512<T> vector) => vector.As<T, float>(); 334/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;UInt16&gt;" />.</summary> 341public static Vector512<ushort> AsUInt16<T>(this Vector512<T> vector) => vector.As<T, ushort>(); 343/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;UInt32&gt;" />.</summary> 350public static Vector512<uint> AsUInt32<T>(this Vector512<T> vector) => vector.As<T, uint>(); 352/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see langword="Vector512&lt;UInt64&gt;" />.</summary> 359public static Vector512<ulong> AsUInt64<T>(this Vector512<T> vector) => vector.As<T, ulong>(); 361/// <summary>Reinterprets a <see cref="Vector{T}" /> as a new <see cref="Vector512{T}" />.</summary> 364/// <returns><paramref name="value" /> reinterpreted as a new <see cref="Vector512{T}" />.</returns> 368public static Vector512<T> AsVector512<T>(this Vector<T> value) 370Debug.Assert(Vector512<T>.Count >= Vector<T>.Count); 373Vector512<T> result = default; 374Unsafe.WriteUnaligned(ref Unsafe.As<Vector512<T>, byte>(ref result), value); 378/// <summary>Reinterprets a <see cref="Vector512{T}" /> as a new <see cref="Vector{T}" />.</summary> 385public static Vector<T> AsVector<T>(this Vector512<T> value) 387Debug.Assert(Vector512<T>.Count >= Vector<T>.Count); 390ref byte address = ref Unsafe.As<Vector512<T>, byte>(ref value); 401public static Vector512<T> BitwiseAnd<T>(Vector512<T> left, Vector512<T> right) => left & right; 410public static Vector512<T> BitwiseOr<T>(Vector512<T> left, Vector512<T> right) => left | right; 417internal static Vector512<T> Ceiling<T>(Vector512<T> vector) 438public static Vector512<float> Ceiling(Vector512<float> vector) => Ceiling<float>(vector); 445public static Vector512<double> Ceiling(Vector512<double> vector) => Ceiling<double>(vector); 449public static Vector512<T> Clamp<T>(Vector512<T> value, Vector512<T> min, Vector512<T> max) 457public static Vector512<T> ClampNative<T>(Vector512<T> value, Vector512<T> min, Vector512<T> max) 473public static Vector512<T> ConditionalSelect<T>(Vector512<T> condition, Vector512<T> left, Vector512<T> right) => (left & condition) | AndNot(right, condition); 480public static Vector512<double> ConvertToDouble(Vector512<long> vector) 494public static Vector512<double> ConvertToDouble(Vector512<ulong> vector) 507public static Vector512<int> ConvertToInt32(Vector512<float> vector) 520public static Vector512<int> ConvertToInt32Native(Vector512<float> vector) 533public static Vector512<long> ConvertToInt64(Vector512<double> vector) 546public static Vector512<long> ConvertToInt64Native(Vector512<double> vector) 559public static Vector512<float> ConvertToSingle(Vector512<int> vector) 573public static Vector512<float> ConvertToSingle(Vector512<uint> vector) 587public static Vector512<uint> ConvertToUInt32(Vector512<float> vector) 601public static Vector512<uint> ConvertToUInt32Native(Vector512<float> vector) 615public static Vector512<ulong> ConvertToUInt64(Vector512<double> vector) 629public static Vector512<ulong> ConvertToUInt64Native(Vector512<double> vector) 640public static Vector512<T> CopySign<T>(Vector512<T> value, Vector512<T> sign) 648return VectorMath.CopySign<Vector512<T>, T>(value, sign); 659/// <summary>Copies a <see cref="Vector512{T}" /> to a given array.</summary> 663/// <exception cref="ArgumentException">The length of <paramref name="destination" /> is less than <see cref="Vector512{T}.Count" />.</exception> 666public static void CopyTo<T>(this Vector512<T> vector, T[] destination) 670if (destination.Length < Vector512<T>.Count) 678/// <summary>Copies a <see cref="Vector512{T}" /> to a given array starting at the specified index.</summary> 683/// <exception cref="ArgumentException">The length of <paramref name="destination" /> is less than <see cref="Vector512{T}.Count" />.</exception> 687public static void CopyTo<T>(this Vector512<T> vector, T[] destination, int startIndex) 696if ((destination.Length - startIndex) < Vector512<T>.Count) 704/// <summary>Copies a <see cref="Vector512{T}" /> to a given span.</summary> 708/// <exception cref="ArgumentException">The length of <paramref name="destination" /> is less than <see cref="Vector512{T}.Count" />.</exception> 710public static void CopyTo<T>(this Vector512<T> vector, Span<T> destination) 712if (destination.Length < Vector512<T>.Count) 722public static Vector512<double> Asin(Vector512<double> vector) 726return VectorMath.AsinDouble<Vector512<double>, Vector512<ulong>>(vector); 739public static Vector512<float> Asin(Vector512<float> vector) 743return VectorMath.AsinSingle<Vector512<float>, Vector512<int>, Vector512<double>, Vector512<long>>(vector); 756public static Vector512<double> Cos(Vector512<double> vector) 760return VectorMath.CosDouble<Vector512<double>, Vector512<long>>(vector); 773public static Vector512<float> Cos(Vector512<float> vector) 777return VectorMath.CosSingle<Vector512<float>, Vector512<int>, Vector512<double>, Vector512<long>>(vector); 791public static int Count<T>(Vector512<T> vector, T value) => CountMatches(Equals(vector, Create(value))); 796public static int CountWhereAllBitsSet<T>(Vector512<T> vector) 812/// <summary>Creates a new <see cref="Vector512{T}" /> instance with all elements initialized to the specified value.</summary> 815/// <returns>A new <see cref="Vector512{T}" /> with all elements initialized to <paramref name="value" />.</returns> 818public static Vector512<T> Create<T>(T value) 829public static Vector512<byte> Create(byte value) => Create<byte>(value); 836public static Vector512<double> Create(double value) => Create<double>(value); 843public static Vector512<short> Create(short value) => Create<short>(value); 850public static Vector512<int> Create(int value) => Create<int>(value); 857public static Vector512<long> Create(long value) => Create<long>(value); 863public static Vector512<nint> Create(nint value) => Create<nint>(value); 870public static Vector512<nuint> Create(nuint value) => Create<nuint>(value); 878public static Vector512<sbyte> Create(sbyte value) => Create<sbyte>(value); 885public static Vector512<float> Create(float value) => Create<float>(value); 893public static Vector512<ushort> Create(ushort value) => Create<ushort>(value); 901public static Vector512<uint> Create(uint value) => Create<uint>(value); 909public static Vector512<ulong> Create(ulong value) => Create<ulong>(value); 911/// <summary>Creates a new <see cref="Vector512{T}" /> from a given array.</summary> 914/// <returns>A new <see cref="Vector512{T}" /> with its elements set to the first <see cref="Vector512{T}.Count" /> elements from <paramref name="values" />.</returns> 915/// <exception cref="ArgumentOutOfRangeException">The length of <paramref name="values" /> is less than <see cref="Vector512{T}.Count" />.</exception> 918public static Vector512<T> Create<T>(T[] values) 922if (values.Length < Vector512<T>.Count) 927return Unsafe.ReadUnaligned<Vector512<T>>(ref Unsafe.As<T, byte>(ref values[0])); 930/// <summary>Creates a new <see cref="Vector512{T}" /> from a given array.</summary> 934/// <returns>A new <see cref="Vector512{T}" /> with its elements set to the first <see cref="Vector256{T}.Count" /> elements from <paramref name="values" />.</returns> 935/// <exception cref="ArgumentOutOfRangeException">The length of <paramref name="values" />, starting from <paramref name="index" />, is less than <see cref="Vector512{T}.Count" />.</exception> 938public static Vector512<T> Create<T>(T[] values, int index) 942if ((index < 0) || ((values.Length - index) < Vector512<T>.Count)) 947return Unsafe.ReadUnaligned<Vector512<T>>(ref Unsafe.As<T, byte>(ref values[index])); 950/// <summary>Creates a new <see cref="Vector512{T}" /> from a given readonly span.</summary> 953/// <returns>A new <see cref="Vector512{T}" /> with its elements set to the first <see cref="Vector512{T}.Count" /> elements from <paramref name="values" />.</returns> 954/// <exception cref="ArgumentOutOfRangeException">The length of <paramref name="values" /> is less than <see cref="Vector512{T}.Count" />.</exception> 957public static Vector512<T> Create<T>(ReadOnlySpan<T> values) 959if (values.Length < Vector512<T>.Count) 964return Unsafe.ReadUnaligned<Vector512<T>>(ref Unsafe.As<T, byte>(ref MemoryMarshal.GetReference(values))); 1036public static Vector512<byte> Create(byte e0, byte e1, byte e2, byte e3, byte e4, byte e5, byte e6, byte e7, byte e8, byte e9, byte e10, byte e11, byte e12, byte e13, byte e14, byte e15, 1060public static Vector512<double> Create(double e0, double e1, double e2, double e3, double e4, double e5, double e6, double e7) 1105public static Vector512<short> Create(short e0, short e1, short e2, short e3, short e4, short e5, short e6, short e7, short e8, short e9, short e10, short e11, short e12, short e13, short e14, short e15, 1135public static Vector512<int> Create(int e0, int e1, int e2, int e3, int e4, int e5, int e6, int e7, int e8, int e9, int e10, int e11, int e12, int e13, int e14, int e15) 1156public static Vector512<long> Create(long e0, long e1, long e2, long e3, long e4, long e5, long e6, long e7) 1234public static Vector512<sbyte> Create(sbyte e0, sbyte e1, sbyte e2, sbyte e3, sbyte e4, sbyte e5, sbyte e6, sbyte e7, sbyte e8, sbyte e9, sbyte e10, sbyte e11, sbyte e12, sbyte e13, sbyte e14, sbyte e15, 1266public static Vector512<float> Create(float e0, float e1, float e2, float e3, float e4, float e5, float e6, float e7, float e8, float e9, float e10, float e11, float e12, float e13, float e14, float e15) 1312public static Vector512<ushort> Create(ushort e0, ushort e1, ushort e2, ushort e3, ushort e4, ushort e5, ushort e6, ushort e7, ushort e8, ushort e9, ushort e10, ushort e11, ushort e12, ushort e13, ushort e14, ushort e15, 1343public static Vector512<uint> Create(uint e0, uint e1, uint e2, uint e3, uint e4, uint e5, uint e6, uint e7, uint e8, uint e9, uint e10, uint e11, uint e12, uint e13, uint e14, uint e15) 1365public static Vector512<ulong> Create(ulong e0, ulong e1, ulong e2, ulong e3, ulong e4, ulong e5, ulong e6, ulong e7) 1373/// <summary>Creates a new <see cref="Vector512{T}" /> instance with all 64-bit parts initialized to a specified value.</summary> 1379public static Vector512<T> Create<T>(Vector64<T> value) => Create(Vector128.Create(value, value)); 1381/// <summary>Creates a new <see cref="Vector512{T}" /> instance with all 128-bit parts initialized to a specified value.</summary> 1387public static Vector512<T> Create<T>(Vector128<T> value) => Create(Vector256.Create(value, value)); 1389/// <summary>Creates a new <see cref="Vector512{T}" /> instance with the lower and upper 256-bits initialized to a specified value.</summary> 1395public static Vector512<T> Create<T>(Vector256<T> value) => Create(value, value); 1397/// <summary>Creates a new <see cref="Vector512{T}" /> instance from two <see cref="Vector256{T}" /> instances.</summary> 1401/// <returns>A new <see cref="Vector512{T}" /> initialized from <paramref name="lower" /> and <paramref name="upper" />.</returns> 1404public static Vector512<T> Create<T>(Vector256<T> lower, Vector256<T> upper) 1407Unsafe.SkipInit(out Vector512<T> result); 1419public static Vector512<byte> Create(Vector256<byte> lower, Vector256<byte> upper) => Create<byte>(lower, upper); 1426public static Vector512<double> Create(Vector256<double> lower, Vector256<double> upper) => Create<double>(lower, upper); 1432public static Vector512<short> Create(Vector256<short> lower, Vector256<short> upper) => Create<short>(lower, upper); 1439public static Vector512<int> Create(Vector256<int> lower, Vector256<int> upper) => Create<int>(lower, upper); 1445public static Vector512<long> Create(Vector256<long> lower, Vector256<long> upper) => Create<long>(lower, upper); 1451public static Vector512<nint> Create(Vector256<nint> lower, Vector256<nint> upper) => Create<nint>(lower, upper); 1458public static Vector512<nuint> Create(Vector256<nuint> lower, Vector256<nuint> upper) => Create<nuint>(lower, upper); 1465public static Vector512<sbyte> Create(Vector256<sbyte> lower, Vector256<sbyte> upper) => Create<sbyte>(lower, upper); 1472public static Vector512<float> Create(Vector256<float> lower, Vector256<float> upper) => Create<float>(lower, upper); 1479public static Vector512<ushort> Create(Vector256<ushort> lower, Vector256<ushort> upper) => Create<ushort>(lower, upper); 1487public static Vector512<uint> Create(Vector256<uint> lower, Vector256<uint> upper) => Create<uint>(lower, upper); 1494public static Vector512<ulong> Create(Vector256<ulong> lower, Vector256<ulong> upper) => Create<ulong>(lower, upper); 1496/// <summary>Creates a new <see cref="Vector512{T}" /> instance with the first element initialized to the specified value and the remaining elements initialized to zero.</summary> 1499/// <returns>A new <see cref="Vector512{T}" /> instance with the first element initialized to <paramref name="value" /> and the remaining elements initialized to zero.</returns> 1502public static Vector512<T> CreateScalar<T>(T value) => Vector256.CreateScalar(value).ToVector512(); 1508public static Vector512<byte> CreateScalar(byte value) => CreateScalar<byte>(value); 1514public static Vector512<double> CreateScalar(double value) => CreateScalar<double>(value); 1520public static Vector512<short> CreateScalar(short value) => CreateScalar<short>(value); 1526public static Vector512<int> CreateScalar(int value) => CreateScalar<int>(value); 1532public static Vector512<long> CreateScalar(long value) => CreateScalar<long>(value); 1538public static Vector512<nint> CreateScalar(nint value) => CreateScalar<nint>(value); 1545public static Vector512<nuint> CreateScalar(nuint value) => CreateScalar<nuint>(value); 1552public static Vector512<sbyte> CreateScalar(sbyte value) => CreateScalar<sbyte>(value); 1558public static Vector512<float> CreateScalar(float value) => CreateScalar<float>(value); 1565public static Vector512<ushort> CreateScalar(ushort value) => CreateScalar<ushort>(value); 1572public static Vector512<uint> CreateScalar(uint value) => CreateScalar<uint>(value); 1579public static Vector512<ulong> CreateScalar(ulong value) => CreateScalar<ulong>(value); 1581/// <summary>Creates a new <see cref="Vector512{T}" /> instance with the first element initialized to the specified value and the remaining elements left uninitialized.</summary> 1584/// <returns>A new <see cref="Vector512{T}" /> instance with the first element initialized to <paramref name="value" /> and the remaining elements left uninitialized.</returns> 1588public static Vector512<T> CreateScalarUnsafe<T>(T value) 1594Unsafe.SkipInit(out Vector512<T> result); 1604public static Vector512<byte> CreateScalarUnsafe(byte value) => CreateScalarUnsafe<byte>(value); 1610public static Vector512<double> CreateScalarUnsafe(double value) => CreateScalarUnsafe<double>(value); 1616public static Vector512<short> CreateScalarUnsafe(short value) => CreateScalarUnsafe<short>(value); 1622public static Vector512<int> CreateScalarUnsafe(int value) => CreateScalarUnsafe<int>(value); 1628public static Vector512<long> CreateScalarUnsafe(long value) => CreateScalarUnsafe<long>(value); 1634public static Vector512<nint> CreateScalarUnsafe(nint value) => CreateScalarUnsafe<nint>(value); 1641public static Vector512<nuint> CreateScalarUnsafe(nuint value) => CreateScalarUnsafe<nuint>(value); 1648public static Vector512<sbyte> CreateScalarUnsafe(sbyte value) => CreateScalarUnsafe<sbyte>(value); 1654public static Vector512<float> CreateScalarUnsafe(float value) => CreateScalarUnsafe<float>(value); 1661public static Vector512<ushort> CreateScalarUnsafe(ushort value) => CreateScalarUnsafe<ushort>(value); 1668public static Vector512<uint> CreateScalarUnsafe(uint value) => CreateScalarUnsafe<uint>(value); 1675public static Vector512<ulong> CreateScalarUnsafe(ulong value) => CreateScalarUnsafe<ulong>(value); 1677/// <summary>Creates a new <see cref="Vector512{T}" /> instance where the elements begin at a specified value and which are spaced apart according to another specified value.</summary> 1681/// <returns>A new <see cref="Vector512{T}" /> instance with the first element initialized to <paramref name="start" /> and each subsequent element initialized to the value of the previous element plus <paramref name="step" />.</returns> 1684public static Vector512<T> CreateSequence<T>(T start, T step) => (Vector512<T>.Indices * step) + Create(start); 1686/// <summary>Creates a new <see cref="Vector512{T}" /> instance where the elements begin at a specified value and are multiplied by another specified value.</summary> 1690/// <returns>A new <see cref="Vector512{T}" /> instance with each element initialized to <paramref name="initial" /> multiplied by <paramref name="multiplier" /> raised to the element index.</returns> 1694public static Vector512<T> CreateGeometricSequence<T>(T initial, [ConstantExpected] T multiplier) 1696Unsafe.SkipInit(out Vector512<T> result); 1700for (int index = 0; index < Vector512<T>.Count; index++) 1712for (int index = 1; index < Vector512<T>.Count; index++) 1721/// <summary>Creates a new <see cref="Vector512{T}" /> instance whose elements alternate between two specified values.</summary> 1725/// <returns>A new <see cref="Vector512{T}" /> instance whose even-indexed elements are initialized to <paramref name="even" /> and odd-indexed elements are initialized to <paramref name="odd" />.</returns> 1729public static Vector512<T> CreateAlternatingSequence<T>(T even, T odd) 1735/// <summary>Creates a new <see cref="Vector512{T}" /> instance whose elements are the reciprocal of an arithmetic sequence.</summary> 1739/// <returns>A new <see cref="Vector512{T}" /> instance whose elements are initialized to one divided by the corresponding element of the arithmetic sequence.</returns> 1743public static Vector512<T> CreateHarmonicSequence<T>(T start, T step) 1747return Vector512<T>.One / CreateSequence(start, step); 1761public static Vector512<T> ConcatLowerLower<T>(Vector512<T> left, Vector512<T> right) => Create(left.GetLower(), right.GetLower()); 1766public static Vector512<T> ConcatUpperLower<T>(Vector512<T> left, Vector512<T> right) => Create(left.GetUpper(), right.GetLower()); 1771public static Vector512<T> ConcatUpperUpper<T>(Vector512<T> left, Vector512<T> right) => Create(left.GetUpper(), right.GetUpper()); 1776public static Vector512<T> ConcatLowerUpper<T>(Vector512<T> left, Vector512<T> right) => Create(left.GetLower(), right.GetUpper()); 1781public static Vector512<T> ZipLower<T>(Vector512<T> left, Vector512<T> right) => Create( 1789public static Vector512<T> ZipUpper<T>(Vector512<T> left, Vector512<T> right) => Create( 1797public static (Vector512<T> Lower, Vector512<T> Upper) Zip<T>(Vector512<T> left, Vector512<T> right) 1801Vector512<int> lower = Avx512F.UnpackLow(left.AsInt32(), right.AsInt32()); 1802Vector512<int> upper = Avx512F.UnpackHigh(left.AsInt32(), right.AsInt32()); 1804Vector512<int> lowerResult = Avx512F.Shuffle4x128(lower, upper, 0x44); 1807Vector512<int> upperResult = Avx512F.Shuffle4x128(lower, upper, 0xEE); 1827public static Vector512<T> UnzipEven<T>(Vector512<T> left, Vector512<T> right) => Create( 1835public static Vector512<T> UnzipOdd<T>(Vector512<T> left, Vector512<T> right) => Create( 1843public static (Vector512<T> Even, Vector512<T> Odd) Unzip<T>(Vector512<T> left, Vector512<T> right) 1847Vector512<int> evenIndices = Create( 1851Vector512<int> oddIndices = Create( 1856Vector512<int> even = Avx512F.PermuteVar16x32x2(left.AsInt32(), evenIndices, right.AsInt32()); 1857Vector512<int> odd = Avx512F.PermuteVar16x32x2(left.AsInt32(), oddIndices, right.AsInt32()); 1876public static Vector512<T> Reverse<T>(Vector512<T> vector) => Create( 1884public static Vector512<double> DegreesToRadians(Vector512<double> degrees) 1888return VectorMath.DegreesToRadiansDouble<Vector512<double>, Vector512<ulong>>(degrees); 1902public static Vector512<float> DegreesToRadians(Vector512<float> degrees) 1906return VectorMath.DegreesToRadiansSingle<Vector512<float>, Vector512<double>>(degrees); 1925public static Vector512<T> Divide<T>(Vector512<T> left, Vector512<T> right) => left / right; 1933public static Vector512<T> Divide<T>(Vector512<T> left, T right) => left / right; 1943public static T Dot<T>(Vector512<T> left, Vector512<T> right) => Sum(left * right); 1953public static Vector512<T> Equals<T>(Vector512<T> left, Vector512<T> right) 1968public static bool EqualsAll<T>(Vector512<T> left, Vector512<T> right) => left == right; 1978public static bool EqualsAny<T>(Vector512<T> left, Vector512<T> right) 1986public static Vector512<double> Exp(Vector512<double> vector) 1990return VectorMath.ExpDouble<Vector512<double>, Vector512<ulong>>(vector); 2003public static Vector512<float> Exp(Vector512<float> vector) 2007return VectorMath.ExpSingle<Vector512<float>, Vector512<uint>, Vector512<double>, Vector512<ulong>>(vector); 2026public static ulong ExtractMostSignificantBits<T>(this Vector512<T> vector) 2038internal static Vector512<T> Floor<T>(Vector512<T> vector) 2059public static Vector512<float> Floor(Vector512<float> vector) => Floor<float>(vector); 2066public static Vector512<double> Floor(Vector512<double> vector) => Floor<double>(vector); 2071public static Vector512<double> FusedMultiplyAdd(Vector512<double> left, Vector512<double> right, Vector512<double> addend) 2082public static Vector512<float> FusedMultiplyAdd(Vector512<float> left, Vector512<float> right, Vector512<float> addend) 2099public static T GetElement<T>(this Vector512<T> vector, int index) 2101if ((uint)(index) >= (uint)(Vector512<T>.Count)) 2115public static Vector256<T> GetLower<T>(this Vector512<T> vector) 2127public static Vector256<T> GetUpper<T>(this Vector512<T> vector) 2141public static Vector512<T> GreaterThan<T>(Vector512<T> left, Vector512<T> right) 2157public static bool GreaterThanAll<T>(Vector512<T> left, Vector512<T> right) 2171public static bool GreaterThanAny<T>(Vector512<T> left, Vector512<T> right) 2185public static Vector512<T> GreaterThanOrEqual<T>(Vector512<T> left, Vector512<T> right) 2201public static bool GreaterThanOrEqualAll<T>(Vector512<T> left, Vector512<T> right) 2215public static bool GreaterThanOrEqualAny<T>(Vector512<T> left, Vector512<T> right) 2223public static Vector512<double> Hypot(Vector512<double> x, Vector512<double> y) 2227return VectorMath.HypotDouble<Vector512<double>, Vector512<ulong>>(x, y); 2240public static Vector512<float> Hypot(Vector512<float> x, Vector512<float> y) 2244return VectorMath.HypotSingle<Vector512<float>, Vector512<double>>(x, y); 2258public static int IndexOf<T>(Vector512<T> vector, T value) => IndexOfFirstMatch(Equals(vector, Create(value))); 2263public static int IndexOfWhereAllBitsSet<T>(Vector512<T> vector) 2282public static Vector512<T> IsEvenInteger<T>(Vector512<T> vector) 2286return VectorMath.IsEvenIntegerSingle<Vector512<float>, Vector512<uint>>(vector.AsSingle()).As<float, T>(); 2290return VectorMath.IsEvenIntegerDouble<Vector512<double>, Vector512<ulong>>(vector.AsDouble()).As<double, T>(); 2292return IsZero(vector & Vector512<T>.One); 2298public static Vector512<T> IsFinite<T>(Vector512<T> vector) 2302return ~IsZero(AndNot(Vector512<float>.PositiveInfinity.AsUInt32(), vector.AsUInt32())).As<uint, T>(); 2306return ~IsZero(AndNot(Vector512<double>.PositiveInfinity.AsUInt64(), vector.AsUInt64())).As<ulong, T>(); 2308return Vector512<T>.AllBitsSet; 2314public static Vector512<T> IsInfinity<T>(Vector512<T> vector) 2320return Vector512<T>.Zero; 2326public static Vector512<T> IsInteger<T>(Vector512<T> vector) 2332return Vector512<T>.AllBitsSet; 2338public static Vector512<T> IsNaN<T>(Vector512<T> vector) 2344return Vector512<T>.Zero; 2350public static Vector512<T> IsNegative<T>(Vector512<T> vector) 2354return Vector512<T>.Zero; 2358return LessThan(vector.AsInt32(), Vector512<int>.Zero).As<int, T>(); 2362return LessThan(vector.AsInt64(), Vector512<long>.Zero).As<long, T>(); 2366return LessThan(vector, Vector512<T>.Zero); 2373public static Vector512<T> IsNegativeInfinity<T>(Vector512<T> vector) 2377return Equals(vector, Vector512<float>.NegativeInfinity.As<float, T>()); 2381return Equals(vector, Vector512<double>.NegativeInfinity.As<double, T>()); 2383return Vector512<T>.Zero; 2389public static Vector512<T> IsNormal<T>(Vector512<T> vector) 2405public static Vector512<T> IsOddInteger<T>(Vector512<T> vector) 2409return VectorMath.IsOddIntegerSingle<Vector512<float>, Vector512<uint>>(vector.AsSingle()).As<float, T>(); 2413return VectorMath.IsOddIntegerDouble<Vector512<double>, Vector512<ulong>>(vector.AsDouble()).As<double, T>(); 2415return ~IsZero(vector & Vector512<T>.One); 2421public static Vector512<T> IsPositive<T>(Vector512<T> vector) 2425return Vector512<T>.AllBitsSet; 2429return GreaterThanOrEqual(vector.AsInt32(), Vector512<int>.Zero).As<int, T>(); 2433return GreaterThanOrEqual(vector.AsInt64(), Vector512<long>.Zero).As<long, T>(); 2437return GreaterThanOrEqual(vector, Vector512<T>.Zero); 2444public static Vector512<T> IsPositiveInfinity<T>(Vector512<T> vector) 2448return Equals(vector, Vector512<float>.PositiveInfinity.As<float, T>()); 2452return Equals(vector, Vector512<double>.PositiveInfinity.As<double, T>()); 2454return Vector512<T>.Zero; 2460public static Vector512<T> IsSubnormal<T>(Vector512<T> vector) 2464return LessThan(Abs(vector).AsUInt32() - Vector512<uint>.One, Create<uint>(float.MaxTrailingSignificand)).As<uint, T>(); 2468return LessThan(Abs(vector).AsUInt64() - Vector512<ulong>.One, Create<ulong>(double.MaxTrailingSignificand)).As<ulong, T>(); 2470return Vector512<T>.Zero; 2476public static Vector512<T> IsZero<T>(Vector512<T> vector) => Equals(vector, Vector512<T>.Zero); 2481public static int LastIndexOf<T>(Vector512<T> vector, T value) => IndexOfLastMatch(Equals(vector, Create(value))); 2486public static int LastIndexOfWhereAllBitsSet<T>(Vector512<T> vector) 2505public static Vector512<double> Lerp(Vector512<double> x, Vector512<double> y, Vector512<double> amount) 2509return VectorMath.Lerp<Vector512<double>, double>(x, y, amount); 2523public static Vector512<float> Lerp(Vector512<float> x, Vector512<float> y, Vector512<float> amount) 2527return VectorMath.Lerp<Vector512<float>, float>(x, y, amount); 2546public static Vector512<T> LessThan<T>(Vector512<T> left, Vector512<T> right) 2562public static bool LessThanAll<T>(Vector512<T> left, Vector512<T> right) 2576public static bool LessThanAny<T>(Vector512<T> left, Vector512<T> right) 2590public static Vector512<T> LessThanOrEqual<T>(Vector512<T> left, Vector512<T> right) 2606public static bool LessThanOrEqualAll<T>(Vector512<T> left, Vector512<T> right) 2620public static bool LessThanOrEqualAny<T>(Vector512<T> left, Vector512<T> right) 2633public static unsafe Vector512<T> Load<T>(T* source) => LoadUnsafe(ref *source); 2643public static unsafe Vector512<T> LoadAligned<T>(T* source) 2652return *(Vector512<T>*)(source); 2663public static unsafe Vector512<T> LoadAlignedNonTemporal<T>(T* source) => LoadAligned(source); 2672public static Vector512<T> LoadUnsafe<T>(ref readonly T source) 2676return Unsafe.ReadUnaligned<Vector512<T>>(in address); 2688public static Vector512<T> LoadUnsafe<T>(ref readonly T source, nuint elementOffset) 2692return Unsafe.ReadUnaligned<Vector512<T>>(in address); 2698internal static Vector512<ushort> LoadUnsafe(ref char source) => LoadUnsafe(ref Unsafe.As<char, ushort>(ref source)); 2704internal static Vector512<ushort> LoadUnsafe(ref char source, nuint elementOffset) => LoadUnsafe(ref Unsafe.As<char, ushort>(ref source), elementOffset); 2708public static Vector512<double> Log(Vector512<double> vector) 2712return VectorMath.LogDouble<Vector512<double>, Vector512<long>, Vector512<ulong>>(vector); 2725public static Vector512<float> Log(Vector512<float> vector) 2729return VectorMath.LogSingle<Vector512<float>, Vector512<int>, Vector512<uint>>(vector); 2742public static Vector512<double> Log2(Vector512<double> vector) 2746return VectorMath.Log2Double<Vector512<double>, Vector512<long>, Vector512<ulong>>(vector); 2759public static Vector512<float> Log2(Vector512<float> vector) 2763return VectorMath.Log2Single<Vector512<float>, Vector512<int>, Vector512<uint>>(vector); 2777public static Vector512<T> Max<T>(Vector512<T> left, Vector512<T> right) 2781return VectorMath.Max<Vector512<T>, T>(left, right); 2795public static Vector512<T> MaxMagnitude<T>(Vector512<T> left, Vector512<T> right) 2799return VectorMath.MaxMagnitude<Vector512<T>, T>(left, right); 2813public static Vector512<T> MaxMagnitudeNumber<T>(Vector512<T> left, Vector512<T> right) 2817return VectorMath.MaxMagnitudeNumber<Vector512<T>, T>(left, right); 2831public static Vector512<T> MaxNative<T>(Vector512<T> left, Vector512<T> right) 2849public static Vector512<T> MaxNumber<T>(Vector512<T> left, Vector512<T> right) 2853return VectorMath.MaxNumber<Vector512<T>, T>(left, right); 2867public static Vector512<T> Min<T>(Vector512<T> left, Vector512<T> right) 2871return VectorMath.Min<Vector512<T>, T>(left, right); 2885public static Vector512<T> MinMagnitude<T>(Vector512<T> left, Vector512<T> right) 2889return VectorMath.MinMagnitude<Vector512<T>, T>(left, right); 2903public static Vector512<T> MinMagnitudeNumber<T>(Vector512<T> left, Vector512<T> right) 2907return VectorMath.MinMagnitudeNumber<Vector512<T>, T>(left, right); 2921public static Vector512<T> MinNative<T>(Vector512<T> left, Vector512<T> right) 2939public static Vector512<T> MinNumber<T>(Vector512<T> left, Vector512<T> right) 2943return VectorMath.MinNumber<Vector512<T>, T>(left, right); 2961public static Vector512<T> Multiply<T>(Vector512<T> left, Vector512<T> right) => left * right; 2970public static Vector512<T> Multiply<T>(Vector512<T> left, T right) => left * right; 2979public static Vector512<T> Multiply<T>(T left, Vector512<T> right) => right * left; 2983internal static Vector512<T> MultiplyAddEstimate<T>(Vector512<T> left, Vector512<T> right, Vector512<T> addend) 2994public static Vector512<double> MultiplyAddEstimate(Vector512<double> left, Vector512<double> right, Vector512<double> addend) 3004public static Vector512<float> MultiplyAddEstimate(Vector512<float> left, Vector512<float> right, Vector512<float> addend) 3014internal static Vector512<TResult> Narrow<TSource, TResult>(Vector512<TSource> lower, Vector512<TSource> upper) 3018Unsafe.SkipInit(out Vector512<TResult> result); 3020for (int i = 0; i < Vector512<TSource>.Count; i++) 3026for (int i = Vector512<TSource>.Count; i < Vector512<TResult>.Count; i++) 3028TResult value = TResult.CreateTruncating(upper.GetElementUnsafe(i - Vector512<TSource>.Count)); 3038public static Vector512<float> Narrow(Vector512<double> lower, Vector512<double> upper) 3045public static Vector512<sbyte> Narrow(Vector512<short> lower, Vector512<short> upper) 3051public static Vector512<short> Narrow(Vector512<int> lower, Vector512<int> upper) 3057public static Vector512<int> Narrow(Vector512<long> lower, Vector512<long> upper) 3064public static Vector512<byte> Narrow(Vector512<ushort> lower, Vector512<ushort> upper) 3071public static Vector512<ushort> Narrow(Vector512<uint> lower, Vector512<uint> upper) 3078public static Vector512<uint> Narrow(Vector512<ulong> lower, Vector512<ulong> upper) 3083internal static Vector512<TResult> NarrowWithSaturation<TSource, TResult>(Vector512<TSource> lower, Vector512<TSource> upper) 3087Unsafe.SkipInit(out Vector512<TResult> result); 3089for (int i = 0; i < Vector512<TSource>.Count; i++) 3095for (int i = Vector512<TSource>.Count; i < Vector512<TResult>.Count; i++) 3097TResult value = TResult.CreateSaturating(upper.GetElementUnsafe(i - Vector512<TSource>.Count)); 3107public static Vector512<float> NarrowWithSaturation(Vector512<double> lower, Vector512<double> upper) 3114public static Vector512<sbyte> NarrowWithSaturation(Vector512<short> lower, Vector512<short> upper) 3120public static Vector512<short> NarrowWithSaturation(Vector512<int> lower, Vector512<int> upper) 3126public static Vector512<int> NarrowWithSaturation(Vector512<long> lower, Vector512<long> upper) 3133public static Vector512<byte> NarrowWithSaturation(Vector512<ushort> lower, Vector512<ushort> upper) 3140public static Vector512<ushort> NarrowWithSaturation(Vector512<uint> lower, Vector512<uint> upper) 3147public static Vector512<uint> NarrowWithSaturation(Vector512<ulong> lower, Vector512<ulong> upper) 3156public static Vector512<T> Negate<T>(Vector512<T> vector) => -vector; 3161public static bool None<T>(Vector512<T> vector, T value) => !EqualsAny(vector, Create(value)); 3166public static bool NoneWhereAllBitsSet<T>(Vector512<T> vector) 3188public static Vector512<T> OnesComplement<T>(Vector512<T> vector) => ~vector; 3193public static Vector512<double> RadiansToDegrees(Vector512<double> radians) 3197return VectorMath.RadiansToDegreesDouble<Vector512<double>, Vector512<ulong>>(radians); 3211public static Vector512<float> RadiansToDegrees(Vector512<float> radians) 3215return VectorMath.RadiansToDegreesSingle<Vector512<float>, Vector512<double>>(radians); 3228internal static Vector512<T> Round<T>(Vector512<T> vector) 3246public static Vector512<double> Round(Vector512<double> vector) => Round<double>(vector); 3250public static Vector512<float> Round(Vector512<float> vector) => Round<float>(vector); 3254public static Vector512<double> Round(Vector512<double> vector, MidpointRounding mode) => VectorMath.RoundDouble(vector, mode); 3258public static Vector512<float> Round(Vector512<float> vector, MidpointRounding mode) => VectorMath.RoundSingle(vector, mode); 3265internal static Vector512<T> ShiftLeft<T>(Vector512<T> vector, int shiftCount) => vector << shiftCount; 3272public static Vector512<byte> ShiftLeft(Vector512<byte> vector, int shiftCount) => vector << shiftCount; 3279public static Vector512<short> ShiftLeft(Vector512<short> vector, int shiftCount) => vector << shiftCount; 3286public static Vector512<int> ShiftLeft(Vector512<int> vector, int shiftCount) => vector << shiftCount; 3293public static Vector512<long> ShiftLeft(Vector512<long> vector, int shiftCount) => vector << shiftCount; 3300public static Vector512<nint> ShiftLeft(Vector512<nint> vector, int shiftCount) => vector << shiftCount; 3308public static Vector512<nuint> ShiftLeft(Vector512<nuint> vector, int shiftCount) => vector << shiftCount; 3316public static Vector512<sbyte> ShiftLeft(Vector512<sbyte> vector, int shiftCount) => vector << shiftCount; 3324public static Vector512<ushort> ShiftLeft(Vector512<ushort> vector, int shiftCount) => vector << shiftCount; 3332public static Vector512<uint> ShiftLeft(Vector512<uint> vector, int shiftCount) => vector << shiftCount; 3335internal static Vector512<uint> ShiftLeft(Vector512<uint> vector, Vector512<uint> shiftCount) 3349public static Vector512<ulong> ShiftLeft(Vector512<ulong> vector, int shiftCount) => vector << shiftCount; 3352internal static Vector512<ulong> ShiftLeft(Vector512<ulong> vector, Vector512<ulong> shiftCount) 3365internal static Vector512<T> ShiftRightArithmetic<T>(Vector512<T> vector, int shiftCount) => vector >> shiftCount; 3372public static Vector512<short> ShiftRightArithmetic(Vector512<short> vector, int shiftCount) => vector >> shiftCount; 3379public static Vector512<int> ShiftRightArithmetic(Vector512<int> vector, int shiftCount) => vector >> shiftCount; 3386public static Vector512<long> ShiftRightArithmetic(Vector512<long> vector, int shiftCount) => vector >> shiftCount; 3393public static Vector512<nint> ShiftRightArithmetic(Vector512<nint> vector, int shiftCount) => vector >> shiftCount; 3401public static Vector512<sbyte> ShiftRightArithmetic(Vector512<sbyte> vector, int shiftCount) => vector >> shiftCount; 3408internal static Vector512<T> ShiftRightLogical<T>(Vector512<T> vector, int shiftCount) => vector >>> shiftCount; 3415public static Vector512<byte> ShiftRightLogical(Vector512<byte> vector, int shiftCount) => vector >>> shiftCount; 3422public static Vector512<short> ShiftRightLogical(Vector512<short> vector, int shiftCount) => vector >>> shiftCount; 3429public static Vector512<int> ShiftRightLogical(Vector512<int> vector, int shiftCount) => vector >>> shiftCount; 3436public static Vector512<long> ShiftRightLogical(Vector512<long> vector, int shiftCount) => vector >>> shiftCount; 3443public static Vector512<nint> ShiftRightLogical(Vector512<nint> vector, int shiftCount) => vector >>> shiftCount; 3451public static Vector512<nuint> ShiftRightLogical(Vector512<nuint> vector, int shiftCount) => vector >>> shiftCount; 3459public static Vector512<sbyte> ShiftRightLogical(Vector512<sbyte> vector, int shiftCount) => vector >>> shiftCount; 3467public static Vector512<ushort> ShiftRightLogical(Vector512<ushort> vector, int shiftCount) => vector >>> shiftCount; 3475public static Vector512<uint> ShiftRightLogical(Vector512<uint> vector, int shiftCount) => vector >>> shiftCount; 3483public static Vector512<ulong> ShiftRightLogical(Vector512<ulong> vector, int shiftCount) => vector >>> shiftCount; 3485private static Vector512<T> ShuffleFallback<T, TIndex>(Vector512<T> vector, Vector512<TIndex> indices) 3488Debug.Assert(Vector512<T>.Count == Vector512<TIndex>.Count); 3489Vector512<T> result = Vector512<T>.Zero; 3491for (int index = 0; index < Vector512<T>.Count; index++) 3495if ((uint)selectedIndex < (uint)Vector512<T>.Count) 3509private static Vector512<T> ShuffleNativeFallback<T, TIndex>(Vector512<T> vector, Vector512<TIndex> indices) 3520public static Vector512<byte> Shuffle(Vector512<byte> vector, Vector512<byte> indices) => ShuffleFallback(vector, indices); 3522/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3524public static Vector512<double> Shuffle(Vector512<double> vector, Vector512<long> indices) => ShuffleFallback(vector, indices); 3526/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3528public static Vector512<short> Shuffle(Vector512<short> vector, Vector512<short> indices) => ShuffleFallback(vector, indices); 3530/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3532public static Vector512<int> Shuffle(Vector512<int> vector, Vector512<int> indices) => ShuffleFallback(vector, indices); 3534/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3536public static Vector512<long> Shuffle(Vector512<long> vector, Vector512<long> indices) => ShuffleFallback(vector, indices); 3538/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3540public static Vector512<nint> Shuffle(Vector512<nint> vector, Vector512<nint> indices) => ShuffleFallback(vector, indices); 3542/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3545public static Vector512<sbyte> Shuffle(Vector512<sbyte> vector, Vector512<sbyte> indices) => ShuffleFallback(vector, indices); 3547/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3549public static Vector512<float> Shuffle(Vector512<float> vector, Vector512<int> indices) => ShuffleFallback(vector, indices); 3551/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3554public static Vector512<ushort> Shuffle(Vector512<ushort> vector, Vector512<ushort> indices) => ShuffleFallback(vector, indices); 3556/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3559public static Vector512<uint> Shuffle(Vector512<uint> vector, Vector512<uint> indices) => ShuffleFallback(vector, indices); 3561/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3564public static Vector512<ulong> Shuffle(Vector512<ulong> vector, Vector512<ulong> indices) => ShuffleFallback(vector, indices); 3566/// <inheritdoc cref="Shuffle(Vector512{byte}, Vector512{byte})" /> 3569public static Vector512<nuint> Shuffle(Vector512<nuint> vector, Vector512<nuint> indices) => ShuffleFallback(vector, indices); 3578public static Vector512<byte> ShuffleNative(Vector512<byte> vector, Vector512<byte> indices) => ShuffleNativeFallback(vector, indices); 3580/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3583public static Vector512<double> ShuffleNative(Vector512<double> vector, Vector512<long> indices) => ShuffleNativeFallback(vector, indices); 3585/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3588public static Vector512<short> ShuffleNative(Vector512<short> vector, Vector512<short> indices) => ShuffleNativeFallback(vector, indices); 3590/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3593public static Vector512<int> ShuffleNative(Vector512<int> vector, Vector512<int> indices) => ShuffleNativeFallback(vector, indices); 3595/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3598public static Vector512<long> ShuffleNative(Vector512<long> vector, Vector512<long> indices) => ShuffleNativeFallback(vector, indices); 3600/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3603public static Vector512<nint> ShuffleNative(Vector512<nint> vector, Vector512<nint> indices) => ShuffleNativeFallback(vector, indices); 3605/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3609public static Vector512<sbyte> ShuffleNative(Vector512<sbyte> vector, Vector512<sbyte> indices) => ShuffleNativeFallback(vector, indices); 3611/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3614public static Vector512<float> ShuffleNative(Vector512<float> vector, Vector512<int> indices) => ShuffleNativeFallback(vector, indices); 3616/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3620public static Vector512<ushort> ShuffleNative(Vector512<ushort> vector, Vector512<ushort> indices) => ShuffleNativeFallback(vector, indices); 3622/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3626public static Vector512<uint> ShuffleNative(Vector512<uint> vector, Vector512<uint> indices) => ShuffleNativeFallback(vector, indices); 3628/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3632public static Vector512<ulong> ShuffleNative(Vector512<ulong> vector, Vector512<ulong> indices) => ShuffleNativeFallback(vector, indices); 3634/// <inheritdoc cref="ShuffleNative(Vector512{byte}, Vector512{byte})" /> 3638public static Vector512<nuint> ShuffleNative(Vector512<nuint> vector, Vector512<nuint> indices) => ShuffleNativeFallback(vector, indices); 3642public static Vector512<double> Sin(Vector512<double> vector) 3646return VectorMath.SinDouble<Vector512<double>, Vector512<long>>(vector); 3659public static Vector512<float> Sin(Vector512<float> vector) 3663return VectorMath.SinSingle<Vector512<float>, Vector512<int>, Vector512<double>, Vector512<long>>(vector); 3676public static (Vector512<double> Sin, Vector512<double> Cos) SinCos(Vector512<double> vector) 3680return VectorMath.SinCosDouble<Vector512<double>, Vector512<long>>(vector); 3696public static (Vector512<float> Sin, Vector512<float> Cos) SinCos(Vector512<float> vector) 3700return VectorMath.SinCosSingle<Vector512<float>, Vector512<int>, Vector512<double>, Vector512<long>>(vector); 3721public static Vector512<T> Sqrt<T>(Vector512<T> vector) 3736public static unsafe void Store<T>(this Vector512<T> source, T* destination) => source.StoreUnsafe(ref *destination); 3746public static unsafe void StoreAligned<T>(this Vector512<T> source, T* destination) 3755*(Vector512<T>*)(destination) = source; 3766public static unsafe void StoreAlignedNonTemporal<T>(this Vector512<T> source, T* destination) => source.StoreAligned(destination); 3775public static void StoreUnsafe<T>(this Vector512<T> source, ref T destination) 3791public static void StoreUnsafe<T>(this Vector512<T> source, ref T destination, nuint elementOffset) 3800public static Vector512<T> Subtract<T>(Vector512<T> left, Vector512<T> right) => left - right; 3805public static Vector512<T> SubtractSaturate<T>(Vector512<T> left, Vector512<T> right) 3827public static T Sum<T>(Vector512<T> vector) 3844public static T ToScalar<T>(this Vector512<T> vector) 3852internal static Vector512<T> Truncate<T>(Vector512<T> vector) 3870public static Vector512<double> Truncate(Vector512<double> vector) => Truncate<double>(vector); 3874public static Vector512<float> Truncate(Vector512<float> vector) => Truncate<float>(vector); 3880/// <returns><c>true</c> if <paramref name="vector" /> was successfully copied to <paramref name="destination" />; otherwise, <c>false</c> if the length of <paramref name="destination" /> is less than <see cref="Vector512{T}.Count" />.</returns> 3882public static bool TryCopyTo<T>(this Vector512<T> vector, Span<T> destination) 3884if (destination.Length < Vector512<T>.Count) 3893/// <summary>Widens a <see langword="Vector512&lt;Byte&gt;" /> into two <see cref="Vector512{UInt16} " />.</summary> 3898public static (Vector512<ushort> Lower, Vector512<ushort> Upper) Widen(Vector512<byte> source) => (WidenLower(source), WidenUpper(source)); 3900/// <summary>Widens a <see langword="Vector512&lt;Int16&gt;" /> into two <see cref="Vector512{Int32} " />.</summary> 3904public static (Vector512<int> Lower, Vector512<int> Upper) Widen(Vector512<short> source) => (WidenLower(source), WidenUpper(source)); 3906/// <summary>Widens a <see langword="Vector512&lt;Int32&gt;" /> into two <see cref="Vector512{Int64} " />.</summary> 3910public static (Vector512<long> Lower, Vector512<long> Upper) Widen(Vector512<int> source) => (WidenLower(source), WidenUpper(source)); 3912/// <summary>Widens a <see langword="Vector512&lt;SByte&gt;" /> into two <see cref="Vector512{Int16} " />.</summary> 3917public static (Vector512<short> Lower, Vector512<short> Upper) Widen(Vector512<sbyte> source) => (WidenLower(source), WidenUpper(source)); 3919/// <summary>Widens a <see langword="Vector512&lt;Single&gt;" /> into two <see cref="Vector512{Double} " />.</summary> 3923public static (Vector512<double> Lower, Vector512<double> Upper) Widen(Vector512<float> source) => (WidenLower(source), WidenUpper(source)); 3925/// <summary>Widens a <see langword="Vector512&lt;UInt16&gt;" /> into two <see cref="Vector512{UInt32} " />.</summary> 3930public static (Vector512<uint> Lower, Vector512<uint> Upper) Widen(Vector512<ushort> source) => (WidenLower(source), WidenUpper(source)); 3932/// <summary>Widens a <see langword="Vector512&lt;UInt32&gt;" /> into two <see cref="Vector512{UInt64} " />.</summary> 3937public static (Vector512<ulong> Lower, Vector512<ulong> Upper) Widen(Vector512<uint> source) => (WidenLower(source), WidenUpper(source)); 3939/// <summary>Widens the lower half of a <see langword="Vector512&lt;Byte&gt;" /> into a <see cref="Vector512{UInt16} " />.</summary> 3945public static Vector512<ushort> WidenLower(Vector512<byte> source) 3955/// <summary>Widens the lower half of a <see langword="Vector512&lt;Int16&gt;" /> into a <see cref="Vector512{Int32} " />.</summary> 3960public static Vector512<int> WidenLower(Vector512<short> source) 3970/// <summary>Widens the lower half of a <see langword="Vector512&lt;Int32&gt;" /> into a <see cref="Vector512{Int64} " />.</summary> 3975public static Vector512<long> WidenLower(Vector512<int> source) 3985/// <summary>Widens the lower half of a <see langword="Vector512&lt;SByte&gt;" /> into a <see cref="Vector512{Int16} " />.</summary> 3991public static Vector512<short> WidenLower(Vector512<sbyte> source) 4000/// <summary>Widens the lower half of a <see langword="Vector512&lt;Single&gt;" /> into a <see cref="Vector512{Double} " />.</summary> 4005public static Vector512<double> WidenLower(Vector512<float> source) 4015/// <summary>Widens the lower half of a <see langword="Vector512&lt;UInt16&gt;" /> into a <see cref="Vector512{UInt32} " />.</summary> 4021public static Vector512<uint> WidenLower(Vector512<ushort> source) 4031/// <summary>Widens the lower half of a <see langword="Vector512&lt;UInt32&gt;" /> into a <see cref="Vector512{UInt64} " />.</summary> 4037public static Vector512<ulong> WidenLower(Vector512<uint> source) 4047/// <summary>Widens the upper half of a <see langword="Vector512&lt;Byte&gt;" /> into a <see cref="Vector512{UInt16} " />.</summary> 4053public static Vector512<ushort> WidenUpper(Vector512<byte> source) 4063/// <summary>Widens the upper half of a <see langword="Vector512&lt;Int16&gt;" /> into a <see cref="Vector512{Int32} " />.</summary> 4068public static Vector512<int> WidenUpper(Vector512<short> source) 4078/// <summary>Widens the upper half of a <see langword="Vector512&lt;Int32&gt;" /> into a <see cref="Vector512{Int64} " />.</summary> 4083public static Vector512<long> WidenUpper(Vector512<int> source) 4093/// <summary>Widens the upper half of a <see langword="Vector512&lt;SByte&gt;" /> into a <see cref="Vector512{Int16} " />.</summary> 4099public static Vector512<short> WidenUpper(Vector512<sbyte> source) 4109/// <summary>Widens the upper half of a <see langword="Vector512&lt;Single&gt;" /> into a <see cref="Vector512{Double} " />.</summary> 4114public static Vector512<double> WidenUpper(Vector512<float> source) 4124/// <summary>Widens the upper half of a <see langword="Vector512&lt;UInt16&gt;" /> into a <see cref="Vector512{UInt32} " />.</summary> 4130public static Vector512<uint> WidenUpper(Vector512<ushort> source) 4140/// <summary>Widens the upper half of a <see langword="Vector512&lt;UInt32&gt;" /> into a <see cref="Vector512{UInt64} " />.</summary> 4146public static Vector512<ulong> WidenUpper(Vector512<uint> source) 4156/// <summary>Creates a new <see cref="Vector512{T}" /> with the element at the specified index set to the specified value and the remaining elements set to the same value as that in the given vector.</summary> 4161/// <returns>A <see cref="Vector512{T}" /> with the value of the element at <paramref name="index" /> set to <paramref name="value" /> and the remaining elements set to the same value as that in <paramref name="vector" />.</returns> 4165public static Vector512<T> WithElement<T>(this Vector512<T> vector, int index, T value) 4167if ((uint)(index) >= (uint)(Vector512<T>.Count)) 4172Vector512<T> result = vector; 4177/// <summary>Creates a new <see cref="Vector512{T}" /> with the lower 256-bits set to the specified value and the upper 256-bits set to the same value as that in the given vector.</summary> 4181/// <returns>A new <see cref="Vector512{T}" /> with the lower 256-bits set to <paramref name="value" /> and the upper 256-bits set to the same value as that in <paramref name="vector" />.</returns> 4185public static Vector512<T> WithLower<T>(this Vector512<T> vector, Vector256<T> value) 4189Vector512<T> result = vector; 4194/// <summary>Creates a new <see cref="Vector512{T}" /> with the upper 256-bits set to the specified value and the lower 256-bits set to the same value as that in the given vector.</summary> 4198/// <returns>A new <see cref="Vector512{T}" /> with the upper 256-bits set to <paramref name="value" /> and the lower 256-bits set to the same value as that in <paramref name="vector" />.</returns> 4202public static Vector512<T> WithUpper<T>(this Vector512<T> vector, Vector256<T> value) 4206Vector512<T> result = vector; 4218public static Vector512<T> Xor<T>(Vector512<T> left, Vector512<T> right) => left ^ right; 4221internal static int CountMatches<T>(Vector512<T> vector) 4235internal static T GetElementUnsafe<T>(in this Vector512<T> vector, int index) 4237Debug.Assert((index >= 0) && (index < Vector512<T>.Count)); 4238ref T address = ref Unsafe.As<Vector512<T>, T>(ref Unsafe.AsRef(in vector)); 4243internal static int IndexOfFirstMatch<T>(Vector512<T> vector) 4265internal static int IndexOfLastMatch<T>(Vector512<T> vector) 4284internal static void SetElementUnsafe<T>(in this Vector512<T> vector, int index, T value) 4286Debug.Assert((index >= 0) && (index < Vector512<T>.Count)); 4287ref T address = ref Unsafe.As<Vector512<T>, T>(ref Unsafe.AsRef(in vector)); 4291internal static void SetLowerUnsafe<T>(in this Vector512<T> vector, Vector256<T> value) => Unsafe.AsRef(in vector._lower) = value; 4293internal static void SetUpperUnsafe<T>(in this Vector512<T> vector, Vector256<T> value) => Unsafe.AsRef(in vector._upper) = value;
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\Vector512DebugView_1.cs (14)
10private readonly Vector512<T> _value; 12public Vector512DebugView(Vector512<T> value) 21var items = new byte[Vector512<byte>.Count]; 31var items = new double[Vector512<double>.Count]; 41var items = new short[Vector512<short>.Count]; 51var items = new int[Vector512<int>.Count]; 61var items = new long[Vector512<long>.Count]; 71var items = new nint[Vector512<nint>.Count]; 81var items = new nuint[Vector512<nuint>.Count]; 91var items = new sbyte[Vector512<sbyte>.Count]; 101var items = new float[Vector512<float>.Count]; 111var items = new ushort[Vector512<ushort>.Count]; 121var items = new uint[Vector512<uint>.Count]; 131var items = new ulong[Vector512<ulong>.Count];
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\VectorMath.cs (31)
2540else if (typeof(TVectorInt64) == typeof(Vector512<long>)) 2542result = (TVectorDouble)(object)Vector512.ConvertToDouble((Vector512<long>)(object)vector); 2575else if (typeof(TVectorInt32) == typeof(Vector512<int>)) 2577result = (TVectorSingle)(object)Vector512.ConvertToSingle((Vector512<int>)(object)vector); 2699else if (typeof(TVectorDouble) == typeof(Vector512<double>)) 2701result = (TVectorDouble)(object)Vector512.FusedMultiplyAdd((Vector512<double>)(object)left, (Vector512<double>)(object)right, (Vector512<double>)(object)addend); 2733else if (typeof(TVector) == typeof(Vector512<double>)) 2767else if (typeof(TVector) == typeof(Vector512<float>)) 2818else if (typeof(TVectorDouble) == typeof(Vector512<double>)) 2824result = (TVectorSingle)(object)Avx512F.ConvertToVector256Single((Vector512<double>)(object)vector); 2828Vector512<double> value = (Vector512<double>)(object)vector; 2867else if (typeof(TVectorDouble) == typeof(Vector512<double>)) 2869Debug.Assert(typeof(TVectorSingle) == typeof(Vector512<float>)); 2870result = (TVectorSingle)(object)Vector512.Narrow((Vector512<double>)(object)lower, (Vector512<double>)(object)upper); 2914else if (typeof(TVectorUInt32) == typeof(Vector512<uint>)) 2917(Vector512<uint>)(object)vector, 2918(Vector512<uint>)(object)shiftAmount 2963else if (typeof(TVectorUInt64) == typeof(Vector512<ulong>)) 2966(Vector512<ulong>)(object)vector, 2967(Vector512<ulong>)(object)shiftAmount 3146Debug.Assert(typeof(TVectorDouble) == typeof(Vector512<double>)); 3197else if (typeof(TVectorSingle) == typeof(Vector512<float>)) 3199Debug.Assert(typeof(TVectorDouble) == typeof(Vector512<double>)); 3200result = (TVectorDouble)(object)Vector512.WidenLower((Vector512<float>)(object)vector); 3237else if (typeof(TVectorSingle) == typeof(Vector512<float>)) 3239Debug.Assert(typeof(TVectorDouble) == typeof(Vector512<double>)); 3240result = (TVectorDouble)(object)Vector512.WidenUpper((Vector512<float>)(object)vector);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx10v1.cs (192)
4058public static Vector512<float> And(Vector512<float> left, Vector512<float> right) => And(left, right); 4063public static Vector512<double> And(Vector512<double> left, Vector512<double> right) => And(left, right); 4069public static Vector512<float> AndNot(Vector512<float> left, Vector512<float> right) => AndNot(left, right); 4074public static Vector512<double> AndNot(Vector512<double> left, Vector512<double> right) => AndNot(left, right); 4080public static Vector512<int> BroadcastPairScalarToVector512(Vector128<int> value) => BroadcastPairScalarToVector512(value); 4085public static Vector512<uint> BroadcastPairScalarToVector512(Vector128<uint> value) => BroadcastPairScalarToVector512(value); 4090public static Vector512<float> BroadcastPairScalarToVector512(Vector128<float> value) => BroadcastPairScalarToVector512(value); 4096public static unsafe Vector512<long> BroadcastVector128ToVector512(long* address) => BroadcastVector128ToVector512(address); 4102public static unsafe Vector512<ulong> BroadcastVector128ToVector512(ulong* address) => BroadcastVector128ToVector512(address); 4108public static unsafe Vector512<double> BroadcastVector128ToVector512(double* address) => BroadcastVector128ToVector512(address); 4114public static unsafe Vector512<int> BroadcastVector256ToVector512(int* address) => BroadcastVector256ToVector512(address); 4120public static unsafe Vector512<uint> BroadcastVector256ToVector512(uint* address) => BroadcastVector256ToVector512(address); 4126public static unsafe Vector512<float> BroadcastVector256ToVector512(float* address) => BroadcastVector256ToVector512(address); 4132public static Vector512<double> Classify(Vector512<double> value, [ConstantExpected] byte control) => Classify(value, control); 4137public static Vector512<float> Classify(Vector512<float> value, [ConstantExpected] byte control) => Classify(value, control); 4143public static Vector512<byte> Compress(Vector512<byte> merge, Vector512<byte> mask, Vector512<byte> value) => Compress(merge, mask, value); 4148public static Vector512<short> Compress(Vector512<short> merge, Vector512<short> mask, Vector512<short> value) => Compress(merge, mask, value); 4153public static Vector512<sbyte> Compress(Vector512<sbyte> merge, Vector512<sbyte> mask, Vector512<sbyte> value) => Compress(merge, mask, value); 4158public static Vector512<ushort> Compress(Vector512<ushort> merge, Vector512<ushort> mask, Vector512<ushort> value) => Compress(merge, mask, value); 4164public static unsafe void CompressStore(byte* address, Vector512<byte> mask, Vector512<byte> source) => CompressStore(address, mask, source); 4170public static unsafe void CompressStore(short* address, Vector512<short> mask, Vector512<short> source) => CompressStore(address, mask, source); 4176public static unsafe void CompressStore(sbyte* address, Vector512<sbyte> mask, Vector512<sbyte> source) => CompressStore(address, mask, source); 4182public static unsafe void CompressStore(ushort* address, Vector512<ushort> mask, Vector512<ushort> source) => CompressStore(address, mask, source); 4188public static Vector256<float> ConvertToVector256Single(Vector512<long> value) => ConvertToVector256Single(value); 4193public static Vector256<float> ConvertToVector256Single(Vector512<ulong> value) => ConvertToVector256Single(value); 4198public static Vector256<float> ConvertToVector256Single(Vector512<long> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector256Single(value, mode); 4203public static Vector256<float> ConvertToVector256Single(Vector512<ulong> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector256Single(value, mode); 4209public static Vector512<double> ConvertToVector512Double(Vector512<long> value) => ConvertToVector512Double(value); 4214public static Vector512<double> ConvertToVector512Double(Vector512<ulong> value) => ConvertToVector512Double(value); 4219public static Vector512<double> ConvertToVector512Double(Vector512<long> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Double(value, mode); 4224public static Vector512<double> ConvertToVector512Double(Vector512<ulong> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Double(value, mode); 4230public static Vector512<long> ConvertToVector512Int64(Vector256<float> value) => ConvertToVector512Int64(value); 4235public static Vector512<long> ConvertToVector512Int64(Vector512<double> value) => ConvertToVector512Int64(value); 4240public static Vector512<long> ConvertToVector512Int64(Vector256<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Int64(value, mode); 4245public static Vector512<long> ConvertToVector512Int64(Vector512<double> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Int64(value, mode); 4251public static Vector512<long> ConvertToVector512Int64WithTruncation(Vector256<float> value) => ConvertToVector512Int64WithTruncation(value); 4256public static Vector512<long> ConvertToVector512Int64WithTruncation(Vector512<double> value) => ConvertToVector512Int64WithTruncation(value); 4262public static Vector512<ulong> ConvertToVector512UInt64(Vector256<float> value) => ConvertToVector512UInt64(value); 4267public static Vector512<ulong> ConvertToVector512UInt64(Vector512<double> value) => ConvertToVector512UInt64(value); 4272public static Vector512<ulong> ConvertToVector512UInt64(Vector256<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512UInt64(value, mode); 4277public static Vector512<ulong> ConvertToVector512UInt64(Vector512<double> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512UInt64(value, mode); 4283public static Vector512<ulong> ConvertToVector512UInt64WithTruncation(Vector256<float> value) => ConvertToVector512UInt64WithTruncation(value); 4288public static Vector512<ulong> ConvertToVector512UInt64WithTruncation(Vector512<double> value) => ConvertToVector512UInt64WithTruncation(value); 4294public static Vector512<int> DetectConflicts(Vector512<int> value) => DetectConflicts(value); 4299public static Vector512<uint> DetectConflicts(Vector512<uint> value) => DetectConflicts(value); 4304public static Vector512<long> DetectConflicts(Vector512<long> value) => DetectConflicts(value); 4309public static Vector512<ulong> DetectConflicts(Vector512<ulong> value) => DetectConflicts(value); 4315public static Vector512<byte> Expand(Vector512<byte> merge, Vector512<byte> mask, Vector512<byte> value) => Expand(merge, mask, value); 4320public static Vector512<short> Expand(Vector512<short> merge, Vector512<short> mask, Vector512<short> value) => Expand(merge, mask, value); 4325public static Vector512<sbyte> Expand(Vector512<sbyte> merge, Vector512<sbyte> mask, Vector512<sbyte> value) => Expand(merge, mask, value); 4330public static Vector512<ushort> Expand(Vector512<ushort> merge, Vector512<ushort> mask, Vector512<ushort> value) => Expand(merge, mask, value); 4337public static unsafe Vector512<byte> ExpandLoad(byte* address, Vector512<byte> mask, Vector512<byte> merge) => ExpandLoad(address, mask, merge); 4344public static unsafe Vector512<short> ExpandLoad(short* address, Vector512<short> mask, Vector512<short> merge) => ExpandLoad(address, mask, merge); 4351public static unsafe Vector512<sbyte> ExpandLoad(sbyte* address, Vector512<sbyte> mask, Vector512<sbyte> merge) => ExpandLoad(address, mask, merge); 4358public static unsafe Vector512<ushort> ExpandLoad(ushort* address, Vector512<ushort> mask, Vector512<ushort> merge) => ExpandLoad(address, mask, merge); 4364public static new Vector128<long> ExtractVector128(Vector512<long> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 4369public static new Vector128<ulong> ExtractVector128(Vector512<ulong> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 4374public static new Vector128<double> ExtractVector128(Vector512<double> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 4380public static new Vector256<int> ExtractVector256(Vector512<int> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 4385public static new Vector256<uint> ExtractVector256(Vector512<uint> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 4390public static new Vector256<float> ExtractVector256(Vector512<float> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 4396public static new Vector512<long> InsertVector128(Vector512<long> value, Vector128<long> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 4401public static new Vector512<ulong> InsertVector128(Vector512<ulong> value, Vector128<ulong> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 4406public static new Vector512<double> InsertVector128(Vector512<double> value, Vector128<double> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 4412public static new Vector512<int> InsertVector256(Vector512<int> value, Vector256<int> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4417public static new Vector512<uint> InsertVector256(Vector512<uint> value, Vector256<uint> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4422public static new Vector512<float> InsertVector256(Vector512<float> value, Vector256<float> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4428public static Vector512<int> LeadingZeroCount(Vector512<int> value) => LeadingZeroCount(value); 4433public static Vector512<uint> LeadingZeroCount(Vector512<uint> value) => LeadingZeroCount(value); 4438public static Vector512<long> LeadingZeroCount(Vector512<long> value) => LeadingZeroCount(value); 4443public static Vector512<ulong> LeadingZeroCount(Vector512<ulong> value) => LeadingZeroCount(value); 4449public static int MoveMask(Vector512<double> value) => MoveMask(value); 4454public static int MoveMask(Vector512<long> value) => MoveMask(value); 4459public static int MoveMask(Vector512<ulong> value) => MoveMask(value); 4465public static Vector512<long> MultiplyLow(Vector512<long> left, Vector512<long> right) => MultiplyLow(left, right); 4470public static Vector512<ulong> MultiplyLow(Vector512<ulong> left, Vector512<ulong> right) => MultiplyLow(left, right); 4476public static Vector512<byte> MultiShift(Vector512<byte> control, Vector512<ulong> value) => MultiShift(control, value); 4481public static Vector512<sbyte> MultiShift(Vector512<sbyte> control, Vector512<long> value) => MultiShift(control, value); 4487public static Vector512<float> Or(Vector512<float> left, Vector512<float> right) => Or(left, right); 4492public static Vector512<double> Or(Vector512<double> left, Vector512<double> right) => Or(left, right); 4499public static Vector512<sbyte> PermuteVar64x8(Vector512<sbyte> left, Vector512<sbyte> control) => PermuteVar64x8(left, control); 4505public static Vector512<byte> PermuteVar64x8(Vector512<byte> left, Vector512<byte> control) => PermuteVar64x8(left, control); 4512public static Vector512<byte> PermuteVar64x8x2(Vector512<byte> lower, Vector512<byte> indices, Vector512<byte> upper) => PermuteVar64x8x2(lower, indices, upper); 4518public static Vector512<sbyte> PermuteVar64x8x2(Vector512<sbyte> lower, Vector512<sbyte> indices, Vector512<sbyte> upper) => PermuteVar64x8x2(lower, indices, upper); 4524public static Vector512<float> Range(Vector512<float> left, Vector512<float> right, [ConstantExpected(Max = (byte)(0x0F))] byte control) => Range(left, right, control); 4529public static Vector512<double> Range(Vector512<double> left, Vector512<double> right, [ConstantExpected(Max = (byte)(0x0F))] byte control) => Range(left, right, control); 4535public static Vector512<float> Reduce(Vector512<float> value, [ConstantExpected] byte control) => Reduce(value, control); 4540public static Vector512<double> Reduce(Vector512<double> value, [ConstantExpected] byte control) => Reduce(value, control); 4546public static Vector512<float> Xor(Vector512<float> left, Vector512<float> right) => Xor(left, right); 4551public static Vector512<double> Xor(Vector512<double> left, Vector512<double> right) => Xor(left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx10v2.cs (21)
147public static Vector512<double> MinMax(Vector512<double> left, Vector512<double> right, [ConstantExpected] byte control) => MinMax(left, right, control); 152public static Vector512<float> MinMax(Vector512<float> left, Vector512<float> right, [ConstantExpected] byte control) => MinMax(left, right, control); 157public static Vector512<int> ConvertToSByteWithSaturationAndZeroExtendToInt32(Vector512<float> value) => ConvertToSByteWithSaturationAndZeroExtendToInt32(value); 162public static Vector512<int> ConvertToSByteWithSaturationAndZeroExtendToInt32(Vector512<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToSByteWithSaturationAndZeroExtendToInt32(value, mode); 167public static Vector512<int> ConvertToByteWithSaturationAndZeroExtendToInt32(Vector512<float> value) => ConvertToByteWithSaturationAndZeroExtendToInt32(value); 172public static Vector512<int> ConvertToByteWithSaturationAndZeroExtendToInt32(Vector512<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToByteWithSaturationAndZeroExtendToInt32(value, mode); 177public static Vector512<int> ConvertToSByteWithTruncatedSaturationAndZeroExtendToInt32(Vector512<float> value) => ConvertToSByteWithTruncatedSaturationAndZeroExtendToInt32(value); 182public static Vector512<int> ConvertToByteWithTruncatedSaturationAndZeroExtendToInt32(Vector512<float> value) => ConvertToByteWithTruncatedSaturationAndZeroExtendToInt32(value); 187public static Vector512<ushort> MultipleSumAbsoluteDifferences(Vector512<byte> left, Vector512<byte> right, [ConstantExpected] byte mask) => MultipleSumAbsoluteDifferences(left, right, mask);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx512Bmm.cs (10)
36public static Vector512<byte> ReverseBits(Vector512<byte> values) => ReverseBits(values); 48public static Vector512<ushort> BitMultiplyMatrix16x16WithOrReduction(Vector512<ushort> addend, Vector512<ushort> left, Vector512<ushort> right) => BitMultiplyMatrix16x16WithOrReduction(addend, left, right); 60public static Vector512<ushort> BitMultiplyMatrix16x16WithXorReduction(Vector512<ushort> addend, Vector512<ushort> left, Vector512<ushort> right) => BitMultiplyMatrix16x16WithXorReduction(addend, left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx512BW.cs (356)
629public static Vector512<byte> Abs(Vector512<sbyte> value) => Abs(value); 634public static Vector512<ushort> Abs(Vector512<short> value) => Abs(value); 640public static Vector512<sbyte> Add(Vector512<sbyte> left, Vector512<sbyte> right) => Add(left, right); 645public static Vector512<byte> Add(Vector512<byte> left, Vector512<byte> right) => Add(left, right); 650public static Vector512<short> Add(Vector512<short> left, Vector512<short> right) => Add(left, right); 655public static Vector512<ushort> Add(Vector512<ushort> left, Vector512<ushort> right) => Add(left, right); 661public static Vector512<sbyte> AddSaturate(Vector512<sbyte> left, Vector512<sbyte> right) => AddSaturate(left, right); 666public static Vector512<byte> AddSaturate(Vector512<byte> left, Vector512<byte> right) => AddSaturate(left, right); 671public static Vector512<short> AddSaturate(Vector512<short> left, Vector512<short> right) => AddSaturate(left, right); 676public static Vector512<ushort> AddSaturate(Vector512<ushort> left, Vector512<ushort> right) => AddSaturate(left, right); 682public static Vector512<sbyte> AlignRight(Vector512<sbyte> left, Vector512<sbyte> right, [ConstantExpected] byte mask) => AlignRight(left, right, mask); 687public static Vector512<byte> AlignRight(Vector512<byte> left, Vector512<byte> right, [ConstantExpected] byte mask) => AlignRight(left, right, mask); 693public static Vector512<byte> Average(Vector512<byte> left, Vector512<byte> right) => Average(left, right); 698public static Vector512<ushort> Average(Vector512<ushort> left, Vector512<ushort> right) => Average(left, right); 705public static Vector512<byte> BlendVariable(Vector512<byte> left, Vector512<byte> right, Vector512<byte> mask) => BlendVariable(left, right, mask); 711public static Vector512<short> BlendVariable(Vector512<short> left, Vector512<short> right, Vector512<short> mask) => BlendVariable(left, right, mask); 717public static Vector512<sbyte> BlendVariable(Vector512<sbyte> left, Vector512<sbyte> right, Vector512<sbyte> mask) => BlendVariable(left, right, mask); 723public static Vector512<ushort> BlendVariable(Vector512<ushort> left, Vector512<ushort> right, Vector512<ushort> mask) => BlendVariable(left, right, mask); 729public static Vector512<byte> BroadcastScalarToVector512(Vector128<byte> value) => BroadcastScalarToVector512(value); 734public static Vector512<sbyte> BroadcastScalarToVector512(Vector128<sbyte> value) => BroadcastScalarToVector512(value); 739public static Vector512<short> BroadcastScalarToVector512(Vector128<short> value) => BroadcastScalarToVector512(value); 744public static Vector512<ushort> BroadcastScalarToVector512(Vector128<ushort> value) => BroadcastScalarToVector512(value); 750public static Vector512<byte> CompareEqual(Vector512<byte> left, Vector512<byte> right) => CompareEqual(left, right); 755public static Vector512<byte> CompareGreaterThan(Vector512<byte> left, Vector512<byte> right) => CompareGreaterThan(left, right); 760public static Vector512<byte> CompareGreaterThanOrEqual(Vector512<byte> left, Vector512<byte> right) => CompareGreaterThanOrEqual(left, right); 765public static Vector512<byte> CompareLessThan(Vector512<byte> left, Vector512<byte> right) => CompareLessThan(left, right); 770public static Vector512<byte> CompareLessThanOrEqual(Vector512<byte> left, Vector512<byte> right) => CompareLessThanOrEqual(left, right); 775public static Vector512<byte> CompareNotEqual(Vector512<byte> left, Vector512<byte> right) => CompareNotEqual(left, right); 781public static Vector512<short> CompareEqual(Vector512<short> left, Vector512<short> right) => CompareEqual(left, right); 786public static Vector512<short> CompareGreaterThan(Vector512<short> left, Vector512<short> right) => CompareGreaterThan(left, right); 791public static Vector512<short> CompareGreaterThanOrEqual(Vector512<short> left, Vector512<short> right) => CompareGreaterThanOrEqual(left, right); 796public static Vector512<short> CompareLessThan(Vector512<short> left, Vector512<short> right) => CompareLessThan(left, right); 801public static Vector512<short> CompareLessThanOrEqual(Vector512<short> left, Vector512<short> right) => CompareLessThanOrEqual(left, right); 806public static Vector512<short> CompareNotEqual(Vector512<short> left, Vector512<short> right) => CompareNotEqual(left, right); 812public static Vector512<sbyte> CompareEqual(Vector512<sbyte> left, Vector512<sbyte> right) => CompareEqual(left, right); 817public static Vector512<sbyte> CompareGreaterThan(Vector512<sbyte> left, Vector512<sbyte> right) => CompareGreaterThan(left, right); 822public static Vector512<sbyte> CompareGreaterThanOrEqual(Vector512<sbyte> left, Vector512<sbyte> right) => CompareGreaterThanOrEqual(left, right); 827public static Vector512<sbyte> CompareLessThan(Vector512<sbyte> left, Vector512<sbyte> right) => CompareLessThan(left, right); 832public static Vector512<sbyte> CompareLessThanOrEqual(Vector512<sbyte> left, Vector512<sbyte> right) => CompareLessThanOrEqual(left, right); 837public static Vector512<sbyte> CompareNotEqual(Vector512<sbyte> left, Vector512<sbyte> right) => CompareNotEqual(left, right); 843public static Vector512<ushort> CompareEqual(Vector512<ushort> left, Vector512<ushort> right) => CompareEqual(left, right); 848public static Vector512<ushort> CompareGreaterThan(Vector512<ushort> left, Vector512<ushort> right) => CompareGreaterThan(left, right); 853public static Vector512<ushort> CompareGreaterThanOrEqual(Vector512<ushort> left, Vector512<ushort> right) => CompareGreaterThanOrEqual(left, right); 858public static Vector512<ushort> CompareLessThan(Vector512<ushort> left, Vector512<ushort> right) => CompareLessThan(left, right); 863public static Vector512<ushort> CompareLessThanOrEqual(Vector512<ushort> left, Vector512<ushort> right) => CompareLessThanOrEqual(left, right); 868public static Vector512<ushort> CompareNotEqual(Vector512<ushort> left, Vector512<ushort> right) => CompareNotEqual(left, right); 874public static Vector256<byte> ConvertToVector256Byte(Vector512<short> value) => ConvertToVector256Byte(value); 879public static Vector256<byte> ConvertToVector256Byte(Vector512<ushort> value) => ConvertToVector256Byte(value); 884public static Vector256<byte> ConvertToVector256ByteWithSaturation(Vector512<ushort> value) => ConvertToVector256ByteWithSaturation(value); 890public static Vector256<sbyte> ConvertToVector256SByte(Vector512<short> value) => ConvertToVector256SByte(value); 895public static Vector256<sbyte> ConvertToVector256SByte(Vector512<ushort> value) => ConvertToVector256SByte(value); 900public static Vector256<sbyte> ConvertToVector256SByteWithSaturation(Vector512<short> value) => ConvertToVector256SByteWithSaturation(value); 906public static Vector512<short> ConvertToVector512Int16(Vector256<sbyte> value) => ConvertToVector512Int16(value); 911public static Vector512<short> ConvertToVector512Int16(Vector256<byte> value) => ConvertToVector512Int16(value); 916public static Vector512<ushort> ConvertToVector512UInt16(Vector256<sbyte> value) => ConvertToVector512UInt16(value); 921public static Vector512<ushort> ConvertToVector512UInt16(Vector256<byte> value) => ConvertToVector512UInt16(value); 927public static new unsafe Vector512<sbyte> LoadVector512(sbyte* address) => LoadVector512(address); 933public static new unsafe Vector512<byte> LoadVector512(byte* address) => LoadVector512(address); 939public static new unsafe Vector512<short> LoadVector512(short* address) => LoadVector512(address); 945public static new unsafe Vector512<ushort> LoadVector512(ushort* address) => LoadVector512(address); 952public static unsafe Vector512<byte> MaskLoad(byte* address, Vector512<byte> mask, Vector512<byte> merge) => MaskLoad(address, mask, merge); 959public static unsafe Vector512<short> MaskLoad(short* address, Vector512<short> mask, Vector512<short> merge) => MaskLoad(address, mask, merge); 966public static unsafe Vector512<sbyte> MaskLoad(sbyte* address, Vector512<sbyte> mask, Vector512<sbyte> merge) => MaskLoad(address, mask, merge); 973public static unsafe Vector512<ushort> MaskLoad(ushort* address, Vector512<ushort> mask, Vector512<ushort> merge) => MaskLoad(address, mask, merge); 979public static unsafe void MaskStore(byte* address, Vector512<byte> mask, Vector512<byte> source) => MaskStore(address, mask, source); 985public static unsafe void MaskStore(short* address, Vector512<short> mask, Vector512<short> source) => MaskStore(address, mask, source); 991public static unsafe void MaskStore(sbyte* address, Vector512<sbyte> mask, Vector512<sbyte> source) => MaskStore(address, mask, source); 997public static unsafe void MaskStore(ushort* address, Vector512<ushort> mask, Vector512<ushort> source) => MaskStore(address, mask, source); 1003public static Vector512<sbyte> Max(Vector512<sbyte> left, Vector512<sbyte> right) => Max(left, right); 1008public static Vector512<byte> Max(Vector512<byte> left, Vector512<byte> right) => Max(left, right); 1013public static Vector512<short> Max(Vector512<short> left, Vector512<short> right) => Max(left, right); 1018public static Vector512<ushort> Max(Vector512<ushort> left, Vector512<ushort> right) => Max(left, right); 1024public static Vector512<sbyte> Min(Vector512<sbyte> left, Vector512<sbyte> right) => Min(left, right); 1029public static Vector512<byte> Min(Vector512<byte> left, Vector512<byte> right) => Min(left, right); 1034public static Vector512<short> Min(Vector512<short> left, Vector512<short> right) => Min(left, right); 1039public static Vector512<ushort> Min(Vector512<ushort> left, Vector512<ushort> right) => Min(left, right); 1056public static long MoveMask(Vector512<byte> value) => MoveMask(value); 1061public static int MoveMask(Vector512<short> value) => MoveMask(value); 1066public static long MoveMask(Vector512<sbyte> value) => MoveMask(value); 1071public static int MoveMask(Vector512<ushort> value) => MoveMask(value); 1077public static Vector512<int> MultiplyAddAdjacent(Vector512<short> left, Vector512<short> right) => MultiplyAddAdjacent(left, right); 1082public static Vector512<short> MultiplyAddAdjacent(Vector512<byte> left, Vector512<sbyte> right) => MultiplyAddAdjacent(left, right); 1088public static Vector512<short> MultiplyHigh(Vector512<short> left, Vector512<short> right) => MultiplyHigh(left, right); 1093public static Vector512<ushort> MultiplyHigh(Vector512<ushort> left, Vector512<ushort> right) => MultiplyHigh(left, right); 1099public static Vector512<short> MultiplyHighRoundScale(Vector512<short> left, Vector512<short> right) => MultiplyHighRoundScale(left, right); 1105public static Vector512<short> MultiplyLow(Vector512<short> left, Vector512<short> right) => MultiplyLow(left, right); 1110public static Vector512<ushort> MultiplyLow(Vector512<ushort> left, Vector512<ushort> right) => MultiplyLow(left, right); 1116public static Vector512<sbyte> PackSignedSaturate(Vector512<short> left, Vector512<short> right) => PackSignedSaturate(left, right); 1121public static Vector512<short> PackSignedSaturate(Vector512<int> left, Vector512<int> right) => PackSignedSaturate(left, right); 1127public static Vector512<byte> PackUnsignedSaturate(Vector512<short> left, Vector512<short> right) => PackUnsignedSaturate(left, right); 1132public static Vector512<ushort> PackUnsignedSaturate(Vector512<int> left, Vector512<int> right) => PackUnsignedSaturate(left, right); 1139public static Vector512<short> PermuteVar32x16(Vector512<short> left, Vector512<short> control) => PermuteVar32x16(left, control); 1145public static Vector512<ushort> PermuteVar32x16(Vector512<ushort> left, Vector512<ushort> control) => PermuteVar32x16(left, control); 1152public static Vector512<short> PermuteVar32x16x2(Vector512<short> lower, Vector512<short> indices, Vector512<short> upper) => PermuteVar32x16x2(lower, indices, upper); 1158public static Vector512<ushort> PermuteVar32x16x2(Vector512<ushort> lower, Vector512<ushort> indices, Vector512<ushort> upper) => PermuteVar32x16x2(lower, indices, upper); 1164public static Vector512<short> ShiftLeftLogical(Vector512<short> value, Vector128<short> count) => ShiftLeftLogical(value, count); 1169public static Vector512<ushort> ShiftLeftLogical(Vector512<ushort> value, Vector128<ushort> count) => ShiftLeftLogical(value, count); 1175public static Vector512<short> ShiftLeftLogical(Vector512<short> value, [ConstantExpected] byte count) => ShiftLeftLogical(value, count); 1180public static Vector512<ushort> ShiftLeftLogical(Vector512<ushort> value, [ConstantExpected] byte count) => ShiftLeftLogical(value, count); 1186public static Vector512<sbyte> ShiftLeftLogical128BitLane(Vector512<sbyte> value, [ConstantExpected] byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); 1191public static Vector512<byte> ShiftLeftLogical128BitLane(Vector512<byte> value, [ConstantExpected] byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); 1197public static Vector512<short> ShiftLeftLogicalVariable(Vector512<short> value, Vector512<ushort> count) => ShiftLeftLogicalVariable(value, count); 1202public static Vector512<ushort> ShiftLeftLogicalVariable(Vector512<ushort> value, Vector512<ushort> count) => ShiftLeftLogicalVariable(value, count); 1208public static Vector512<short> ShiftRightArithmetic(Vector512<short> value, Vector128<short> count) => ShiftRightArithmetic(value, count); 1214public static Vector512<short> ShiftRightArithmetic(Vector512<short> value, [ConstantExpected] byte count) => ShiftRightArithmetic(value, count); 1220public static Vector512<short> ShiftRightArithmeticVariable(Vector512<short> value, Vector512<ushort> count) => ShiftRightArithmeticVariable(value, count); 1226public static Vector512<short> ShiftRightLogical(Vector512<short> value, Vector128<short> count) => ShiftRightLogical(value, count); 1231public static Vector512<ushort> ShiftRightLogical(Vector512<ushort> value, Vector128<ushort> count) => ShiftRightLogical(value, count); 1237public static Vector512<short> ShiftRightLogical(Vector512<short> value, [ConstantExpected] byte count) => ShiftRightLogical(value, count); 1242public static Vector512<ushort> ShiftRightLogical(Vector512<ushort> value, [ConstantExpected] byte count) => ShiftRightLogical(value, count); 1248public static Vector512<sbyte> ShiftRightLogical128BitLane(Vector512<sbyte> value, [ConstantExpected] byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); 1253public static Vector512<byte> ShiftRightLogical128BitLane(Vector512<byte> value, [ConstantExpected] byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); 1259public static Vector512<short> ShiftRightLogicalVariable(Vector512<short> value, Vector512<ushort> count) => ShiftRightLogicalVariable(value, count); 1264public static Vector512<ushort> ShiftRightLogicalVariable(Vector512<ushort> value, Vector512<ushort> count) => ShiftRightLogicalVariable(value, count); 1270public static Vector512<sbyte> Shuffle(Vector512<sbyte> value, Vector512<sbyte> mask) => Shuffle(value, mask); 1275public static Vector512<byte> Shuffle(Vector512<byte> value, Vector512<byte> mask) => Shuffle(value, mask); 1281public static Vector512<short> ShuffleHigh(Vector512<short> value, [ConstantExpected] byte control) => ShuffleHigh(value, control); 1286public static Vector512<ushort> ShuffleHigh(Vector512<ushort> value, [ConstantExpected] byte control) => ShuffleHigh(value, control); 1292public static Vector512<short> ShuffleLow(Vector512<short> value, [ConstantExpected] byte control) => ShuffleLow(value, control); 1297public static Vector512<ushort> ShuffleLow(Vector512<ushort> value, [ConstantExpected] byte control) => ShuffleLow(value, control); 1303public static new unsafe void Store(sbyte* address, Vector512<sbyte> source) => Store(address, source); 1309public static new unsafe void Store(byte* address, Vector512<byte> source) => Store(address, source); 1315public static new unsafe void Store(short* address, Vector512<short> source) => Store(address, source); 1321public static new unsafe void Store(ushort* address, Vector512<ushort> source) => Store(address, source); 1327public static Vector512<sbyte> Subtract(Vector512<sbyte> left, Vector512<sbyte> right) => Subtract(left, right); 1332public static Vector512<byte> Subtract(Vector512<byte> left, Vector512<byte> right) => Subtract(left, right); 1337public static Vector512<short> Subtract(Vector512<short> left, Vector512<short> right) => Subtract(left, right); 1342public static Vector512<ushort> Subtract(Vector512<ushort> left, Vector512<ushort> right) => Subtract(left, right); 1348public static Vector512<sbyte> SubtractSaturate(Vector512<sbyte> left, Vector512<sbyte> right) => SubtractSaturate(left, right); 1353public static Vector512<short> SubtractSaturate(Vector512<short> left, Vector512<short> right) => SubtractSaturate(left, right); 1358public static Vector512<byte> SubtractSaturate(Vector512<byte> left, Vector512<byte> right) => SubtractSaturate(left, right); 1363public static Vector512<ushort> SubtractSaturate(Vector512<ushort> left, Vector512<ushort> right) => SubtractSaturate(left, right); 1369public static Vector512<ushort> SumAbsoluteDifferences(Vector512<byte> left, Vector512<byte> right) => SumAbsoluteDifferences(left, right); 1375public static Vector512<ushort> SumAbsoluteDifferencesInBlock32(Vector512<byte> left, Vector512<byte> right, [ConstantExpected] byte control) => SumAbsoluteDifferencesInBlock32(left, right, control); 1381public static Vector512<sbyte> UnpackHigh(Vector512<sbyte> left, Vector512<sbyte> right) => UnpackHigh(left, right); 1386public static Vector512<byte> UnpackHigh(Vector512<byte> left, Vector512<byte> right) => UnpackHigh(left, right); 1391public static Vector512<short> UnpackHigh(Vector512<short> left, Vector512<short> right) => UnpackHigh(left, right); 1396public static Vector512<ushort> UnpackHigh(Vector512<ushort> left, Vector512<ushort> right) => UnpackHigh(left, right); 1402public static Vector512<sbyte> UnpackLow(Vector512<sbyte> left, Vector512<sbyte> right) => UnpackLow(left, right); 1407public static Vector512<byte> UnpackLow(Vector512<byte> left, Vector512<byte> right) => UnpackLow(left, right); 1412public static Vector512<short> UnpackLow(Vector512<short> left, Vector512<short> right) => UnpackLow(left, right); 1417public static Vector512<ushort> UnpackLow(Vector512<ushort> left, Vector512<ushort> right) => UnpackLow(left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx512CD.cs (16)
131public static Vector512<int> DetectConflicts(Vector512<int> value) => DetectConflicts(value); 136public static Vector512<uint> DetectConflicts(Vector512<uint> value) => DetectConflicts(value); 141public static Vector512<long> DetectConflicts(Vector512<long> value) => DetectConflicts(value); 146public static Vector512<ulong> DetectConflicts(Vector512<ulong> value) => DetectConflicts(value); 152public static Vector512<int> LeadingZeroCount(Vector512<int> value) => LeadingZeroCount(value); 157public static Vector512<uint> LeadingZeroCount(Vector512<uint> value) => LeadingZeroCount(value); 162public static Vector512<long> LeadingZeroCount(Vector512<long> value) => LeadingZeroCount(value); 167public static Vector512<ulong> LeadingZeroCount(Vector512<ulong> value) => LeadingZeroCount(value);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx512DQ.cs (104)
282public static Vector512<float> And(Vector512<float> left, Vector512<float> right) => And(left, right); 287public static Vector512<double> And(Vector512<double> left, Vector512<double> right) => And(left, right); 293public static Vector512<float> AndNot(Vector512<float> left, Vector512<float> right) => AndNot(left, right); 298public static Vector512<double> AndNot(Vector512<double> left, Vector512<double> right) => AndNot(left, right); 304public static Vector512<int> BroadcastPairScalarToVector512(Vector128<int> value) => BroadcastPairScalarToVector512(value); 309public static Vector512<uint> BroadcastPairScalarToVector512(Vector128<uint> value) => BroadcastPairScalarToVector512(value); 314public static Vector512<float> BroadcastPairScalarToVector512(Vector128<float> value) => BroadcastPairScalarToVector512(value); 320public static unsafe Vector512<long> BroadcastVector128ToVector512(long* address) => BroadcastVector128ToVector512(address); 326public static unsafe Vector512<ulong> BroadcastVector128ToVector512(ulong* address) => BroadcastVector128ToVector512(address); 332public static unsafe Vector512<double> BroadcastVector128ToVector512(double* address) => BroadcastVector128ToVector512(address); 338public static unsafe Vector512<int> BroadcastVector256ToVector512(int* address) => BroadcastVector256ToVector512(address); 344public static unsafe Vector512<uint> BroadcastVector256ToVector512(uint* address) => BroadcastVector256ToVector512(address); 350public static unsafe Vector512<float> BroadcastVector256ToVector512(float* address) => BroadcastVector256ToVector512(address); 356public static Vector512<double> Classify(Vector512<double> value, [ConstantExpected] byte control) => Classify(value, control); 361public static Vector512<float> Classify(Vector512<float> value, [ConstantExpected] byte control) => Classify(value, control); 378public static Vector256<float> ConvertToVector256Single(Vector512<long> value) => ConvertToVector256Single(value); 383public static Vector256<float> ConvertToVector256Single(Vector512<ulong> value) => ConvertToVector256Single(value); 388public static Vector256<float> ConvertToVector256Single(Vector512<long> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector256Single(value, mode); 393public static Vector256<float> ConvertToVector256Single(Vector512<ulong> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector256Single(value, mode); 399public static Vector512<double> ConvertToVector512Double(Vector512<long> value) => ConvertToVector512Double(value); 404public static Vector512<double> ConvertToVector512Double(Vector512<ulong> value) => ConvertToVector512Double(value); 409public static Vector512<double> ConvertToVector512Double(Vector512<long> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Double(value, mode); 414public static Vector512<double> ConvertToVector512Double(Vector512<ulong> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Double(value, mode); 420public static Vector512<long> ConvertToVector512Int64(Vector256<float> value) => ConvertToVector512Int64(value); 425public static Vector512<long> ConvertToVector512Int64(Vector512<double> value) => ConvertToVector512Int64(value); 430public static Vector512<long> ConvertToVector512Int64(Vector256<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Int64(value, mode); 435public static Vector512<long> ConvertToVector512Int64(Vector512<double> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Int64(value, mode); 441public static Vector512<long> ConvertToVector512Int64WithTruncation(Vector256<float> value) => ConvertToVector512Int64WithTruncation(value); 446public static Vector512<long> ConvertToVector512Int64WithTruncation(Vector512<double> value) => ConvertToVector512Int64WithTruncation(value); 451public static Vector512<ulong> ConvertToVector512UInt64(Vector256<float> value) => ConvertToVector512UInt64(value); 456public static Vector512<ulong> ConvertToVector512UInt64(Vector512<double> value) => ConvertToVector512UInt64(value); 461public static Vector512<ulong> ConvertToVector512UInt64(Vector256<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512UInt64(value, mode); 466public static Vector512<ulong> ConvertToVector512UInt64(Vector512<double> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512UInt64(value, mode); 471public static Vector512<ulong> ConvertToVector512UInt64WithTruncation(Vector256<float> value) => ConvertToVector512UInt64WithTruncation(value); 476public static Vector512<ulong> ConvertToVector512UInt64WithTruncation(Vector512<double> value) => ConvertToVector512UInt64WithTruncation(value); 482public static new Vector128<long> ExtractVector128(Vector512<long> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 487public static new Vector128<ulong> ExtractVector128(Vector512<ulong> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 492public static new Vector128<double> ExtractVector128(Vector512<double> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 498public static new Vector256<int> ExtractVector256(Vector512<int> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 503public static new Vector256<uint> ExtractVector256(Vector512<uint> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 508public static new Vector256<float> ExtractVector256(Vector512<float> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 514public static new Vector512<long> InsertVector128(Vector512<long> value, Vector128<long> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 519public static new Vector512<ulong> InsertVector128(Vector512<ulong> value, Vector128<ulong> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 524public static new Vector512<double> InsertVector128(Vector512<double> value, Vector128<double> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 530public static new Vector512<int> InsertVector256(Vector512<int> value, Vector256<int> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 535public static new Vector512<uint> InsertVector256(Vector512<uint> value, Vector256<uint> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 540public static new Vector512<float> InsertVector256(Vector512<float> value, Vector256<float> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 619public static int MoveMask(Vector512<double> value) => MoveMask(value); 624public static int MoveMask(Vector512<long> value) => MoveMask(value); 629public static int MoveMask(Vector512<ulong> value) => MoveMask(value); 635public static Vector512<long> MultiplyLow(Vector512<long> left, Vector512<long> right) => MultiplyLow(left, right); 640public static Vector512<ulong> MultiplyLow(Vector512<ulong> left, Vector512<ulong> right) => MultiplyLow(left, right); 646public static Vector512<float> Or(Vector512<float> left, Vector512<float> right) => Or(left, right); 651public static Vector512<double> Or(Vector512<double> left, Vector512<double> right) => Or(left, right); 657public static Vector512<float> Range(Vector512<float> left, Vector512<float> right, [ConstantExpected(Max = (byte)(0x0F))] byte control) => Range(left, right, control); 662public static Vector512<double> Range(Vector512<double> left, Vector512<double> right, [ConstantExpected(Max = (byte)(0x0F))] byte control) => Range(left, right, control); 679public static Vector512<float> Reduce(Vector512<float> value, [ConstantExpected] byte control) => Reduce(value, control); 684public static Vector512<double> Reduce(Vector512<double> value, [ConstantExpected] byte control) => Reduce(value, control); 713public static Vector512<float> Xor(Vector512<float> left, Vector512<float> right) => Xor(left, right); 718public static Vector512<double> Xor(Vector512<double> left, Vector512<double> right) => Xor(left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx512F.cs (1180)
2408public static Vector512<uint> Abs(Vector512<int> value) => Abs(value); 2413public static Vector512<ulong> Abs(Vector512<long> value) => Abs(value); 2419public static Vector512<int> Add(Vector512<int> left, Vector512<int> right) => Add(left, right); 2424public static Vector512<uint> Add(Vector512<uint> left, Vector512<uint> right) => Add(left, right); 2429public static Vector512<long> Add(Vector512<long> left, Vector512<long> right) => Add(left, right); 2434public static Vector512<ulong> Add(Vector512<ulong> left, Vector512<ulong> right) => Add(left, right); 2439public static Vector512<double> Add(Vector512<double> left, Vector512<double> right) => Add(left, right); 2444public static Vector512<double> Add(Vector512<double> left, Vector512<double> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Add(left, right, mode); 2449public static Vector512<float> Add(Vector512<float> left, Vector512<float> right) => Add(left, right); 2454public static Vector512<float> Add(Vector512<float> left, Vector512<float> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Add(left, right, mode); 2469public static Vector512<int> AlignRight32(Vector512<int> left, Vector512<int> right, [ConstantExpected] byte mask) => AlignRight32(left, right, mask); 2474public static Vector512<uint> AlignRight32(Vector512<uint> left, Vector512<uint> right, [ConstantExpected] byte mask) => AlignRight32(left, right, mask); 2480public static Vector512<long> AlignRight64(Vector512<long> left, Vector512<long> right, [ConstantExpected] byte mask) => AlignRight64(left, right, mask); 2485public static Vector512<ulong> AlignRight64(Vector512<ulong> left, Vector512<ulong> right, [ConstantExpected] byte mask) => AlignRight64(left, right, mask); 2491public static Vector512<byte> And(Vector512<byte> left, Vector512<byte> right) => And(left, right); 2496public static Vector512<sbyte> And(Vector512<sbyte> left, Vector512<sbyte> right) => And(left, right); 2501public static Vector512<short> And(Vector512<short> left, Vector512<short> right) => And(left, right); 2506public static Vector512<ushort> And(Vector512<ushort> left, Vector512<ushort> right) => And(left, right); 2511public static Vector512<int> And(Vector512<int> left, Vector512<int> right) => And(left, right); 2516public static Vector512<uint> And(Vector512<uint> left, Vector512<uint> right) => And(left, right); 2521public static Vector512<long> And(Vector512<long> left, Vector512<long> right) => And(left, right); 2526public static Vector512<ulong> And(Vector512<ulong> left, Vector512<ulong> right) => And(left, right); 2532public static Vector512<byte> AndNot(Vector512<byte> left, Vector512<byte> right) => AndNot(left, right); 2537public static Vector512<sbyte> AndNot(Vector512<sbyte> left, Vector512<sbyte> right) => AndNot(left, right); 2542public static Vector512<short> AndNot(Vector512<short> left, Vector512<short> right) => AndNot(left, right); 2547public static Vector512<ushort> AndNot(Vector512<ushort> left, Vector512<ushort> right) => AndNot(left, right); 2552public static Vector512<int> AndNot(Vector512<int> left, Vector512<int> right) => AndNot(left, right); 2557public static Vector512<uint> AndNot(Vector512<uint> left, Vector512<uint> right) => AndNot(left, right); 2562public static Vector512<long> AndNot(Vector512<long> left, Vector512<long> right) => AndNot(left, right); 2567public static Vector512<ulong> AndNot(Vector512<ulong> left, Vector512<ulong> right) => AndNot(left, right); 2573public static Vector512<double> BlendVariable(Vector512<double> left, Vector512<double> right, Vector512<double> mask) => BlendVariable(left, right, mask); 2578public static Vector512<int> BlendVariable(Vector512<int> left, Vector512<int> right, Vector512<int> mask) => BlendVariable(left, right, mask); 2583public static Vector512<long> BlendVariable(Vector512<long> left, Vector512<long> right, Vector512<long> mask) => BlendVariable(left, right, mask); 2588public static Vector512<float> BlendVariable(Vector512<float> left, Vector512<float> right, Vector512<float> mask) => BlendVariable(left, right, mask); 2593public static Vector512<uint> BlendVariable(Vector512<uint> left, Vector512<uint> right, Vector512<uint> mask) => BlendVariable(left, right, mask); 2598public static Vector512<ulong> BlendVariable(Vector512<ulong> left, Vector512<ulong> right, Vector512<ulong> mask) => BlendVariable(left, right, mask); 2604public static Vector512<int> BroadcastScalarToVector512(Vector128<int> value) => BroadcastScalarToVector512(value); 2609public static Vector512<uint> BroadcastScalarToVector512(Vector128<uint> value) => BroadcastScalarToVector512(value); 2614public static Vector512<long> BroadcastScalarToVector512(Vector128<long> value) => BroadcastScalarToVector512(value); 2619public static Vector512<ulong> BroadcastScalarToVector512(Vector128<ulong> value) => BroadcastScalarToVector512(value); 2624public static Vector512<float> BroadcastScalarToVector512(Vector128<float> value) => BroadcastScalarToVector512(value); 2629public static Vector512<double> BroadcastScalarToVector512(Vector128<double> value) => BroadcastScalarToVector512(value); 2635public static unsafe Vector512<int> BroadcastVector128ToVector512(int* address) => BroadcastVector128ToVector512(address); 2641public static unsafe Vector512<uint> BroadcastVector128ToVector512(uint* address) => BroadcastVector128ToVector512(address); 2647public static unsafe Vector512<float> BroadcastVector128ToVector512(float* address) => BroadcastVector128ToVector512(address); 2653public static unsafe Vector512<long> BroadcastVector256ToVector512(long* address) => BroadcastVector256ToVector512(address); 2659public static unsafe Vector512<ulong> BroadcastVector256ToVector512(ulong* address) => BroadcastVector256ToVector512(address); 2665public static unsafe Vector512<double> BroadcastVector256ToVector512(double* address) => BroadcastVector256ToVector512(address); 2671public static Vector512<double> Compare(Vector512<double> left, Vector512<double> right, [ConstantExpected(Max = FloatComparisonMode.UnorderedTrueSignaling)] FloatComparisonMode mode) => Compare(left, right, mode); 2677public static Vector512<double> CompareEqual(Vector512<double> left, Vector512<double> right) => CompareEqual(left, right); 2683public static Vector512<double> CompareGreaterThan(Vector512<double> left, Vector512<double> right) => CompareGreaterThan(left, right); 2689public static Vector512<double> CompareGreaterThanOrEqual(Vector512<double> left, Vector512<double> right) => CompareGreaterThanOrEqual(left, right); 2695public static Vector512<double> CompareLessThan(Vector512<double> left, Vector512<double> right) => CompareLessThan(left, right); 2701public static Vector512<double> CompareLessThanOrEqual(Vector512<double> left, Vector512<double> right) => CompareLessThanOrEqual(left, right); 2707public static Vector512<double> CompareNotEqual(Vector512<double> left, Vector512<double> right) => CompareNotEqual(left, right); 2713public static Vector512<double> CompareNotGreaterThan(Vector512<double> left, Vector512<double> right) => CompareNotGreaterThan(left, right); 2719public static Vector512<double> CompareNotGreaterThanOrEqual(Vector512<double> left, Vector512<double> right) => CompareNotGreaterThanOrEqual(left, right); 2725public static Vector512<double> CompareNotLessThan(Vector512<double> left, Vector512<double> right) => CompareNotLessThan(left, right); 2731public static Vector512<double> CompareNotLessThanOrEqual(Vector512<double> left, Vector512<double> right) => CompareNotLessThanOrEqual(left, right); 2737public static Vector512<double> CompareOrdered(Vector512<double> left, Vector512<double> right) => CompareOrdered(left, right); 2743public static Vector512<double> CompareUnordered(Vector512<double> left, Vector512<double> right) => CompareUnordered(left, right); 2749public static Vector512<float> Compare(Vector512<float> left, Vector512<float> right, [ConstantExpected(Max = FloatComparisonMode.UnorderedTrueSignaling)] FloatComparisonMode mode) => Compare(left, right, mode); 2755public static Vector512<float> CompareEqual(Vector512<float> left, Vector512<float> right) => CompareEqual(left, right); 2761public static Vector512<float> CompareGreaterThan(Vector512<float> left, Vector512<float> right) => CompareGreaterThan(left, right); 2767public static Vector512<float> CompareGreaterThanOrEqual(Vector512<float> left, Vector512<float> right) => CompareGreaterThanOrEqual(left, right); 2773public static Vector512<float> CompareLessThan(Vector512<float> left, Vector512<float> right) => CompareLessThan(left, right); 2779public static Vector512<float> CompareLessThanOrEqual(Vector512<float> left, Vector512<float> right) => CompareLessThanOrEqual(left, right); 2785public static Vector512<float> CompareNotEqual(Vector512<float> left, Vector512<float> right) => CompareNotEqual(left, right); 2791public static Vector512<float> CompareNotGreaterThan(Vector512<float> left, Vector512<float> right) => CompareNotGreaterThan(left, right); 2797public static Vector512<float> CompareNotGreaterThanOrEqual(Vector512<float> left, Vector512<float> right) => CompareNotGreaterThanOrEqual(left, right); 2803public static Vector512<float> CompareNotLessThan(Vector512<float> left, Vector512<float> right) => CompareNotLessThan(left, right); 2809public static Vector512<float> CompareNotLessThanOrEqual(Vector512<float> left, Vector512<float> right) => CompareNotLessThanOrEqual(left, right); 2815public static Vector512<float> CompareOrdered(Vector512<float> left, Vector512<float> right) => CompareOrdered(left, right); 2821public static Vector512<float> CompareUnordered(Vector512<float> left, Vector512<float> right) => CompareUnordered(left, right); 2827public static Vector512<int> CompareEqual(Vector512<int> left, Vector512<int> right) => CompareEqual(left, right); 2832public static Vector512<int> CompareGreaterThan(Vector512<int> left, Vector512<int> right) => CompareGreaterThan(left, right); 2837public static Vector512<int> CompareGreaterThanOrEqual(Vector512<int> left, Vector512<int> right) => CompareGreaterThanOrEqual(left, right); 2842public static Vector512<int> CompareLessThan(Vector512<int> left, Vector512<int> right) => CompareLessThan(left, right); 2847public static Vector512<int> CompareLessThanOrEqual(Vector512<int> left, Vector512<int> right) => CompareLessThanOrEqual(left, right); 2852public static Vector512<int> CompareNotEqual(Vector512<int> left, Vector512<int> right) => CompareNotEqual(left, right); 2858public static Vector512<long> CompareEqual(Vector512<long> left, Vector512<long> right) => CompareEqual(left, right); 2863public static Vector512<long> CompareGreaterThan(Vector512<long> left, Vector512<long> right) => CompareGreaterThan(left, right); 2868public static Vector512<long> CompareGreaterThanOrEqual(Vector512<long> left, Vector512<long> right) => CompareGreaterThanOrEqual(left, right); 2873public static Vector512<long> CompareLessThan(Vector512<long> left, Vector512<long> right) => CompareLessThan(left, right); 2878public static Vector512<long> CompareLessThanOrEqual(Vector512<long> left, Vector512<long> right) => CompareLessThanOrEqual(left, right); 2883public static Vector512<long> CompareNotEqual(Vector512<long> left, Vector512<long> right) => CompareNotEqual(left, right); 2889public static Vector512<uint> CompareEqual(Vector512<uint> left, Vector512<uint> right) => CompareEqual(left, right); 2894public static Vector512<uint> CompareGreaterThan(Vector512<uint> left, Vector512<uint> right) => CompareGreaterThan(left, right); 2899public static Vector512<uint> CompareGreaterThanOrEqual(Vector512<uint> left, Vector512<uint> right) => CompareGreaterThanOrEqual(left, right); 2904public static Vector512<uint> CompareLessThan(Vector512<uint> left, Vector512<uint> right) => CompareLessThan(left, right); 2909public static Vector512<uint> CompareLessThanOrEqual(Vector512<uint> left, Vector512<uint> right) => CompareLessThanOrEqual(left, right); 2914public static Vector512<uint> CompareNotEqual(Vector512<uint> left, Vector512<uint> right) => CompareNotEqual(left, right); 2920public static Vector512<ulong> CompareEqual(Vector512<ulong> left, Vector512<ulong> right) => CompareEqual(left, right); 2925public static Vector512<ulong> CompareGreaterThan(Vector512<ulong> left, Vector512<ulong> right) => CompareGreaterThan(left, right); 2930public static Vector512<ulong> CompareGreaterThanOrEqual(Vector512<ulong> left, Vector512<ulong> right) => CompareGreaterThanOrEqual(left, right); 2935public static Vector512<ulong> CompareLessThan(Vector512<ulong> left, Vector512<ulong> right) => CompareLessThan(left, right); 2940public static Vector512<ulong> CompareLessThanOrEqual(Vector512<ulong> left, Vector512<ulong> right) => CompareLessThanOrEqual(left, right); 2945public static Vector512<ulong> CompareNotEqual(Vector512<ulong> left, Vector512<ulong> right) => CompareNotEqual(left, right); 2951public static Vector512<double> Compress(Vector512<double> merge, Vector512<double> mask, Vector512<double> value) => Compress(merge, mask, value); 2956public static Vector512<int> Compress(Vector512<int> merge, Vector512<int> mask, Vector512<int> value) => Compress(merge, mask, value); 2961public static Vector512<long> Compress(Vector512<long> merge, Vector512<long> mask, Vector512<long> value) => Compress(merge, mask, value); 2966public static Vector512<float> Compress(Vector512<float> merge, Vector512<float> mask, Vector512<float> value) => Compress(merge, mask, value); 2971public static Vector512<uint> Compress(Vector512<uint> merge, Vector512<uint> mask, Vector512<uint> value) => Compress(merge, mask, value); 2976public static Vector512<ulong> Compress(Vector512<ulong> merge, Vector512<ulong> mask, Vector512<ulong> value) => Compress(merge, mask, value); 2982public static unsafe void CompressStore(double* address, Vector512<double> mask, Vector512<double> source) => CompressStore(address, mask, source); 2988public static unsafe void CompressStore(int* address, Vector512<int> mask, Vector512<int> source) => CompressStore(address, mask, source); 2994public static unsafe void CompressStore(long* address, Vector512<long> mask, Vector512<long> source) => CompressStore(address, mask, source); 3000public static unsafe void CompressStore(float* address, Vector512<float> mask, Vector512<float> source) => CompressStore(address, mask, source); 3006public static unsafe void CompressStore(uint* address, Vector512<uint> mask, Vector512<uint> source) => CompressStore(address, mask, source); 3012public static unsafe void CompressStore(ulong* address, Vector512<ulong> mask, Vector512<ulong> source) => CompressStore(address, mask, source); 3085public static Vector128<byte> ConvertToVector128Byte(Vector512<int> value) => ConvertToVector128Byte(value); 3090public static Vector128<byte> ConvertToVector128Byte(Vector512<long> value) => ConvertToVector128Byte(value); 3095public static Vector128<byte> ConvertToVector128Byte(Vector512<uint> value) => ConvertToVector128Byte(value); 3100public static Vector128<byte> ConvertToVector128Byte(Vector512<ulong> value) => ConvertToVector128Byte(value); 3105public static Vector128<byte> ConvertToVector128ByteWithSaturation(Vector512<uint> value) => ConvertToVector128ByteWithSaturation(value); 3110public static Vector128<byte> ConvertToVector128ByteWithSaturation(Vector512<ulong> value) => ConvertToVector128ByteWithSaturation(value); 3116public static Vector128<short> ConvertToVector128Int16(Vector512<long> value) => ConvertToVector128Int16(value); 3121public static Vector128<short> ConvertToVector128Int16(Vector512<ulong> value) => ConvertToVector128Int16(value); 3126public static Vector128<short> ConvertToVector128Int16WithSaturation(Vector512<long> value) => ConvertToVector128Int16WithSaturation(value); 3132public static Vector128<sbyte> ConvertToVector128SByte(Vector512<int> value) => ConvertToVector128SByte(value); 3137public static Vector128<sbyte> ConvertToVector128SByte(Vector512<long> value) => ConvertToVector128SByte(value); 3142public static Vector128<sbyte> ConvertToVector128SByte(Vector512<uint> value) => ConvertToVector128SByte(value); 3147public static Vector128<sbyte> ConvertToVector128SByte(Vector512<ulong> value) => ConvertToVector128SByte(value); 3152public static Vector128<sbyte> ConvertToVector128SByteWithSaturation(Vector512<int> value) => ConvertToVector128SByteWithSaturation(value); 3157public static Vector128<sbyte> ConvertToVector128SByteWithSaturation(Vector512<long> value) => ConvertToVector128SByteWithSaturation(value); 3163public static Vector128<ushort> ConvertToVector128UInt16(Vector512<long> value) => ConvertToVector128UInt16(value); 3168public static Vector128<ushort> ConvertToVector128UInt16(Vector512<ulong> value) => ConvertToVector128UInt16(value); 3173public static Vector128<ushort> ConvertToVector128UInt16WithSaturation(Vector512<ulong> value) => ConvertToVector128UInt16WithSaturation(value); 3179public static Vector256<short> ConvertToVector256Int16(Vector512<int> value) => ConvertToVector256Int16(value); 3184public static Vector256<short> ConvertToVector256Int16(Vector512<uint> value) => ConvertToVector256Int16(value); 3189public static Vector256<short> ConvertToVector256Int16WithSaturation(Vector512<int> value) => ConvertToVector256Int16WithSaturation(value); 3195public static Vector256<int> ConvertToVector256Int32(Vector512<double> value) => ConvertToVector256Int32(value); 3200public static Vector256<int> ConvertToVector256Int32(Vector512<double> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector256Int32(value, mode); 3205public static Vector256<int> ConvertToVector256Int32(Vector512<long> value) => ConvertToVector256Int32(value); 3210public static Vector256<int> ConvertToVector256Int32(Vector512<ulong> value) => ConvertToVector256Int32(value); 3215public static Vector256<int> ConvertToVector256Int32WithSaturation(Vector512<long> value) => ConvertToVector256Int32WithSaturation(value); 3220public static Vector256<int> ConvertToVector256Int32WithTruncation(Vector512<double> value) => ConvertToVector256Int32WithTruncation(value); 3227public static Vector256<float> ConvertToVector256Single(Vector512<double> value) => ConvertToVector256Single(value); 3232public static Vector256<float> ConvertToVector256Single(Vector512<double> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector256Single(value, mode); 3238public static Vector256<ushort> ConvertToVector256UInt16(Vector512<int> value) => ConvertToVector256UInt16(value); 3243public static Vector256<ushort> ConvertToVector256UInt16(Vector512<uint> value) => ConvertToVector256UInt16(value); 3248public static Vector256<ushort> ConvertToVector256UInt16WithSaturation(Vector512<uint> value) => ConvertToVector256UInt16WithSaturation(value); 3254public static Vector256<uint> ConvertToVector256UInt32(Vector512<double> value) => ConvertToVector256UInt32(value); 3259public static Vector256<uint> ConvertToVector256UInt32(Vector512<double> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector256UInt32(value, mode); 3264public static Vector256<uint> ConvertToVector256UInt32(Vector512<long> value) => ConvertToVector256UInt32(value); 3269public static Vector256<uint> ConvertToVector256UInt32(Vector512<ulong> value) => ConvertToVector256UInt32(value); 3274public static Vector256<uint> ConvertToVector256UInt32WithSaturation(Vector512<ulong> value) => ConvertToVector256UInt32WithSaturation(value); 3279public static Vector256<uint> ConvertToVector256UInt32WithTruncation(Vector512<double> value) => ConvertToVector256UInt32WithTruncation(value); 3285public static Vector512<double> ConvertToVector512Double(Vector256<int> value) => ConvertToVector512Double(value); 3290public static Vector512<double> ConvertToVector512Double(Vector256<float> value) => ConvertToVector512Double(value); 3295public static Vector512<double> ConvertToVector512Double(Vector256<uint> value) => ConvertToVector512Double(value); 3300public static Vector512<int> ConvertToVector512Int32(Vector128<sbyte> value) => ConvertToVector512Int32(value); 3305public static Vector512<int> ConvertToVector512Int32(Vector128<byte> value) => ConvertToVector512Int32(value); 3310public static Vector512<int> ConvertToVector512Int32(Vector256<short> value) => ConvertToVector512Int32(value); 3315public static Vector512<int> ConvertToVector512Int32(Vector256<ushort> value) => ConvertToVector512Int32(value); 3320public static Vector512<int> ConvertToVector512Int32(Vector512<float> value) => ConvertToVector512Int32(value); 3325public static Vector512<int> ConvertToVector512Int32(Vector512<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Int32(value, mode); 3330public static Vector512<int> ConvertToVector512Int32WithTruncation(Vector512<float> value) => ConvertToVector512Int32WithTruncation(value); 3335public static Vector512<long> ConvertToVector512Int64(Vector128<sbyte> value) => ConvertToVector512Int64(value); 3340public static Vector512<long> ConvertToVector512Int64(Vector128<byte> value) => ConvertToVector512Int64(value); 3345public static Vector512<long> ConvertToVector512Int64(Vector128<short> value) => ConvertToVector512Int64(value); 3350public static Vector512<long> ConvertToVector512Int64(Vector128<ushort> value) => ConvertToVector512Int64(value); 3355public static Vector512<long> ConvertToVector512Int64(Vector256<int> value) => ConvertToVector512Int64(value); 3360public static Vector512<long> ConvertToVector512Int64(Vector256<uint> value) => ConvertToVector512Int64(value); 3365public static Vector512<float> ConvertToVector512Single(Vector512<int> value) => ConvertToVector512Single(value); 3370public static Vector512<float> ConvertToVector512Single(Vector512<int> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Single(value, mode); 3375public static Vector512<float> ConvertToVector512Single(Vector512<uint> value) => ConvertToVector512Single(value); 3380public static Vector512<float> ConvertToVector512Single(Vector512<uint> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512Single(value, mode); 3385public static Vector512<uint> ConvertToVector512UInt32(Vector128<sbyte> value) => ConvertToVector512UInt32(value); 3390public static Vector512<uint> ConvertToVector512UInt32(Vector128<byte> value) => ConvertToVector512UInt32(value); 3395public static Vector512<uint> ConvertToVector512UInt32(Vector256<short> value) => ConvertToVector512UInt32(value); 3400public static Vector512<uint> ConvertToVector512UInt32(Vector256<ushort> value) => ConvertToVector512UInt32(value); 3405public static Vector512<uint> ConvertToVector512UInt32(Vector512<float> value) => ConvertToVector512UInt32(value); 3410public static Vector512<uint> ConvertToVector512UInt32(Vector512<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => ConvertToVector512UInt32(value, mode); 3415public static Vector512<uint> ConvertToVector512UInt32WithTruncation(Vector512<float> value) => ConvertToVector512UInt32WithTruncation(value); 3420public static Vector512<ulong> ConvertToVector512UInt64(Vector128<sbyte> value) => ConvertToVector512UInt64(value); 3425public static Vector512<ulong> ConvertToVector512UInt64(Vector128<byte> value) => ConvertToVector512UInt64(value); 3430public static Vector512<ulong> ConvertToVector512UInt64(Vector128<short> value) => ConvertToVector512UInt64(value); 3435public static Vector512<ulong> ConvertToVector512UInt64(Vector128<ushort> value) => ConvertToVector512UInt64(value); 3440public static Vector512<ulong> ConvertToVector512UInt64(Vector256<int> value) => ConvertToVector512UInt64(value); 3445public static Vector512<ulong> ConvertToVector512UInt64(Vector256<uint> value) => ConvertToVector512UInt64(value); 3451public static Vector512<float> Divide(Vector512<float> left, Vector512<float> right) => Divide(left, right); 3456public static Vector512<double> Divide(Vector512<double> left, Vector512<double> right) => Divide(left, right); 3461public static Vector512<float> Divide(Vector512<float> left, Vector512<float> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Divide(left, right, mode); 3466public static Vector512<double> Divide(Vector512<double> left, Vector512<double> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Divide(left, right, mode); 3481public static Vector512<float> DuplicateEvenIndexed(Vector512<float> value) => DuplicateEvenIndexed(value); 3486public static Vector512<double> DuplicateEvenIndexed(Vector512<double> value) => DuplicateEvenIndexed(value); 3491public static Vector512<float> DuplicateOddIndexed(Vector512<float> value) => DuplicateOddIndexed(value); 3497public static Vector512<double> Expand(Vector512<double> merge, Vector512<double> mask, Vector512<double> value) => Expand(merge, mask, value); 3502public static Vector512<int> Expand(Vector512<int> merge, Vector512<int> mask, Vector512<int> value) => Expand(merge, mask, value); 3507public static Vector512<long> Expand(Vector512<long> merge, Vector512<long> mask, Vector512<long> value) => Expand(merge, mask, value); 3512public static Vector512<float> Expand(Vector512<float> merge, Vector512<float> mask, Vector512<float> value) => Expand(merge, mask, value); 3517public static Vector512<uint> Expand(Vector512<uint> merge, Vector512<uint> mask, Vector512<uint> value) => Expand(merge, mask, value); 3522public static Vector512<ulong> Expand(Vector512<ulong> merge, Vector512<ulong> mask, Vector512<ulong> value) => Expand(merge, mask, value); 3529public static unsafe Vector512<double> ExpandLoad(double* address, Vector512<double> mask, Vector512<double> merge) => ExpandLoad(address, mask, merge); 3536public static unsafe Vector512<int> ExpandLoad(int* address, Vector512<int> mask, Vector512<int> merge) => ExpandLoad(address, mask, merge); 3543public static unsafe Vector512<long> ExpandLoad(long* address, Vector512<long> mask, Vector512<long> merge) => ExpandLoad(address, mask, merge); 3550public static unsafe Vector512<float> ExpandLoad(float* address, Vector512<float> mask, Vector512<float> merge) => ExpandLoad(address, mask, merge); 3557public static unsafe Vector512<uint> ExpandLoad(uint* address, Vector512<uint> mask, Vector512<uint> merge) => ExpandLoad(address, mask, merge); 3564public static unsafe Vector512<ulong> ExpandLoad(ulong* address, Vector512<ulong> mask, Vector512<ulong> merge) => ExpandLoad(address, mask, merge); 3570public static Vector128<sbyte> ExtractVector128(Vector512<sbyte> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3575public static Vector128<byte> ExtractVector128(Vector512<byte> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3580public static Vector128<short> ExtractVector128(Vector512<short> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3585public static Vector128<ushort> ExtractVector128(Vector512<ushort> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3590public static Vector128<int> ExtractVector128(Vector512<int> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3595public static Vector128<uint> ExtractVector128(Vector512<uint> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3600public static Vector128<long> ExtractVector128(Vector512<long> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3605public static Vector128<ulong> ExtractVector128(Vector512<ulong> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3610public static Vector128<float> ExtractVector128(Vector512<float> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3615public static Vector128<double> ExtractVector128(Vector512<double> value, [ConstantExpected] byte index) => ExtractVector128(value, index); 3621public static Vector256<sbyte> ExtractVector256(Vector512<sbyte> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3626public static Vector256<byte> ExtractVector256(Vector512<byte> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3631public static Vector256<short> ExtractVector256(Vector512<short> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3636public static Vector256<ushort> ExtractVector256(Vector512<ushort> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3641public static Vector256<int> ExtractVector256(Vector512<int> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3646public static Vector256<uint> ExtractVector256(Vector512<uint> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3651public static Vector256<long> ExtractVector256(Vector512<long> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3656public static Vector256<ulong> ExtractVector256(Vector512<ulong> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3661public static Vector256<float> ExtractVector256(Vector512<float> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3666public static Vector256<double> ExtractVector256(Vector512<double> value, [ConstantExpected] byte index) => ExtractVector256(value, index); 3672public static Vector512<float> Fixup(Vector512<float> left, Vector512<float> right, Vector512<int> table, [ConstantExpected] byte control) => Fixup(left, right, table, control); 3677public static Vector512<double> Fixup(Vector512<double> left, Vector512<double> right, Vector512<long> table, [ConstantExpected] byte control) => Fixup(left, right, table, control); 3694public static Vector512<float> FusedMultiplyAdd(Vector512<float> a, Vector512<float> b, Vector512<float> c) => FusedMultiplyAdd(a, b, c); 3699public static Vector512<float> FusedMultiplyAdd(Vector512<float> a, Vector512<float> b, Vector512<float> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplyAdd(a, b, c, mode); 3704public static Vector512<double> FusedMultiplyAdd(Vector512<double> a, Vector512<double> b, Vector512<double> c) => FusedMultiplyAdd(a, b, c); 3709public static Vector512<double> FusedMultiplyAdd(Vector512<double> a, Vector512<double> b, Vector512<double> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplyAdd(a, b, c, mode); 3725public static Vector512<float> FusedMultiplyAddSubtract(Vector512<float> a, Vector512<float> b, Vector512<float> c) => FusedMultiplyAddSubtract(a, b, c); 3730public static Vector512<float> FusedMultiplyAddSubtract(Vector512<float> a, Vector512<float> b, Vector512<float> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplyAddSubtract(a, b, c, mode); 3735public static Vector512<double> FusedMultiplyAddSubtract(Vector512<double> a, Vector512<double> b, Vector512<double> c) => FusedMultiplyAddSubtract(a, b, c); 3740public static Vector512<double> FusedMultiplyAddSubtract(Vector512<double> a, Vector512<double> b, Vector512<double> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplyAddSubtract(a, b, c, mode); 3746public static Vector512<float> FusedMultiplySubtract(Vector512<float> a, Vector512<float> b, Vector512<float> c) => FusedMultiplySubtract(a, b, c); 3751public static Vector512<float> FusedMultiplySubtract(Vector512<float> a, Vector512<float> b, Vector512<float> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplySubtract(a, b, c, mode); 3756public static Vector512<double> FusedMultiplySubtract(Vector512<double> a, Vector512<double> b, Vector512<double> c) => FusedMultiplySubtract(a, b, c); 3761public static Vector512<double> FusedMultiplySubtract(Vector512<double> a, Vector512<double> b, Vector512<double> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplySubtract(a, b, c, mode); 3777public static Vector512<float> FusedMultiplySubtractAdd(Vector512<float> a, Vector512<float> b, Vector512<float> c) => FusedMultiplySubtractAdd(a, b, c); 3782public static Vector512<float> FusedMultiplySubtractAdd(Vector512<float> a, Vector512<float> b, Vector512<float> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplySubtractAdd(a, b, c, mode); 3787public static Vector512<double> FusedMultiplySubtractAdd(Vector512<double> a, Vector512<double> b, Vector512<double> c) => FusedMultiplySubtractAdd(a, b, c); 3792public static Vector512<double> FusedMultiplySubtractAdd(Vector512<double> a, Vector512<double> b, Vector512<double> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplySubtractAdd(a, b, c, mode); 3798public static Vector512<float> FusedMultiplyAddNegated(Vector512<float> a, Vector512<float> b, Vector512<float> c) => FusedMultiplyAddNegated(a, b, c); 3803public static Vector512<float> FusedMultiplyAddNegated(Vector512<float> a, Vector512<float> b, Vector512<float> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplyAddNegated(a, b, c, mode); 3808public static Vector512<double> FusedMultiplyAddNegated(Vector512<double> a, Vector512<double> b, Vector512<double> c) => FusedMultiplyAddNegated(a, b, c); 3813public static Vector512<double> FusedMultiplyAddNegated(Vector512<double> a, Vector512<double> b, Vector512<double> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplyAddNegated(a, b, c, mode); 3829public static Vector512<float> FusedMultiplySubtractNegated(Vector512<float> a, Vector512<float> b, Vector512<float> c) => FusedMultiplySubtractNegated(a, b, c); 3834public static Vector512<float> FusedMultiplySubtractNegated(Vector512<float> a, Vector512<float> b, Vector512<float> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplySubtractNegated(a, b, c, mode); 3839public static Vector512<double> FusedMultiplySubtractNegated(Vector512<double> a, Vector512<double> b, Vector512<double> c) => FusedMultiplySubtractNegated(a, b, c); 3844public static Vector512<double> FusedMultiplySubtractNegated(Vector512<double> a, Vector512<double> b, Vector512<double> c, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => FusedMultiplySubtractNegated(a, b, c, mode); 3860public static Vector512<float> GetExponent(Vector512<float> value) => GetExponent(value); 3865public static Vector512<double> GetExponent(Vector512<double> value) => GetExponent(value); 3894public static Vector512<float> GetMantissa(Vector512<float> value, [ConstantExpected(Max = (byte)(0x0F))] byte control) => GetMantissa(value, control); 3899public static Vector512<double> GetMantissa(Vector512<double> value, [ConstantExpected(Max = (byte)(0x0F))] byte control) => GetMantissa(value, control); 3928public static Vector512<sbyte> InsertVector128(Vector512<sbyte> value, Vector128<sbyte> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3933public static Vector512<byte> InsertVector128(Vector512<byte> value, Vector128<byte> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3938public static Vector512<short> InsertVector128(Vector512<short> value, Vector128<short> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3943public static Vector512<ushort> InsertVector128(Vector512<ushort> value, Vector128<ushort> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3948public static Vector512<int> InsertVector128(Vector512<int> value, Vector128<int> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3953public static Vector512<uint> InsertVector128(Vector512<uint> value, Vector128<uint> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3958public static Vector512<long> InsertVector128(Vector512<long> value, Vector128<long> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3963public static Vector512<ulong> InsertVector128(Vector512<ulong> value, Vector128<ulong> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3968public static Vector512<float> InsertVector128(Vector512<float> value, Vector128<float> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3973public static Vector512<double> InsertVector128(Vector512<double> value, Vector128<double> data, [ConstantExpected] byte index) => InsertVector128(value, data, index); 3979public static Vector512<sbyte> InsertVector256(Vector512<sbyte> value, Vector256<sbyte> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 3984public static Vector512<byte> InsertVector256(Vector512<byte> value, Vector256<byte> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 3989public static Vector512<short> InsertVector256(Vector512<short> value, Vector256<short> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 3994public static Vector512<ushort> InsertVector256(Vector512<ushort> value, Vector256<ushort> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 3999public static Vector512<int> InsertVector256(Vector512<int> value, Vector256<int> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4004public static Vector512<uint> InsertVector256(Vector512<uint> value, Vector256<uint> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4009public static Vector512<long> InsertVector256(Vector512<long> value, Vector256<long> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4014public static Vector512<ulong> InsertVector256(Vector512<ulong> value, Vector256<ulong> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4019public static Vector512<float> InsertVector256(Vector512<float> value, Vector256<float> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4024public static Vector512<double> InsertVector256(Vector512<double> value, Vector256<double> data, [ConstantExpected] byte index) => InsertVector256(value, data, index); 4030public static unsafe Vector512<byte> LoadAlignedVector512(byte* address) => LoadAlignedVector512(address); 4036public static unsafe Vector512<sbyte> LoadAlignedVector512(sbyte* address) => LoadAlignedVector512(address); 4042public static unsafe Vector512<short> LoadAlignedVector512(short* address) => LoadAlignedVector512(address); 4048public static unsafe Vector512<ushort> LoadAlignedVector512(ushort* address) => LoadAlignedVector512(address); 4054public static unsafe Vector512<int> LoadAlignedVector512(int* address) => LoadAlignedVector512(address); 4060public static unsafe Vector512<uint> LoadAlignedVector512(uint* address) => LoadAlignedVector512(address); 4066public static unsafe Vector512<long> LoadAlignedVector512(long* address) => LoadAlignedVector512(address); 4072public static unsafe Vector512<ulong> LoadAlignedVector512(ulong* address) => LoadAlignedVector512(address); 4078public static unsafe Vector512<float> LoadAlignedVector512(float* address) => LoadAlignedVector512(address); 4084public static unsafe Vector512<double> LoadAlignedVector512(double* address) => LoadAlignedVector512(address); 4090public static unsafe Vector512<sbyte> LoadAlignedVector512NonTemporal(sbyte* address) => LoadAlignedVector512NonTemporal(address); 4096public static unsafe Vector512<byte> LoadAlignedVector512NonTemporal(byte* address) => LoadAlignedVector512NonTemporal(address); 4102public static unsafe Vector512<short> LoadAlignedVector512NonTemporal(short* address) => LoadAlignedVector512NonTemporal(address); 4108public static unsafe Vector512<ushort> LoadAlignedVector512NonTemporal(ushort* address) => LoadAlignedVector512NonTemporal(address); 4114public static unsafe Vector512<int> LoadAlignedVector512NonTemporal(int* address) => LoadAlignedVector512NonTemporal(address); 4120public static unsafe Vector512<uint> LoadAlignedVector512NonTemporal(uint* address) => LoadAlignedVector512NonTemporal(address); 4126public static unsafe Vector512<long> LoadAlignedVector512NonTemporal(long* address) => LoadAlignedVector512NonTemporal(address); 4132public static unsafe Vector512<ulong> LoadAlignedVector512NonTemporal(ulong* address) => LoadAlignedVector512NonTemporal(address); 4138public static unsafe Vector512<sbyte> LoadVector512(sbyte* address) => LoadVector512(address); 4144public static unsafe Vector512<byte> LoadVector512(byte* address) => LoadVector512(address); 4150public static unsafe Vector512<short> LoadVector512(short* address) => LoadVector512(address); 4156public static unsafe Vector512<ushort> LoadVector512(ushort* address) => LoadVector512(address); 4162public static unsafe Vector512<int> LoadVector512(int* address) => LoadVector512(address); 4168public static unsafe Vector512<uint> LoadVector512(uint* address) => LoadVector512(address); 4174public static unsafe Vector512<long> LoadVector512(long* address) => LoadVector512(address); 4180public static unsafe Vector512<ulong> LoadVector512(ulong* address) => LoadVector512(address); 4186public static unsafe Vector512<float> LoadVector512(float* address) => LoadVector512(address); 4192public static unsafe Vector512<double> LoadVector512(double* address) => LoadVector512(address); 4199public static unsafe Vector512<double> MaskLoad(double* address, Vector512<double> mask, Vector512<double> merge) => MaskLoad(address, mask, merge); 4206public static unsafe Vector512<int> MaskLoad(int* address, Vector512<int> mask, Vector512<int> merge) => MaskLoad(address, mask, merge); 4213public static unsafe Vector512<long> MaskLoad(long* address, Vector512<long> mask, Vector512<long> merge) => MaskLoad(address, mask, merge); 4220public static unsafe Vector512<float> MaskLoad(float* address, Vector512<float> mask, Vector512<float> merge) => MaskLoad(address, mask, merge); 4227public static unsafe Vector512<uint> MaskLoad(uint* address, Vector512<uint> mask, Vector512<uint> merge) => MaskLoad(address, mask, merge); 4234public static unsafe Vector512<ulong> MaskLoad(ulong* address, Vector512<ulong> mask, Vector512<ulong> merge) => MaskLoad(address, mask, merge); 4241public static unsafe Vector512<double> MaskLoadAligned(double* address, Vector512<double> mask, Vector512<double> merge) => MaskLoadAligned(address, mask, merge); 4248public static unsafe Vector512<int> MaskLoadAligned(int* address, Vector512<int> mask, Vector512<int> merge) => MaskLoadAligned(address, mask, merge); 4255public static unsafe Vector512<long> MaskLoadAligned(long* address, Vector512<long> mask, Vector512<long> merge) => MaskLoadAligned(address, mask, merge); 4262public static unsafe Vector512<float> MaskLoadAligned(float* address, Vector512<float> mask, Vector512<float> merge) => MaskLoadAligned(address, mask, merge); 4269public static unsafe Vector512<uint> MaskLoadAligned(uint* address, Vector512<uint> mask, Vector512<uint> merge) => MaskLoadAligned(address, mask, merge); 4276public static unsafe Vector512<ulong> MaskLoadAligned(ulong* address, Vector512<ulong> mask, Vector512<ulong> merge) => MaskLoadAligned(address, mask, merge); 4282public static unsafe void MaskStore(double* address, Vector512<double> mask, Vector512<double> source) => MaskStore(address, mask, source); 4288public static unsafe void MaskStore(int* address, Vector512<int> mask, Vector512<int> source) => MaskStore(address, mask, source); 4294public static unsafe void MaskStore(long* address, Vector512<long> mask, Vector512<long> source) => MaskStore(address, mask, source); 4300public static unsafe void MaskStore(float* address, Vector512<float> mask, Vector512<float> source) => MaskStore(address, mask, source); 4306public static unsafe void MaskStore(uint* address, Vector512<uint> mask, Vector512<uint> source) => MaskStore(address, mask, source); 4312public static unsafe void MaskStore(ulong* address, Vector512<ulong> mask, Vector512<ulong> source) => MaskStore(address, mask, source); 4318public static unsafe void MaskStoreAligned(double* address, Vector512<double> mask, Vector512<double> source) => MaskStoreAligned(address, mask, source); 4324public static unsafe void MaskStoreAligned(int* address, Vector512<int> mask, Vector512<int> source) => MaskStoreAligned(address, mask, source); 4330public static unsafe void MaskStoreAligned(long* address, Vector512<long> mask, Vector512<long> source) => MaskStoreAligned(address, mask, source); 4336public static unsafe void MaskStoreAligned(float* address, Vector512<float> mask, Vector512<float> source) => MaskStoreAligned(address, mask, source); 4342public static unsafe void MaskStoreAligned(uint* address, Vector512<uint> mask, Vector512<uint> source) => MaskStoreAligned(address, mask, source); 4348public static unsafe void MaskStoreAligned(ulong* address, Vector512<ulong> mask, Vector512<ulong> source) => MaskStoreAligned(address, mask, source); 4354public static Vector512<int> Max(Vector512<int> left, Vector512<int> right) => Max(left, right); 4359public static Vector512<uint> Max(Vector512<uint> left, Vector512<uint> right) => Max(left, right); 4364public static Vector512<long> Max(Vector512<long> left, Vector512<long> right) => Max(left, right); 4369public static Vector512<ulong> Max(Vector512<ulong> left, Vector512<ulong> right) => Max(left, right); 4374public static Vector512<float> Max(Vector512<float> left, Vector512<float> right) => Max(left, right); 4379public static Vector512<double> Max(Vector512<double> left, Vector512<double> right) => Max(left, right); 4385public static Vector512<int> Min(Vector512<int> left, Vector512<int> right) => Min(left, right); 4390public static Vector512<uint> Min(Vector512<uint> left, Vector512<uint> right) => Min(left, right); 4395public static Vector512<long> Min(Vector512<long> left, Vector512<long> right) => Min(left, right); 4400public static Vector512<ulong> Min(Vector512<ulong> left, Vector512<ulong> right) => Min(left, right); 4405public static Vector512<float> Min(Vector512<float> left, Vector512<float> right) => Min(left, right); 4410public static Vector512<double> Min(Vector512<double> left, Vector512<double> right) => Min(left, right); 4438public static int MoveMask(Vector512<int> value) => MoveMask(value); 4443public static int MoveMask(Vector512<float> value) => MoveMask(value); 4448public static int MoveMask(Vector512<uint> value) => MoveMask(value); 4454public static Vector512<long> Multiply(Vector512<int> left, Vector512<int> right) => Multiply(left, right); 4459public static Vector512<ulong> Multiply(Vector512<uint> left, Vector512<uint> right) => Multiply(left, right); 4464public static Vector512<float> Multiply(Vector512<float> left, Vector512<float> right) => Multiply(left, right); 4469public static Vector512<double> Multiply(Vector512<double> left, Vector512<double> right) => Multiply(left, right); 4474public static Vector512<float> Multiply(Vector512<float> left, Vector512<float> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Multiply(left, right, mode); 4479public static Vector512<double> Multiply(Vector512<double> left, Vector512<double> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Multiply(left, right, mode); 4494public static Vector512<int> MultiplyLow(Vector512<int> left, Vector512<int> right) => MultiplyLow(left, right); 4499public static Vector512<uint> MultiplyLow(Vector512<uint> left, Vector512<uint> right) => MultiplyLow(left, right); 4505public static Vector512<byte> Or(Vector512<byte> left, Vector512<byte> right) => Or(left, right); 4510public static Vector512<sbyte> Or(Vector512<sbyte> left, Vector512<sbyte> right) => Or(left, right); 4515public static Vector512<short> Or(Vector512<short> left, Vector512<short> right) => Or(left, right); 4520public static Vector512<ushort> Or(Vector512<ushort> left, Vector512<ushort> right) => Or(left, right); 4525public static Vector512<int> Or(Vector512<int> left, Vector512<int> right) => Or(left, right); 4530public static Vector512<uint> Or(Vector512<uint> left, Vector512<uint> right) => Or(left, right); 4535public static Vector512<long> Or(Vector512<long> left, Vector512<long> right) => Or(left, right); 4540public static Vector512<ulong> Or(Vector512<ulong> left, Vector512<ulong> right) => Or(left, right); 4546public static Vector512<double> Permute2x64(Vector512<double> value, [ConstantExpected] byte control) => Permute2x64(value, control); 4552public static Vector512<float> Permute4x32(Vector512<float> value, [ConstantExpected] byte control) => Permute4x32(value, control); 4558public static Vector512<long> Permute4x64(Vector512<long> value, [ConstantExpected] byte control) => Permute4x64(value, control); 4563public static Vector512<ulong> Permute4x64(Vector512<ulong> value, [ConstantExpected] byte control) => Permute4x64(value, control); 4568public static Vector512<double> Permute4x64(Vector512<double> value, [ConstantExpected] byte control) => Permute4x64(value, control); 4574public static Vector512<double> PermuteVar2x64(Vector512<double> left, Vector512<long> control) => PermuteVar2x64(left, control); 4580public static Vector512<float> PermuteVar4x32(Vector512<float> left, Vector512<int> control) => PermuteVar4x32(left, control); 4587public static Vector512<long> PermuteVar8x64(Vector512<long> value, Vector512<long> control) => PermuteVar8x64(value, control); 4593public static Vector512<ulong> PermuteVar8x64(Vector512<ulong> value, Vector512<ulong> control) => PermuteVar8x64(value, control); 4599public static Vector512<double> PermuteVar8x64(Vector512<double> value, Vector512<long> control) => PermuteVar8x64(value, control); 4606public static Vector512<long> PermuteVar8x64x2(Vector512<long> lower, Vector512<long> indices, Vector512<long> upper) => PermuteVar8x64x2(lower, indices, upper); 4612public static Vector512<ulong> PermuteVar8x64x2(Vector512<ulong> lower, Vector512<ulong> indices, Vector512<ulong> upper) => PermuteVar8x64x2(lower, indices, upper); 4618public static Vector512<double> PermuteVar8x64x2(Vector512<double> lower, Vector512<long> indices, Vector512<double> upper) => PermuteVar8x64x2(lower, indices, upper); 4625public static Vector512<int> PermuteVar16x32(Vector512<int> left, Vector512<int> control) => PermuteVar16x32(left, control); 4631public static Vector512<uint> PermuteVar16x32(Vector512<uint> left, Vector512<uint> control) => PermuteVar16x32(left, control); 4637public static Vector512<float> PermuteVar16x32(Vector512<float> left, Vector512<int> control) => PermuteVar16x32(left, control); 4644public static Vector512<int> PermuteVar16x32x2(Vector512<int> lower, Vector512<int> indices, Vector512<int> upper) => PermuteVar16x32x2(lower, indices, upper); 4650public static Vector512<uint> PermuteVar16x32x2(Vector512<uint> lower, Vector512<uint> indices, Vector512<uint> upper) => PermuteVar16x32x2(lower, indices, upper); 4656public static Vector512<float> PermuteVar16x32x2(Vector512<float> lower, Vector512<int> indices, Vector512<float> upper) => PermuteVar16x32x2(lower, indices, upper); 4662public static Vector512<float> Reciprocal14(Vector512<float> value) => Reciprocal14(value); 4667public static Vector512<double> Reciprocal14(Vector512<double> value) => Reciprocal14(value); 4696public static Vector512<float> ReciprocalSqrt14(Vector512<float> value) => ReciprocalSqrt14(value); 4701public static Vector512<double> ReciprocalSqrt14(Vector512<double> value) => ReciprocalSqrt14(value); 4730public static Vector512<int> RotateLeft(Vector512<int> value, [ConstantExpected] byte count) => RotateLeft(value, count); 4735public static Vector512<uint> RotateLeft(Vector512<uint> value, [ConstantExpected] byte count) => RotateLeft(value, count); 4740public static Vector512<long> RotateLeft(Vector512<long> value, [ConstantExpected] byte count) => RotateLeft(value, count); 4745public static Vector512<ulong> RotateLeft(Vector512<ulong> value, [ConstantExpected] byte count) => RotateLeft(value, count); 4751public static Vector512<int> RotateLeftVariable(Vector512<int> value, Vector512<uint> count) => RotateLeftVariable(value, count); 4756public static Vector512<uint> RotateLeftVariable(Vector512<uint> value, Vector512<uint> count) => RotateLeftVariable(value, count); 4761public static Vector512<long> RotateLeftVariable(Vector512<long> value, Vector512<ulong> count) => RotateLeftVariable(value, count); 4766public static Vector512<ulong> RotateLeftVariable(Vector512<ulong> value, Vector512<ulong> count) => RotateLeftVariable(value, count); 4772public static Vector512<int> RotateRight(Vector512<int> value, [ConstantExpected] byte count) => RotateRight(value, count); 4777public static Vector512<uint> RotateRight(Vector512<uint> value, [ConstantExpected] byte count) => RotateRight(value, count); 4782public static Vector512<long> RotateRight(Vector512<long> value, [ConstantExpected] byte count) => RotateRight(value, count); 4787public static Vector512<ulong> RotateRight(Vector512<ulong> value, [ConstantExpected] byte count) => RotateRight(value, count); 4793public static Vector512<int> RotateRightVariable(Vector512<int> value, Vector512<uint> count) => RotateRightVariable(value, count); 4798public static Vector512<uint> RotateRightVariable(Vector512<uint> value, Vector512<uint> count) => RotateRightVariable(value, count); 4803public static Vector512<long> RotateRightVariable(Vector512<long> value, Vector512<ulong> count) => RotateRightVariable(value, count); 4808public static Vector512<ulong> RotateRightVariable(Vector512<ulong> value, Vector512<ulong> count) => RotateRightVariable(value, count); 4814public static Vector512<float> RoundScale(Vector512<float> value, [ConstantExpected] byte control) => RoundScale(value, control); 4819public static Vector512<double> RoundScale(Vector512<double> value, [ConstantExpected] byte control) => RoundScale(value, control); 4848public static Vector512<float> Scale(Vector512<float> left, Vector512<float> right) => Scale(left, right); 4853public static Vector512<double> Scale(Vector512<double> left, Vector512<double> right) => Scale(left, right); 4858public static Vector512<float> Scale(Vector512<float> left, Vector512<float> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Scale(left, right, mode); 4863public static Vector512<double> Scale(Vector512<double> left, Vector512<double> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Scale(left, right, mode); 4890public static Vector512<int> ShiftLeftLogical(Vector512<int> value, Vector128<int> count) => ShiftLeftLogical(value, count); 4895public static Vector512<uint> ShiftLeftLogical(Vector512<uint> value, Vector128<uint> count) => ShiftLeftLogical(value, count); 4900public static Vector512<long> ShiftLeftLogical(Vector512<long> value, Vector128<long> count) => ShiftLeftLogical(value, count); 4905public static Vector512<ulong> ShiftLeftLogical(Vector512<ulong> value, Vector128<ulong> count) => ShiftLeftLogical(value, count); 4911public static Vector512<int> ShiftLeftLogical(Vector512<int> value, [ConstantExpected] byte count) => ShiftLeftLogical(value, count); 4916public static Vector512<uint> ShiftLeftLogical(Vector512<uint> value, [ConstantExpected] byte count) => ShiftLeftLogical(value, count); 4921public static Vector512<long> ShiftLeftLogical(Vector512<long> value, [ConstantExpected] byte count) => ShiftLeftLogical(value, count); 4926public static Vector512<ulong> ShiftLeftLogical(Vector512<ulong> value, [ConstantExpected] byte count) => ShiftLeftLogical(value, count); 4932public static Vector512<int> ShiftLeftLogicalVariable(Vector512<int> value, Vector512<uint> count) => ShiftLeftLogicalVariable(value, count); 4937public static Vector512<uint> ShiftLeftLogicalVariable(Vector512<uint> value, Vector512<uint> count) => ShiftLeftLogicalVariable(value, count); 4942public static Vector512<long> ShiftLeftLogicalVariable(Vector512<long> value, Vector512<ulong> count) => ShiftLeftLogicalVariable(value, count); 4947public static Vector512<ulong> ShiftLeftLogicalVariable(Vector512<ulong> value, Vector512<ulong> count) => ShiftLeftLogicalVariable(value, count); 4953public static Vector512<int> ShiftRightArithmetic(Vector512<int> value, Vector128<int> count) => ShiftRightArithmetic(value, count); 4958public static Vector512<long> ShiftRightArithmetic(Vector512<long> value, Vector128<long> count) => ShiftRightArithmetic(value, count); 4964public static Vector512<int> ShiftRightArithmetic(Vector512<int> value, [ConstantExpected] byte count) => ShiftRightArithmetic(value, count); 4969public static Vector512<long> ShiftRightArithmetic(Vector512<long> value, [ConstantExpected] byte count) => ShiftRightArithmetic(value, count); 4975public static Vector512<int> ShiftRightArithmeticVariable(Vector512<int> value, Vector512<uint> count) => ShiftRightArithmeticVariable(value, count); 4980public static Vector512<long> ShiftRightArithmeticVariable(Vector512<long> value, Vector512<ulong> count) => ShiftRightArithmeticVariable(value, count); 4986public static Vector512<int> ShiftRightLogical(Vector512<int> value, Vector128<int> count) => ShiftRightLogical(value, count); 4991public static Vector512<uint> ShiftRightLogical(Vector512<uint> value, Vector128<uint> count) => ShiftRightLogical(value, count); 4996public static Vector512<long> ShiftRightLogical(Vector512<long> value, Vector128<long> count) => ShiftRightLogical(value, count); 5001public static Vector512<ulong> ShiftRightLogical(Vector512<ulong> value, Vector128<ulong> count) => ShiftRightLogical(value, count); 5007public static Vector512<int> ShiftRightLogical(Vector512<int> value, [ConstantExpected] byte count) => ShiftRightLogical(value, count); 5012public static Vector512<uint> ShiftRightLogical(Vector512<uint> value, [ConstantExpected] byte count) => ShiftRightLogical(value, count); 5017public static Vector512<long> ShiftRightLogical(Vector512<long> value, [ConstantExpected] byte count) => ShiftRightLogical(value, count); 5022public static Vector512<ulong> ShiftRightLogical(Vector512<ulong> value, [ConstantExpected] byte count) => ShiftRightLogical(value, count); 5028public static Vector512<int> ShiftRightLogicalVariable(Vector512<int> value, Vector512<uint> count) => ShiftRightLogicalVariable(value, count); 5033public static Vector512<uint> ShiftRightLogicalVariable(Vector512<uint> value, Vector512<uint> count) => ShiftRightLogicalVariable(value, count); 5038public static Vector512<long> ShiftRightLogicalVariable(Vector512<long> value, Vector512<ulong> count) => ShiftRightLogicalVariable(value, count); 5043public static Vector512<ulong> ShiftRightLogicalVariable(Vector512<ulong> value, Vector512<ulong> count) => ShiftRightLogicalVariable(value, count); 5049public static Vector512<int> Shuffle(Vector512<int> value, [ConstantExpected] byte control) => Shuffle(value, control); 5054public static Vector512<uint> Shuffle(Vector512<uint> value, [ConstantExpected] byte control) => Shuffle(value, control); 5059public static Vector512<float> Shuffle(Vector512<float> value, Vector512<float> right, [ConstantExpected] byte control) => Shuffle(value, right, control); 5064public static Vector512<double> Shuffle(Vector512<double> value, Vector512<double> right, [ConstantExpected] byte control) => Shuffle(value, right, control); 5070public static Vector512<double> Shuffle4x128(Vector512<double> left, Vector512<double> right, [ConstantExpected] byte control) => Shuffle4x128(left, right, control); 5075public static Vector512<int> Shuffle4x128(Vector512<int> left, Vector512<int> right, [ConstantExpected] byte control) => Shuffle4x128(left, right, control); 5080public static Vector512<long> Shuffle4x128(Vector512<long> left, Vector512<long> right, [ConstantExpected] byte control) => Shuffle4x128(left, right, control); 5085public static Vector512<float> Shuffle4x128(Vector512<float> left, Vector512<float> right, [ConstantExpected] byte control) => Shuffle4x128(left, right, control); 5090public static Vector512<uint> Shuffle4x128(Vector512<uint> left, Vector512<uint> right, [ConstantExpected] byte control) => Shuffle4x128(left, right, control); 5095public static Vector512<ulong> Shuffle4x128(Vector512<ulong> left, Vector512<ulong> right, [ConstantExpected] byte control) => Shuffle4x128(left, right, control); 5101public static Vector512<float> Sqrt(Vector512<float> value) => Sqrt(value); 5106public static Vector512<double> Sqrt(Vector512<double> value) => Sqrt(value); 5111public static Vector512<float> Sqrt(Vector512<float> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Sqrt(value, mode); 5116public static Vector512<double> Sqrt(Vector512<double> value, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Sqrt(value, mode); 5132public static unsafe void Store(sbyte* address, Vector512<sbyte> source) => Store(address, source); 5138public static unsafe void Store(byte* address, Vector512<byte> source) => Store(address, source); 5144public static unsafe void Store(short* address, Vector512<short> source) => Store(address, source); 5150public static unsafe void Store(ushort* address, Vector512<ushort> source) => Store(address, source); 5156public static unsafe void Store(int* address, Vector512<int> source) => Store(address, source); 5162public static unsafe void Store(uint* address, Vector512<uint> source) => Store(address, source); 5168public static unsafe void Store(long* address, Vector512<long> source) => Store(address, source); 5174public static unsafe void Store(ulong* address, Vector512<ulong> source) => Store(address, source); 5180public static unsafe void Store(float* address, Vector512<float> source) => Store(address, source); 5186public static unsafe void Store(double* address, Vector512<double> source) => Store(address, source); 5192public static unsafe void StoreAligned(byte* address, Vector512<byte> source) => StoreAligned(address, source); 5198public static unsafe void StoreAligned(sbyte* address, Vector512<sbyte> source) => StoreAligned(address, source); 5204public static unsafe void StoreAligned(short* address, Vector512<short> source) => StoreAligned(address, source); 5210public static unsafe void StoreAligned(ushort* address, Vector512<ushort> source) => StoreAligned(address, source); 5216public static unsafe void StoreAligned(int* address, Vector512<int> source) => StoreAligned(address, source); 5222public static unsafe void StoreAligned(uint* address, Vector512<uint> source) => StoreAligned(address, source); 5228public static unsafe void StoreAligned(long* address, Vector512<long> source) => StoreAligned(address, source); 5234public static unsafe void StoreAligned(ulong* address, Vector512<ulong> source) => StoreAligned(address, source); 5240public static unsafe void StoreAligned(float* address, Vector512<float> source) => StoreAligned(address, source); 5246public static unsafe void StoreAligned(double* address, Vector512<double> source) => StoreAligned(address, source); 5252public static unsafe void StoreAlignedNonTemporal(sbyte* address, Vector512<sbyte> source) => StoreAlignedNonTemporal(address, source); 5258public static unsafe void StoreAlignedNonTemporal(byte* address, Vector512<byte> source) => StoreAlignedNonTemporal(address, source); 5264public static unsafe void StoreAlignedNonTemporal(short* address, Vector512<short> source) => StoreAlignedNonTemporal(address, source); 5270public static unsafe void StoreAlignedNonTemporal(ushort* address, Vector512<ushort> source) => StoreAlignedNonTemporal(address, source); 5276public static unsafe void StoreAlignedNonTemporal(int* address, Vector512<int> source) => StoreAlignedNonTemporal(address, source); 5282public static unsafe void StoreAlignedNonTemporal(uint* address, Vector512<uint> source) => StoreAlignedNonTemporal(address, source); 5288public static unsafe void StoreAlignedNonTemporal(long* address, Vector512<long> source) => StoreAlignedNonTemporal(address, source); 5294public static unsafe void StoreAlignedNonTemporal(ulong* address, Vector512<ulong> source) => StoreAlignedNonTemporal(address, source); 5300public static unsafe void StoreAlignedNonTemporal(float* address, Vector512<float> source) => StoreAlignedNonTemporal(address, source); 5306public static unsafe void StoreAlignedNonTemporal(double* address, Vector512<double> source) => StoreAlignedNonTemporal(address, source); 5312public static Vector512<int> Subtract(Vector512<int> left, Vector512<int> right) => Subtract(left, right); 5317public static Vector512<uint> Subtract(Vector512<uint> left, Vector512<uint> right) => Subtract(left, right); 5322public static Vector512<long> Subtract(Vector512<long> left, Vector512<long> right) => Subtract(left, right); 5327public static Vector512<ulong> Subtract(Vector512<ulong> left, Vector512<ulong> right) => Subtract(left, right); 5332public static Vector512<float> Subtract(Vector512<float> left, Vector512<float> right) => Subtract(left, right); 5337public static Vector512<double> Subtract(Vector512<double> left, Vector512<double> right) => Subtract(left, right); 5342public static Vector512<float> Subtract(Vector512<float> left, Vector512<float> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Subtract(left, right, mode); 5347public static Vector512<double> Subtract(Vector512<double> left, Vector512<double> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => Subtract(left, right, mode); 5364public static Vector512<sbyte> TernaryLogic(Vector512<sbyte> a, Vector512<sbyte> b, Vector512<sbyte> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5370public static Vector512<byte> TernaryLogic(Vector512<byte> a, Vector512<byte> b, Vector512<byte> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5376public static Vector512<short> TernaryLogic(Vector512<short> a, Vector512<short> b, Vector512<short> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5382public static Vector512<ushort> TernaryLogic(Vector512<ushort> a, Vector512<ushort> b, Vector512<ushort> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5387public static Vector512<int> TernaryLogic(Vector512<int> a, Vector512<int> b, Vector512<int> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5392public static Vector512<uint> TernaryLogic(Vector512<uint> a, Vector512<uint> b, Vector512<uint> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5397public static Vector512<long> TernaryLogic(Vector512<long> a, Vector512<long> b, Vector512<long> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5402public static Vector512<ulong> TernaryLogic(Vector512<ulong> a, Vector512<ulong> b, Vector512<ulong> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5408public static Vector512<float> TernaryLogic(Vector512<float> a, Vector512<float> b, Vector512<float> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5414public static Vector512<double> TernaryLogic(Vector512<double> a, Vector512<double> b, Vector512<double> c, [ConstantExpected] byte control) => TernaryLogic(a, b, c, control); 5420public static Vector512<int> UnpackHigh(Vector512<int> left, Vector512<int> right) => UnpackHigh(left, right); 5425public static Vector512<uint> UnpackHigh(Vector512<uint> left, Vector512<uint> right) => UnpackHigh(left, right); 5430public static Vector512<long> UnpackHigh(Vector512<long> left, Vector512<long> right) => UnpackHigh(left, right); 5435public static Vector512<ulong> UnpackHigh(Vector512<ulong> left, Vector512<ulong> right) => UnpackHigh(left, right); 5440public static Vector512<float> UnpackHigh(Vector512<float> left, Vector512<float> right) => UnpackHigh(left, right); 5445public static Vector512<double> UnpackHigh(Vector512<double> left, Vector512<double> right) => UnpackHigh(left, right); 5451public static Vector512<int> UnpackLow(Vector512<int> left, Vector512<int> right) => UnpackLow(left, right); 5456public static Vector512<uint> UnpackLow(Vector512<uint> left, Vector512<uint> right) => UnpackLow(left, right); 5461public static Vector512<long> UnpackLow(Vector512<long> left, Vector512<long> right) => UnpackLow(left, right); 5466public static Vector512<ulong> UnpackLow(Vector512<ulong> left, Vector512<ulong> right) => UnpackLow(left, right); 5471public static Vector512<float> UnpackLow(Vector512<float> left, Vector512<float> right) => UnpackLow(left, right); 5476public static Vector512<double> UnpackLow(Vector512<double> left, Vector512<double> right) => UnpackLow(left, right); 5482public static Vector512<byte> Xor(Vector512<byte> left, Vector512<byte> right) => Xor(left, right); 5487public static Vector512<sbyte> Xor(Vector512<sbyte> left, Vector512<sbyte> right) => Xor(left, right); 5492public static Vector512<short> Xor(Vector512<short> left, Vector512<short> right) => Xor(left, right); 5497public static Vector512<ushort> Xor(Vector512<ushort> left, Vector512<ushort> right) => Xor(left, right); 5502public static Vector512<int> Xor(Vector512<int> left, Vector512<int> right) => Xor(left, right); 5507public static Vector512<uint> Xor(Vector512<uint> left, Vector512<uint> right) => Xor(left, right); 5512public static Vector512<long> Xor(Vector512<long> left, Vector512<long> right) => Xor(left, right); 5517public static Vector512<ulong> Xor(Vector512<ulong> left, Vector512<ulong> right) => Xor(left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx512Vbmi.cs (20)
125public static Vector512<byte> MultiShift(Vector512<byte> control, Vector512<ulong> value) => MultiShift(control, value); 130public static Vector512<sbyte> MultiShift(Vector512<sbyte> control, Vector512<long> value) => MultiShift(control, value); 137public static Vector512<sbyte> PermuteVar64x8(Vector512<sbyte> left, Vector512<sbyte> control) => PermuteVar64x8(left, control); 143public static Vector512<byte> PermuteVar64x8(Vector512<byte> left, Vector512<byte> control) => PermuteVar64x8(left, control); 150public static Vector512<byte> PermuteVar64x8x2(Vector512<byte> lower, Vector512<byte> indices, Vector512<byte> upper) => PermuteVar64x8x2(lower, indices, upper); 156public static Vector512<sbyte> PermuteVar64x8x2(Vector512<sbyte> lower, Vector512<sbyte> indices, Vector512<sbyte> upper) => PermuteVar64x8x2(lower, indices, upper);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx512Vbmi2.cs (52)
239public static Vector512<byte> Compress(Vector512<byte> merge, Vector512<byte> mask, Vector512<byte> value) => Compress(merge, mask, value); 244public static Vector512<short> Compress(Vector512<short> merge, Vector512<short> mask, Vector512<short> value) => Compress(merge, mask, value); 249public static Vector512<sbyte> Compress(Vector512<sbyte> merge, Vector512<sbyte> mask, Vector512<sbyte> value) => Compress(merge, mask, value); 254public static Vector512<ushort> Compress(Vector512<ushort> merge, Vector512<ushort> mask, Vector512<ushort> value) => Compress(merge, mask, value); 260public static unsafe void CompressStore(byte* address, Vector512<byte> mask, Vector512<byte> source) => CompressStore(address, mask, source); 266public static unsafe void CompressStore(short* address, Vector512<short> mask, Vector512<short> source) => CompressStore(address, mask, source); 272public static unsafe void CompressStore(sbyte* address, Vector512<sbyte> mask, Vector512<sbyte> source) => CompressStore(address, mask, source); 278public static unsafe void CompressStore(ushort* address, Vector512<ushort> mask, Vector512<ushort> source) => CompressStore(address, mask, source); 284public static Vector512<byte> Expand(Vector512<byte> merge, Vector512<byte> mask, Vector512<byte> value) => Expand(merge, mask, value); 289public static Vector512<short> Expand(Vector512<short> merge, Vector512<short> mask, Vector512<short> value) => Expand(merge, mask, value); 294public static Vector512<sbyte> Expand(Vector512<sbyte> merge, Vector512<sbyte> mask, Vector512<sbyte> value) => Expand(merge, mask, value); 299public static Vector512<ushort> Expand(Vector512<ushort> merge, Vector512<ushort> mask, Vector512<ushort> value) => Expand(merge, mask, value); 306public static unsafe Vector512<byte> ExpandLoad(byte* address, Vector512<byte> mask, Vector512<byte> merge) => ExpandLoad(address, mask, merge); 313public static unsafe Vector512<short> ExpandLoad(short* address, Vector512<short> mask, Vector512<short> merge) => ExpandLoad(address, mask, merge); 320public static unsafe Vector512<sbyte> ExpandLoad(sbyte* address, Vector512<sbyte> mask, Vector512<sbyte> merge) => ExpandLoad(address, mask, merge); 327public static unsafe Vector512<ushort> ExpandLoad(ushort* address, Vector512<ushort> mask, Vector512<ushort> merge) => ExpandLoad(address, mask, merge);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\AvxVnni.cs (16)
96public static Vector512<int> MultiplyWideningAndAdd(Vector512<int> addend, Vector512<byte> left, Vector512<sbyte> right) => MultiplyWideningAndAdd(addend, left, right); 103public static Vector512<int> MultiplyWideningAndAdd(Vector512<int> addend, Vector512<short> left, Vector512<short> right) => MultiplyWideningAndAdd(addend, left, right); 110public static Vector512<int> MultiplyWideningAndAddSaturate(Vector512<int> addend, Vector512<byte> left, Vector512<sbyte> right) => MultiplyWideningAndAddSaturate(addend, left, right); 117public static Vector512<int> MultiplyWideningAndAddSaturate(Vector512<int> addend, Vector512<short> left, Vector512<short> right) => MultiplyWideningAndAddSaturate(addend, left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\AvxVnniInt16.cs (24)
80public static Vector512<int> MultiplyWideningAndAdd(Vector512<int> addend, Vector512<short> left, Vector512<ushort> right) => MultiplyWideningAndAdd(addend, left, right); 83public static Vector512<int> MultiplyWideningAndAdd(Vector512<int> addend, Vector512<ushort> left, Vector512<short> right) => MultiplyWideningAndAdd(addend, left, right); 86public static Vector512<uint> MultiplyWideningAndAdd(Vector512<uint> addend, Vector512<ushort> left, Vector512<ushort> right) => MultiplyWideningAndAdd(addend, left, right); 89public static Vector512<int> MultiplyWideningAndAddSaturate(Vector512<int> addend, Vector512<short> left, Vector512<ushort> right) => MultiplyWideningAndAddSaturate(addend, left, right); 92public static Vector512<int> MultiplyWideningAndAddSaturate(Vector512<int> addend, Vector512<ushort> left, Vector512<short> right) => MultiplyWideningAndAddSaturate(addend, left, right); 95public static Vector512<uint> MultiplyWideningAndAddSaturate(Vector512<uint> addend, Vector512<ushort> left, Vector512<ushort> right) => MultiplyWideningAndAddSaturate(addend, left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\AvxVnniInt8.cs (24)
81public static Vector512<int> MultiplyWideningAndAdd(Vector512<int> addend, Vector512<sbyte> left, Vector512<sbyte> right) => MultiplyWideningAndAdd(addend, left, right); 84public static Vector512<int> MultiplyWideningAndAdd(Vector512<int> addend, Vector512<sbyte> left, Vector512<byte> right) => MultiplyWideningAndAdd(addend, left, right); 87public static Vector512<uint> MultiplyWideningAndAdd(Vector512<uint> addend, Vector512<byte> left, Vector512<byte> right) => MultiplyWideningAndAdd(addend, left, right); 90public static Vector512<int> MultiplyWideningAndAddSaturate(Vector512<int> addend, Vector512<sbyte> left, Vector512<sbyte> right) => MultiplyWideningAndAddSaturate(addend, left, right); 93public static Vector512<int> MultiplyWideningAndAddSaturate(Vector512<int> addend, Vector512<sbyte> left, Vector512<byte> right) => MultiplyWideningAndAddSaturate(addend, left, right); 96public static Vector512<uint> MultiplyWideningAndAddSaturate(Vector512<uint> addend, Vector512<byte> left, Vector512<byte> right) => MultiplyWideningAndAddSaturate(addend, left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Gfni.cs (9)
82public static Vector512<byte> GaloisFieldAffineTransformInverse(Vector512<byte> x, Vector512<byte> a, [ConstantExpected] byte b) => GaloisFieldAffineTransformInverse(x, a, b); 89public static Vector512<byte> GaloisFieldAffineTransform(Vector512<byte> x, Vector512<byte> a, [ConstantExpected] byte b) => GaloisFieldAffineTransform(x, a, b); 96public static Vector512<byte> GaloisFieldMultiply(Vector512<byte> left, Vector512<byte> right) => GaloisFieldMultiply(left, right);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Pclmulqdq.Wide.cs (6)
47public static Vector512<long> CarrylessMultiply(Vector512<long> left, Vector512<long> right, [ConstantExpected] byte control) => CarrylessMultiply(left, right, control); 52public static Vector512<ulong> CarrylessMultiply(Vector512<ulong> left, Vector512<ulong> right, [ConstantExpected] byte control) => CarrylessMultiply(left, right, control);
src\runtime\src\libraries\System.Private.CoreLib\src\System\SearchValues\ProbabilisticMap.cs (33)
114private static Vector512<byte> ContainsMask64CharsAvx512(Vector512<byte> charMap, ref char searchSpace0, ref char searchSpace1) 116Vector512<ushort> source0 = Vector512.LoadUnsafe(ref searchSpace0); 117Vector512<ushort> source1 = Vector512.LoadUnsafe(ref searchSpace1); 119Vector512<byte> sourceLower = Avx512Vbmi.PermuteVar64x8x2(source0.AsByte(), Vector512.CreateSequence<byte>(0, 2), source1.AsByte()); 120Vector512<byte> sourceUpper = Avx512Vbmi.PermuteVar64x8x2(source0.AsByte(), Vector512.CreateSequence<byte>(1, 2), source1.AsByte()); 122Vector512<byte> resultLower = IsCharBitNotSetAvx512(charMap, sourceLower); 123Vector512<byte> resultUpper = IsCharBitNotSetAvx512(charMap, sourceUpper); 130private static Vector512<byte> IsCharBitNotSetAvx512(Vector512<byte> charMap, Vector512<byte> values) 136Vector512<byte> shifted = (values.AsInt32() >>> VectorizedIndexShift).AsByte(); 138Vector512<byte> bitPositions = Avx512Vbmi.PermuteVar64x8(Vector512.Create(0x8040201008040201).AsByte(), shifted); 142Vector512<byte> bitMask = Avx512Vbmi.PermuteVar64x8(charMap, values); 144return Vector512.Equals(bitMask & bitPositions, Vector512<byte>.Zero); 438Vector512<byte> charMap512 = Vector512.Create(charMap256); 447Vector512<byte> result = ContainsMask64CharsAvx512(charMap512, ref cur, ref Unsafe.Add(ref cur, Vector512<ushort>.Count)); 449if (result != Vector512<byte>.Zero) 477Vector512<byte> result = ContainsMask64CharsAvx512(charMap512, ref searchSpace, ref Unsafe.Subtract(ref searchSpaceEnd, Vector512<ushort>.Count)); 479if (result != Vector512<byte>.Zero) 614Vector512<byte> charMap512 = Vector512.Create(charMap256); 626Vector512<byte> result = ContainsMask64CharsAvx512(charMap512, ref cur, ref Unsafe.Add(ref cur, Vector512<ushort>.Count)); 628if (result != Vector512<byte>.Zero) 655Vector512<byte> result = ContainsMask64CharsAvx512(charMap512, ref searchSpace, ref Unsafe.Subtract(ref cur, Vector512<ushort>.Count)); 657if (result != Vector512<byte>.Zero) 865if (index >= Vector512<ushort>.Count) 869index += searchSpaceLength - (2 * Vector512<ushort>.Count); 969if (index >= Vector512<ushort>.Count) 973index += searchSpaceLength - (2 * Vector512<ushort>.Count);
src\runtime\src\libraries\System.Private.CoreLib\src\System\SearchValues\Strings\AsciiStringSearchValuesTeddyBase.cs (23)
115private readonly Vector512<byte> 315Vector512<byte> n0Low = _n0Low, n0High = _n0High; 316Vector512<byte> n1Low = _n1Low, n1High = _n1High; 317Vector512<byte> prev0 = Vector512<byte>.AllBitsSet; 321Vector512<byte> input = TStartCaseSensitivity.TransformInput(LoadAndPack64AsciiChars(ref searchSpace)); 323(Vector512<byte> result, prev0) = ProcessInputN2(input, prev0, n0Low, n0High, n1Low, n1High); 325if (result != Vector512<byte>.Zero) 342prev0 = Vector512<byte>.AllBitsSet; 496Vector512<byte> n0Low = _n0Low, n0High = _n0High; 497Vector512<byte> n1Low = _n1Low, n1High = _n1High; 498Vector512<byte> n2Low = _n2Low, n2High = _n2High; 499Vector512<byte> prev0 = Vector512<byte>.AllBitsSet; 500Vector512<byte> prev1 = Vector512<byte>.AllBitsSet; 504Vector512<byte> input = TStartCaseSensitivity.TransformInput(LoadAndPack64AsciiChars(ref searchSpace)); 506(Vector512<byte> result, prev0, prev1) = ProcessInputN3(input, prev0, prev1, n0Low, n0High, n1Low, n1High, n2Low, n2High); 508if (result != Vector512<byte>.Zero) 525prev0 = Vector512<byte>.AllBitsSet; 526prev1 = Vector512<byte>.AllBitsSet; 633private bool TryFindMatch(ReadOnlySpan<char> span, ref char searchSpace, Vector512<byte> result, int matchStartOffset, out int offsetFromStart) 637ulong resultMask = (~Vector512.Equals(result, Vector512<byte>.Zero)).ExtractMostSignificantBits();
src\runtime\src\libraries\System.Private.CoreLib\src\System\SearchValues\Strings\Helpers\StringSearchValuesHelper.cs (14)
233static abstract Vector512<byte> TransformInput(Vector512<byte> input); 250public static Vector512<byte> TransformInput(Vector512<byte> input) => input; 317public static Vector512<byte> TransformInput(Vector512<byte> input) => input & Vector512.Create(unchecked((byte)~0x20)); 402public static Vector512<byte> TransformInput(Vector512<byte> input) 404Vector512<byte> subtraction = Vector512.Create((byte)(128 + 'a')); 405Vector512<byte> comparison = Vector512.Create((byte)(128 + 26)); 406Vector512<byte> caseConversion = Vector512.Create((byte)0x20); 408Vector512<byte> matches = Vector512.LessThan((input - subtraction).AsSByte(), comparison.AsSByte()).AsByte(); 450public static Vector512<byte> TransformInput(Vector512<byte> input) => throw new UnreachableException();
src\runtime\src\libraries\System.Private.CoreLib\src\System\SearchValues\Strings\Helpers\TeddyBucketizer.cs (4)
15public static (Vector512<byte> Low, Vector512<byte> High) GenerateNonBucketizedFingerprint(ReadOnlySpan<string> values, int offset) 48public static (Vector512<byte> Low, Vector512<byte> High) GenerateBucketizedFingerprint(string[][] valueBuckets, int offset)
src\runtime\src\libraries\System.Private.CoreLib\src\System\SearchValues\Strings\Helpers\TeddyHelper.cs (57)
72public static (Vector512<byte> Result, Vector512<byte> Prev0) ProcessInputN2( 73Vector512<byte> input, 74Vector512<byte> prev0, 75Vector512<byte> n0Low, Vector512<byte> n0High, 76Vector512<byte> n1Low, Vector512<byte> n1High) 80(Vector512<byte> low, Vector512<byte> high) = GetNibbles(input); 82Vector512<byte> match0 = Shuffle(n0Low, n0High, low, high); 83Vector512<byte> result1 = Shuffle(n1Low, n1High, low, high); 85Vector512<byte> result0 = RightShift1(prev0, match0); 87Vector512<byte> result = result0 & result1; 190public static (Vector512<byte> Result, Vector512<byte> Prev0, Vector512<byte> Prev1) ProcessInputN3( 191Vector512<byte> input, 192Vector512<byte> prev0, Vector512<byte> prev1, 193Vector512<byte> n0Low, Vector512<byte> n0High, 194Vector512<byte> n1Low, Vector512<byte> n1High, 195Vector512<byte> n2Low, Vector512<byte> n2High) 199(Vector512<byte> low, Vector512<byte> high) = GetNibbles(input); 201Vector512<byte> match0 = Shuffle(n0Low, n0High, low, high); 202Vector512<byte> match1 = Shuffle(n1Low, n1High, low, high); 203Vector512<byte> result2 = Shuffle(n2Low, n2High, low, high); 205Vector512<byte> result0 = RightShift2(prev0, match0); 206Vector512<byte> result1 = RightShift1(prev1, match1); 208Vector512<byte> result = result0 & result1 & result2; 267/// Read two <see cref="Vector512&lt;UInt16&gt;" /> and concatenate their lower bytes together into a single <see cref="Vector512&lt;Byte&gt;" />. 274public static Vector512<byte> LoadAndPack64AsciiChars(ref char source) 276Vector512<ushort> source0 = Vector512.LoadUnsafe(ref source); 277Vector512<ushort> source1 = Vector512.LoadUnsafe(ref source, (nuint)Vector512<ushort>.Count); 279Vector512<byte> packed = Avx512BW.PackUnsignedSaturate(source0.AsInt16(), source1.AsInt16()); 316private static (Vector512<byte> Low, Vector512<byte> High) GetNibbles(Vector512<byte> input) 320Vector512<byte> low = input; 322Vector512<byte> high = input >>> 4; 345private static Vector512<byte> Shuffle(Vector512<byte> maskLow, Vector512<byte> maskHigh, Vector512<byte> low, Vector512<byte> high) 464private static Vector512<byte> RightShift1(Vector512<byte> left, Vector512<byte> right) 477private static Vector512<byte> RightShift2(Vector512<byte> left, Vector512<byte> right)
src\runtime\src\libraries\System.Private.CoreLib\src\System\SearchValues\Strings\SingleStringSearchValuesPackedThreeChars.cs (25)
90if (Vector512.IsHardwareAccelerated && Avx512BW.IsSupported && searchSpaceMinusValueTailLength - Vector512<byte>.Count >= 0) 92Vector512<byte> ch1 = Vector512.Create(_ch1); 93Vector512<byte> ch2 = Vector512.Create(_ch2); 94Vector512<byte> ch3 = Vector512.Create(_ch3); 96ref char lastSearchSpace = ref Unsafe.Add(ref searchSpace, searchSpaceMinusValueTailLength - Vector512<byte>.Count); 100ValidateReadPosition(ref searchSpaceStart, searchSpaceLength, ref searchSpace, Vector512<byte>.Count); 101ValidateReadPosition(ref searchSpaceStart, searchSpaceLength, ref searchSpace, Vector512<byte>.Count + (int)(_ch2ByteOffset / sizeof(char))); 102ValidateReadPosition(ref searchSpaceStart, searchSpaceLength, ref searchSpace, Vector512<byte>.Count + (int)(_ch3ByteOffset / sizeof(char))); 105Vector512<byte> result = GetComparisonResult(ref searchSpace, ch2ByteOffset, ch3ByteOffset, ch1, ch2, ch3); 107if (result != Vector512<byte>.Zero) 114searchSpace = ref Unsafe.Add(ref searchSpace, Vector512<byte>.Count); 118if (Unsafe.AreSame(ref searchSpace, ref Unsafe.Add(ref lastSearchSpace, Vector512<byte>.Count))) 306private static Vector512<byte> GetComparisonResult(ref char searchSpace, nuint ch2ByteOffset, nuint ch3ByteOffset, Vector512<byte> ch1, Vector512<byte> ch2, Vector512<byte> ch3) 312Vector512<byte> cmpCh1 = Vector512.Equals(ch1, LoadPacked512(ref searchSpace, 0)); 313Vector512<byte> cmpCh2 = Vector512.Equals(ch2, LoadPacked512(ref searchSpace, ch2ByteOffset)); 314Vector512<byte> cmpCh3 = Vector512.Equals(ch3, LoadPacked512(ref searchSpace, ch3ByteOffset)); 319Vector512<byte> caseConversion = Vector512.Create(CaseConversionMask); 321Vector512<byte> cmpCh1 = Vector512.Equals(ch1, LoadPacked512(ref searchSpace, 0) & caseConversion); 322Vector512<byte> cmpCh2 = Vector512.Equals(ch2, LoadPacked512(ref searchSpace, ch2ByteOffset) & caseConversion); 323Vector512<byte> cmpCh3 = Vector512.Equals(ch3, LoadPacked512(ref searchSpace, ch3ByteOffset) & caseConversion); 412private static Vector512<byte> LoadPacked512(ref char searchSpace, nuint byteOffset) => 415Vector512.LoadUnsafe(ref Unsafe.AddByteOffset(ref searchSpace, byteOffset + (uint)Vector512<byte>.Count)).AsInt16());
src\runtime\src\libraries\System.Private.CoreLib\src\System\SearchValues\Strings\SingleStringSearchValuesThreeChars.cs (23)
90if (Vector512.IsHardwareAccelerated && searchSpaceMinusValueTailLength - Vector512<ushort>.Count >= 0) 92Vector512<ushort> ch1 = Vector512.Create(_ch1); 93Vector512<ushort> ch2 = Vector512.Create(_ch2); 94Vector512<ushort> ch3 = Vector512.Create(_ch3); 96ref char lastSearchSpace = ref Unsafe.Add(ref searchSpace, searchSpaceMinusValueTailLength - Vector512<ushort>.Count); 100ValidateReadPosition(ref searchSpaceStart, searchSpaceLength, ref searchSpace, Vector512<ushort>.Count); 101ValidateReadPosition(ref searchSpaceStart, searchSpaceLength, ref searchSpace, Vector512<ushort>.Count + (int)(_ch2ByteOffset / sizeof(char))); 102ValidateReadPosition(ref searchSpaceStart, searchSpaceLength, ref searchSpace, Vector512<ushort>.Count + (int)(_ch3ByteOffset / sizeof(char))); 105Vector512<byte> result = GetComparisonResult(ref searchSpace, ch2ByteOffset, ch3ByteOffset, ch1, ch2, ch3); 107if (result != Vector512<byte>.Zero) 114searchSpace = ref Unsafe.Add(ref searchSpace, Vector512<ushort>.Count); 118if (Unsafe.AreSame(ref searchSpace, ref Unsafe.Add(ref lastSearchSpace, Vector512<ushort>.Count))) 303private static Vector512<byte> GetComparisonResult(ref char searchSpace, nuint ch2ByteOffset, nuint ch3ByteOffset, Vector512<ushort> ch1, Vector512<ushort> ch2, Vector512<ushort> ch3) 309Vector512<ushort> cmpCh1 = Vector512.Equals(ch1, Vector512.LoadUnsafe(ref searchSpace)); 310Vector512<ushort> cmpCh2 = Vector512.Equals(ch2, Vector512.LoadUnsafe(ref Unsafe.As<char, byte>(ref searchSpace), ch2ByteOffset).AsUInt16()); 311Vector512<ushort> cmpCh3 = Vector512.Equals(ch3, Vector512.LoadUnsafe(ref Unsafe.As<char, byte>(ref searchSpace), ch3ByteOffset).AsUInt16()); 316Vector512<ushort> caseConversion = Vector512.Create(CaseConversionMask); 318Vector512<ushort> cmpCh1 = Vector512.Equals(ch1, Vector512.LoadUnsafe(ref searchSpace) & caseConversion); 319Vector512<ushort> cmpCh2 = Vector512.Equals(ch2, Vector512.LoadUnsafe(ref Unsafe.As<char, byte>(ref searchSpace), ch2ByteOffset).AsUInt16() & caseConversion); 320Vector512<ushort> cmpCh3 = Vector512.Equals(ch3, Vector512.LoadUnsafe(ref Unsafe.As<char, byte>(ref searchSpace), ch3ByteOffset).AsUInt16() & caseConversion);
src\runtime\src\libraries\System.Private.CoreLib\src\System\SpanHelpers.Byte.cs (38)
66if (Vector512.IsHardwareAccelerated && searchSpaceMinusValueTailLength - Vector512<byte>.Count >= 0) 75Vector512<byte> ch1 = Vector512.Create(value); 76Vector512<byte> ch2 = Vector512.Create(ch2Val); 79searchSpaceMinusValueTailLength - (nint)Vector512<byte>.Count; 85Debug.Assert(offset + ch1ch2Distance + Vector512<byte>.Count <= searchSpaceLength); 87Vector512<byte> cmpCh2 = Vector512.Equals(ch2, Vector512.LoadUnsafe(ref searchSpace, (nuint)(offset + ch1ch2Distance))); 88Vector512<byte> cmpCh1 = Vector512.Equals(ch1, Vector512.LoadUnsafe(ref searchSpace, (nuint)offset)); 89Vector512<byte> cmpAnd = (cmpCh1 & cmpCh2).AsByte(); 92if (cmpAnd != Vector512<byte>.Zero) 98offset += Vector512<byte>.Count; 299if (Vector512.IsHardwareAccelerated && searchSpaceMinusValueTailLength >= Vector512<byte>.Count) 301offset = searchSpaceMinusValueTailLength - Vector512<byte>.Count; 310Vector512<byte> ch1 = Vector512.Create(value); 311Vector512<byte> ch2 = Vector512.Create(ch2Val); 314Vector512<byte> cmpCh1 = Vector512.Equals(ch1, Vector512.LoadUnsafe(ref searchSpace, (nuint)offset)); 315Vector512<byte> cmpCh2 = Vector512.Equals(ch2, Vector512.LoadUnsafe(ref searchSpace, (nuint)(offset + ch1ch2Distance))); 316Vector512<byte> cmpAnd = (cmpCh1 & cmpCh2).AsByte(); 319if (cmpAnd != Vector512<byte>.Zero) 338offset -= Vector512<byte>.Count; 339if (offset == -Vector512<byte>.Count) 546if ((((nuint)(uint)searchSpace + offset) & (nuint)(Vector512<byte>.Count - 1)) != 0) 572Vector512<byte> search = Vector512.Load(searchSpace + offset); 573ulong matches = Vector512.Equals(Vector512<byte>.Zero, search).ExtractMostSignificantBits(); 579offset += (nuint)Vector512<byte>.Count; 823if (Vector512.IsHardwareAccelerated && length >= (nuint)Vector512<byte>.Count) 826nuint lengthToExamine = length - (nuint)Vector512<byte>.Count; 838offset += (nuint)Vector512<byte>.Count; 978if (Vector512.IsHardwareAccelerated && (lengthToExamine >= (nuint)Vector512<byte>.Count)) 980lengthToExamine -= (nuint)Vector512<byte>.Count; 992offset += (nuint)Vector512<byte>.Count; 1290=> (nuint)(uint)((length - (int)offset) & ~(Vector512<byte>.Count - 1)); 1306if (Vector512.IsHardwareAccelerated && remainder >= Vector512<byte>.Count * 2) 1308nint lastOffset = remainder - Vector512<byte>.Count; 1312Vector512<byte> tempFirst = Vector512.LoadUnsafe(ref buf, (nuint)offset); 1313Vector512<byte> tempLast = Vector512.LoadUnsafe(ref buf, (nuint)lastOffset); 1338offset += Vector512<byte>.Count; 1339lastOffset -= Vector512<byte>.Count; 1342remainder = lastOffset + Vector512<byte>.Count - offset;
src\runtime\src\libraries\System.Private.CoreLib\src\System\SpanHelpers.Char.cs (36)
72if (Vector512.IsHardwareAccelerated && searchSpaceMinusValueTailLength - Vector512<ushort>.Count >= 0) 81Vector512<ushort> ch1 = Vector512.Create((ushort)valueHead); 82Vector512<ushort> ch2 = Vector512.Create(ch2Val); 85searchSpaceMinusValueTailLength - (nint)Vector512<ushort>.Count; 90Debug.Assert(offset + ch1ch2Distance + Vector512<ushort>.Count <= searchSpaceLength); 92Vector512<ushort> cmpCh2 = Vector512.Equals(ch2, Vector512.LoadUnsafe(ref searchSpace, (nuint)(offset + ch1ch2Distance))); 93Vector512<ushort> cmpCh1 = Vector512.Equals(ch1, Vector512.LoadUnsafe(ref searchSpace, (nuint)offset)); 94Vector512<byte> cmpAnd = (cmpCh1 & cmpCh2).AsByte(); 97if (cmpAnd != Vector512<byte>.Zero) 103offset += Vector512<ushort>.Count; 314if (Vector512.IsHardwareAccelerated && searchSpaceMinusValueTailLength >= Vector512<ushort>.Count) 316offset = searchSpaceMinusValueTailLength - Vector512<ushort>.Count; 325Vector512<ushort> ch1 = Vector512.Create((ushort)valueHead); 326Vector512<ushort> ch2 = Vector512.Create((ushort)ch2Val); 331Vector512<ushort> cmpCh1 = Vector512.Equals(ch1, Vector512.LoadUnsafe(ref searchSpace, (nuint)offset)); 332Vector512<ushort> cmpCh2 = Vector512.Equals(ch2, Vector512.LoadUnsafe(ref searchSpace, (nuint)(offset + ch1ch2Distance))); 333Vector512<byte> cmpAnd = (cmpCh1 & cmpCh2).AsByte(); 336if (cmpAnd != Vector512<byte>.Zero) 356offset -= Vector512<ushort>.Count; 357if (offset == -Vector512<ushort>.Count) 614if (((nint)(searchSpace + (nint)offset) & (nint)(Vector512<byte>.Count - 1)) != 0) 647Debug.Assert(lengthToExamine >= Vector512<ushort>.Count); 649Vector512<ushort> search = *(Vector512<ushort>*)(searchSpace + (nuint)offset); 655if (!Vector512.EqualsAny(search, Vector512<ushort>.Zero)) 658offset += Vector512<ushort>.Count; 659lengthToExamine -= Vector512<ushort>.Count; 668ulong matches = Vector512.Equals(search, Vector512<ushort>.Zero).ExtractMostSignificantBits(); 879=> (length - offset) & ~(Vector512<ushort>.Count - 1); 895if (Vector512.IsHardwareAccelerated && remainder >= Vector512<ushort>.Count * 2) 897nint lastOffset = remainder - Vector512<ushort>.Count; 903Vector512<ushort> tempFirst = Vector512.LoadUnsafe(ref first); 904Vector512<ushort> tempLast = Vector512.LoadUnsafe(ref last); 923offset += Vector512<ushort>.Count; 924lastOffset -= Vector512<ushort>.Count; 927remainder = (lastOffset + Vector512<ushort>.Count - offset);
src\runtime\src\libraries\System.Private.CoreLib\src\System\SpanHelpers.cs (14)
95if (Vector512.IsHardwareAccelerated && remainder >= Vector512<int>.Count * 2) 97nint lastOffset = remainder - Vector512<int>.Count; 101Vector512<int> tempFirst = Vector512.LoadUnsafe(ref buf, (nuint)offset); 102Vector512<int> tempLast = Vector512.LoadUnsafe(ref buf, (nuint)lastOffset); 119offset += Vector512<int>.Count; 120lastOffset -= Vector512<int>.Count; 123remainder = lastOffset + Vector512<int>.Count - offset; 200if (Vector512.IsHardwareAccelerated && remainder >= Vector512<long>.Count * 2) 202nint lastOffset = remainder - Vector512<long>.Count; 206Vector512<long> tempFirst = Vector512.LoadUnsafe(ref buf, (nuint)offset); 207Vector512<long> tempLast = Vector512.LoadUnsafe(ref buf, (nuint)lastOffset); 224offset += Vector512<long>.Count; 225lastOffset -= Vector512<long>.Count; 228remainder = lastOffset + Vector512<long>.Count - offset;
src\runtime\src\libraries\System.Private.CoreLib\src\System\SpanHelpers.Packed.cs (104)
149if (Avx512BW.IsSupported && Vector512.IsHardwareAccelerated && length > Vector512<short>.Count) 152Vector512<byte> packedValue = Vector512.Create((byte)value); 154if (length > 2 * Vector512<short>.Count) 160ref short twoVectorsAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - (2 * Vector512<short>.Count)); 164Vector512<short> source0 = Vector512.LoadUnsafe(ref currentSearchSpace); 165Vector512<short> source1 = Vector512.LoadUnsafe(ref currentSearchSpace, (nuint)Vector512<short>.Count); 166Vector512<byte> packedSource = PackSources(source0, source1); 173currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, 2 * Vector512<short>.Count); 181ref short oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<short>.Count); 187Vector512<short> source0 = Vector512.LoadUnsafe(ref firstVector); 188Vector512<short> source1 = Vector512.LoadUnsafe(ref oneVectorAwayFromEnd); 189Vector512<byte> packedSource = PackSources(source0, source1); 348if (Avx512BW.IsSupported && Vector512.IsHardwareAccelerated && length > Vector512<short>.Count) 351Vector512<byte> packedValue = Vector512.Create((byte)value); 353if (length > 2 * Vector512<short>.Count) 359ref short twoVectorsAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - (2 * Vector512<short>.Count)); 363Vector512<short> source0 = Vector512.LoadUnsafe(ref currentSearchSpace); 364Vector512<short> source1 = Vector512.LoadUnsafe(ref currentSearchSpace, (nuint)Vector512<short>.Count); 365Vector512<byte> packedSource = TTransform.TransformInput(PackSources(source0, source1)); 372currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, 2 * Vector512<short>.Count); 380ref short oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<short>.Count); 386Vector512<short> source0 = Vector512.LoadUnsafe(ref firstVector); 387Vector512<short> source1 = Vector512.LoadUnsafe(ref oneVectorAwayFromEnd); 388Vector512<byte> packedSource = TTransform.TransformInput(PackSources(source0, source1)); 557if (Avx512BW.IsSupported && Vector512.IsHardwareAccelerated && length > Vector512<short>.Count) 560Vector512<byte> packedValue0 = Vector512.Create((byte)value0); 561Vector512<byte> packedValue1 = Vector512.Create((byte)value1); 563if (length > 2 * Vector512<short>.Count) 569ref short twoVectorsAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - (2 * Vector512<short>.Count)); 573Vector512<short> source0 = Vector512.LoadUnsafe(ref currentSearchSpace); 574Vector512<short> source1 = Vector512.LoadUnsafe(ref currentSearchSpace, (nuint)Vector512<short>.Count); 575Vector512<byte> packedSource = TTransform.TransformInput(PackSources(source0, source1)); 576Vector512<byte> result = NegateIfNeeded<TNegator>(Vector512.Equals(packedValue0, packedSource) | Vector512.Equals(packedValue1, packedSource)); 578if (result != Vector512<byte>.Zero) 583currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, 2 * Vector512<short>.Count); 591ref short oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<short>.Count); 597Vector512<short> source0 = Vector512.LoadUnsafe(ref firstVector); 598Vector512<short> source1 = Vector512.LoadUnsafe(ref oneVectorAwayFromEnd); 599Vector512<byte> packedSource = TTransform.TransformInput(PackSources(source0, source1)); 600Vector512<byte> result = NegateIfNeeded<TNegator>(Vector512.Equals(packedValue0, packedSource) | Vector512.Equals(packedValue1, packedSource)); 602if (result != Vector512<byte>.Zero) 772if (Avx512BW.IsSupported && Vector512.IsHardwareAccelerated && length > Vector512<short>.Count) 775Vector512<byte> packedValue0 = Vector512.Create((byte)value0); 776Vector512<byte> packedValue1 = Vector512.Create((byte)value1); 777Vector512<byte> packedValue2 = Vector512.Create((byte)value2); 779if (length > 2 * Vector512<short>.Count) 785ref short twoVectorsAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - (2 * Vector512<short>.Count)); 789Vector512<short> source0 = Vector512.LoadUnsafe(ref currentSearchSpace); 790Vector512<short> source1 = Vector512.LoadUnsafe(ref currentSearchSpace, (nuint)Vector512<short>.Count); 791Vector512<byte> packedSource = PackSources(source0, source1); 792Vector512<byte> result = NegateIfNeeded<TNegator>(Vector512.Equals(packedValue0, packedSource) | Vector512.Equals(packedValue1, packedSource) | Vector512.Equals(packedValue2, packedSource)); 794if (result != Vector512<byte>.Zero) 799currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, 2 * Vector512<short>.Count); 807ref short oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<short>.Count); 813Vector512<short> source0 = Vector512.LoadUnsafe(ref firstVector); 814Vector512<short> source1 = Vector512.LoadUnsafe(ref oneVectorAwayFromEnd); 815Vector512<byte> packedSource = PackSources(source0, source1); 816Vector512<byte> result = NegateIfNeeded<TNegator>(Vector512.Equals(packedValue0, packedSource) | Vector512.Equals(packedValue1, packedSource) | Vector512.Equals(packedValue2, packedSource)); 818if (result != Vector512<byte>.Zero) 972if (Avx512BW.IsSupported && Vector512.IsHardwareAccelerated && length > Vector512<short>.Count) 975Vector512<byte> lowVector = Vector512.Create((byte)lowInclusive); 976Vector512<byte> rangeVector = Vector512.Create((byte)rangeInclusive); 978if (length > 2 * Vector512<short>.Count) 984ref short twoVectorsAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - (2 * Vector512<short>.Count)); 988Vector512<short> source0 = Vector512.LoadUnsafe(ref currentSearchSpace); 989Vector512<short> source1 = Vector512.LoadUnsafe(ref currentSearchSpace, (nuint)Vector512<short>.Count); 990Vector512<byte> packedSource = PackSources(source0, source1) - lowVector; 997currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, 2 * Vector512<short>.Count); 1005ref short oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<short>.Count); 1011Vector512<short> source0 = Vector512.LoadUnsafe(ref firstVector); 1012Vector512<short> source1 = Vector512.LoadUnsafe(ref oneVectorAwayFromEnd); 1013Vector512<byte> packedSource = PackSources(source0, source1) - lowVector; 1143internal static Vector512<byte> PackSources(Vector512<short> source0, Vector512<short> source1) 1193private static Vector512<byte> NegateIfNeeded<TNegator>(Vector512<byte> result) 1198private static bool HasMatch<TNegator>(Vector512<byte> left, Vector512<byte> right) 1206private static Vector512<byte> GetMatchMask<TNegator>(Vector512<byte> left, Vector512<byte> right) 1214private static bool HasMatchInRange<TNegator>(Vector512<byte> left, Vector512<byte> right) 1222private static Vector512<byte> GetMatchInRangeMask<TNegator>(Vector512<byte> left, Vector512<byte> right) 1248private static int ComputeFirstIndex(ref short searchSpace, ref short current, Vector512<byte> equals) 1286private static int ComputeFirstIndexOverlapped(ref short searchSpace, ref short current0, ref short current1, Vector512<byte> equals) 1290if (offsetInVector >= Vector512<short>.Count) 1294offsetInVector -= Vector512<short>.Count; 1313internal static Vector512<byte> FixUpPackedVector512Result(Vector512<byte> result) 1326static abstract Vector512<byte> TransformInput(Vector512<byte> input); 1334public static Vector512<byte> TransformInput(Vector512<byte> input) => input; 1342public static Vector512<byte> TransformInput(Vector512<byte> input) => input | Vector512.Create((byte)0x20);
src\runtime\src\libraries\System.Private.CoreLib\src\System\SpanHelpers.T.cs (99)
1527else if (Vector512.IsHardwareAccelerated && length >= Vector512<T>.Count) 1529Vector512<T> current, values = Vector512.Create(value); 1531ref T oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, (uint)(length - Vector512<T>.Count)); 1543currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, Vector512<T>.Count); 1548if ((uint)length % Vector512<T>.Count != 0) 1746else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 1748Vector512<TValue> current, values = Vector512.Create(value); 1750ref TValue oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<TValue>.Count); 1762currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, Vector512<TValue>.Count); 1767if ((uint)length % Vector512<TValue>.Count != 0) 2009else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 2011Vector512<TValue> equals, current, values0 = Vector512.Create(value0), values1 = Vector512.Create(value1); 2013ref TValue oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<TValue>.Count); 2020if (equals == Vector512<TValue>.Zero) 2022currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, Vector512<TValue>.Count); 2031if ((uint)length % Vector512<TValue>.Count != 0) 2035if (equals != Vector512<TValue>.Zero) 2250else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 2252Vector512<TValue> equals, current, values0 = Vector512.Create(value0), values1 = Vector512.Create(value1), values2 = Vector512.Create(value2); 2254ref TValue oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<TValue>.Count); 2261if (equals == Vector512<TValue>.Zero) 2263currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, Vector512<TValue>.Count); 2272if ((uint)length % Vector512<TValue>.Count != 0) 2276if (equals != Vector512<TValue>.Zero) 2417else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 2419Vector512<TValue> equals, current, values0 = Vector512.Create(value0), values1 = Vector512.Create(value1), values2 = Vector512.Create(value2), values3 = Vector512.Create(value3); 2421ref TValue oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, length - Vector512<TValue>.Count); 2429if (equals == Vector512<TValue>.Zero) 2431currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, Vector512<TValue>.Count); 2440if ((uint)length % Vector512<TValue>.Count != 0) 2445if (equals != Vector512<TValue>.Zero) 2590else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 2592Vector512<TValue> equals, current, values0 = Vector512.Create(value0), values1 = Vector512.Create(value1), 2595ref TValue oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, (uint)(length - Vector512<TValue>.Count)); 2603if (equals == Vector512<TValue>.Zero) 2605currentSearchSpace = ref Unsafe.Add(ref currentSearchSpace, Vector512<TValue>.Count); 2614if ((uint)length % Vector512<TValue>.Count != 0) 2619if (equals != Vector512<TValue>.Zero) 2796else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 2798return SimdImpl<Vector512<TValue>>(ref searchSpace, value, length); 2969else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 2971Vector512<TValue> equals, current, values0 = Vector512.Create(value0), values1 = Vector512.Create(value1); 2972nint offset = length - Vector512<TValue>.Count; 2980if (equals == Vector512<TValue>.Zero) 2982offset -= Vector512<TValue>.Count; 2994if (equals != Vector512<TValue>.Zero) 3186else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 3188Vector512<TValue> equals, current, values0 = Vector512.Create(value0), values1 = Vector512.Create(value1), values2 = Vector512.Create(value2); 3189nint offset = length - Vector512<TValue>.Count; 3197if (equals == Vector512<TValue>.Zero) 3199offset -= Vector512<TValue>.Count; 3210if (equals != Vector512<TValue>.Zero) 3344else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 3346Vector512<TValue> equals, current, values0 = Vector512.Create(value0), values1 = Vector512.Create(value1), values2 = Vector512.Create(value2), values3 = Vector512.Create(value3); 3347nint offset = length - Vector512<TValue>.Count; 3355if (equals == Vector512<TValue>.Zero) 3357offset -= Vector512<TValue>.Count; 3368if (equals != Vector512<TValue>.Zero) 3498else if (!Vector512.IsHardwareAccelerated || length < (uint)Vector512<T>.Count) 3523Debug.Assert(Vector512.IsHardwareAccelerated && Vector512<T>.IsSupported, "Vector512 is not HW-accelerated or not supported"); 3525nuint lastVectorIndex = length - (uint)Vector512<T>.Count; 3526Vector512<T> oldValues = Vector512.Create(oldValue); 3527Vector512<T> newValues = Vector512.Create(newValue); 3528Vector512<T> original, mask, result; 3537idx += (uint)Vector512<T>.Count; 3614else if (Vector512.IsHardwareAccelerated && length >= Vector512<TValue>.Count) 3616Vector512<TValue> equals, current, values0 = Vector512.Create(value0), values1 = Vector512.Create(value1), 3618nint offset = length - Vector512<TValue>.Count; 3626if (equals == Vector512<TValue>.Zero) 3628offset -= Vector512<TValue>.Count; 3640if (equals != Vector512<TValue>.Zero) 3730private static unsafe int ComputeFirstIndex<T>(ref T searchSpace, ref T current, Vector512<T> equals) where T : struct 3754private static int ComputeLastIndex<T>(nint offset, Vector512<T> equals) where T : struct 3766static abstract Vector512<T> NegateIfNeeded(Vector512<T> equals); 3784public static Vector512<T> NegateIfNeeded(Vector512<T> equals) => equals; 3808public static Vector512<T> NegateIfNeeded(Vector512<T> equals) => ~equals; 3930else if (!Vector512.IsHardwareAccelerated || length < (uint)Vector512<T>.Count) 3961Vector512<T> lowVector = Vector512.Create(lowInclusive); 3962Vector512<T> rangeVector = Vector512.Create(highInclusive - lowInclusive); 3963Vector512<T> inRangeVector; 3966ref T oneVectorAwayFromEnd = ref Unsafe.Add(ref searchSpace, (uint)(length - Vector512<T>.Count)); 3972if (inRangeVector != Vector512<T>.Zero) 3977current = ref Unsafe.Add(ref current, Vector512<T>.Count); 3983if (inRangeVector != Vector512<T>.Zero) 4075else if (!Vector512.IsHardwareAccelerated || length < Vector512<T>.Count) 4104Vector512<T> lowVector = Vector512.Create(lowInclusive); 4105Vector512<T> rangeVector = Vector512.Create(highInclusive - lowInclusive); 4106Vector512<T> inRangeVector; 4108nint offset = length - Vector512<T>.Count; 4114if (inRangeVector != Vector512<T>.Zero) 4119offset -= Vector512<T>.Count; 4124if (inRangeVector != Vector512<T>.Zero) 4173if (Vector512.IsHardwareAccelerated && length >= Vector512<T>.Count) 4175Vector512<T> targetVector = Vector512.Create(value); 4176ref T oneVectorAwayFromEnd = ref Unsafe.Subtract(ref end, Vector512<T>.Count); 4180current = ref Unsafe.Add(ref current, Vector512<T>.Count);
src\runtime\src\libraries\System.Private.CoreLib\src\System\String.Manipulation.cs (33)
1319if (Vector512.IsHardwareAccelerated && length >= (uint)Vector512<ushort>.Count) 1321nuint adjust = (length - remainingLength) & ((uint)Vector512<ushort>.Count - 1); 2127if (Vector512.IsHardwareAccelerated && (uint)remaining.Length >= (uint)Vector512<ushort>.Count*2) 2129Vector512<ushort> v1 = Vector512.Create((ushort)c); 2130Vector512<ushort> v2 = Vector512.Create((ushort)c2); 2131Vector512<ushort> v3 = Vector512.Create((ushort)c3); 2139Vector512<byte> packedComparand1 = Vector512.Create((byte)c); 2140Vector512<byte> packedComparand2 = Vector512.Create((byte)c2); 2141Vector512<byte> packedComparand3 = Vector512.Create((byte)c3); 2142while ((uint)remaining.Length >= (uint)Vector512<ushort>.Count*2) 2144Vector512<ushort> vector1 = Vector512.Create(remaining); 2145Vector512<ushort> vector2 = Vector512.Create(remaining.Slice(Vector512<ushort>.Count)); 2146var packed = PackedSpanHelpers.PackSources(vector1.AsInt16(), vector2.AsInt16()); 2148if ((Vector512.Equals(packed, packedComparand1) | Vector512.Equals(packed, packedComparand2) | Vector512.Equals(packed, packedComparand3)) != Vector512<byte>.Zero) 2150var cmp1 = Vector512.Equals(vector1, v1).AsByte() | Vector512.Equals(vector1, v2).AsByte() | Vector512.Equals(vector1, v3).AsByte(); 2151var cmp2 = Vector512.Equals(vector2, v1).AsByte() | Vector512.Equals(vector2, v2).AsByte() | Vector512.Equals(vector2, v3).AsByte(); 2166sepListBuilder.Append(baseIndex + (int)bitPos + Vector512<ushort>.Count); 2173baseIndex += Vector512<ushort>.Count*2; 2174remaining = remaining.Slice(Vector512<ushort>.Count*2); 2179baseIndex += Vector512<ushort>.Count*2; 2180remaining = remaining.Slice(Vector512<ushort>.Count*2); 2184while ((uint)remaining.Length >= (uint)Vector512<ushort>.Count) 2186Vector512<ushort> vector = Vector512.Create(remaining); 2187Vector512<byte> cmp = Vector512.Equals(vector, v1).AsByte() | Vector512.Equals(vector, v2).AsByte() | Vector512.Equals(vector, v3).AsByte(); 2189if (cmp != Vector512<byte>.Zero) 2201baseIndex += Vector512<ushort>.Count; 2202remaining = remaining.Slice(Vector512<ushort>.Count); 2209Vector512<ushort> vector = Vector512.Create(sourceSpanUInt16.Slice(sourceSpanUInt16.Length - Vector512<ushort>.Count)); 2210Vector512<byte> cmp = Vector512.Equals(vector, v1).AsByte() | Vector512.Equals(vector, v2).AsByte() | Vector512.Equals(vector, v3).AsByte(); 2211int finalIndex = sourceSpanUInt16.Length - Vector512<ushort>.Count; 2212ulong mask = cmp.ExtractMostSignificantBits() & 0x5555555555555555 & ~((1UL << (Vector512<byte>.Count - remaining.Length * sizeof(char))) - 1);
src\runtime\src\libraries\System.Private.CoreLib\src\System\Text\Ascii.Equality.cs (39)
65else if (Vector512.IsHardwareAccelerated && length >= (uint)Vector512<TLeft>.Count) 71Debug.Assert(Vector512<TLeft>.Count == Vector512<TRight>.Count 72|| (typeof(TLoader) == typeof(WideningLoader) && Vector512<TLeft>.Count == Vector512<TRight>.Count * 2)); 73ref TRight oneVectorAwayFromRightEnd = ref Unsafe.Add(ref currentRightSearchSpace, length - (uint)Vector512<TLeft>.Count); 83currentRightSearchSpace = ref Unsafe.Add(ref currentRightSearchSpace, Vector512<TLeft>.Count); 84currentLeftSearchSpace = ref Unsafe.Add(ref currentLeftSearchSpace, Vector512<TLeft>.Count); 89if (length % (uint)Vector512<TLeft>.Count != 0) 91ref TLeft oneVectorAwayFromLeftEnd = ref Unsafe.Add(ref left, length - (uint)Vector512<TLeft>.Count); 235else if (Vector512.IsHardwareAccelerated && length >= (uint)Vector512<TRight>.Count) 238ref TLeft oneVectorAwayFromLeftEnd = ref Unsafe.Add(ref currentLeftSearchSpace, length - (uint)Vector512<TRight>.Count); 240ref TRight oneVectorAwayFromRightEnd = ref Unsafe.Add(ref currentRightSearchSpace, length - (uint)Vector512<TRight>.Count); 242Vector512<TRight> leftValues; 243Vector512<TRight> rightValues; 245Vector512<TRight> loweringMask = Vector512.Create(TRight.CreateTruncating(0x20)); 246Vector512<TRight> vecA = Vector512.Create(TRight.CreateTruncating('a')); 247Vector512<TRight> vecZMinusA = Vector512.Create(TRight.CreateTruncating(('z' - 'a'))); 259Vector512<TRight> notEquals = ~Vector512.Equals(leftValues, rightValues); 261if (notEquals != Vector512<TRight>.Zero) 274currentRightSearchSpace = ref Unsafe.Add(ref currentRightSearchSpace, (uint)Vector512<TRight>.Count); 275currentLeftSearchSpace = ref Unsafe.Add(ref currentLeftSearchSpace, (uint)Vector512<TRight>.Count); 280if (length % (uint)Vector512<TRight>.Count != 0) 290Vector512<TRight> notEquals = ~Vector512.Equals(leftValues, rightValues); 292if (notEquals != Vector512<TRight>.Zero) 461static abstract Vector512<TRight> Load512(ref TLeft ptr); 470public static Vector512<T> Load512(ref T ptr) => Vector512.LoadUnsafe(ref ptr); 490Vector512<T> leftValues = Vector512.LoadUnsafe(ref left); 491Vector512<T> rightValues = Vector512.LoadUnsafe(ref right); 536public static Vector512<ushort> Load512(ref byte ptr) 571Debug.Assert(Vector512<byte>.Count == Vector512<ushort>.Count * 2); 573Vector512<byte> leftNotWidened = Vector512.LoadUnsafe(ref utf8); 579(Vector512<ushort> leftLower, Vector512<ushort> leftUpper) = Vector512.Widen(leftNotWidened); 580Vector512<ushort> right = Vector512.LoadUnsafe(ref utf16); 581Vector512<ushort> rightNext = Vector512.LoadUnsafe(ref utf16, (uint)Vector512<ushort>.Count); 584if (((leftLower ^ right) | (leftUpper ^ rightNext)) != Vector512<ushort>.Zero)
src\runtime\src\libraries\System.Private.CoreLib\src\System\Text\Ascii.Utility.cs (22)
144if (Vector512.IsHardwareAccelerated && bufferLength >= 2 * (uint)Vector512<byte>.Count) 767if (Vector512.IsHardwareAccelerated && bufferLength >= 2 * (uint)Vector512<ushort>.Count) 1377if (Vector512.IsHardwareAccelerated && elementCount >= 2 * (uint)Vector512<byte>.Count) 1593internal static bool VectorContainsNonAsciiChar(Vector512<ushort> utf16Vector) 1596Vector512<ushort> zeroIsAscii = utf16Vector & Vector512.Create(asciiMask); 1598return zeroIsAscii != Vector512<ushort>.Zero; 1655private static bool AllCharsInVectorAreAscii<T>(Vector512<T> vector) 1666return (vector.AsUInt16() & Vector512.Create((ushort)0xFF80)) == Vector512<ushort>.Zero; 1704internal static Vector512<byte> ExtractAsciiVector(Vector512<ushort> vectorFirst, Vector512<ushort> vectorSecond) 1967Vector512<ushort> utf16VectorFirst = Vector512.LoadUnsafe(ref utf16Buffer); 1978Vector512<byte> asciiVector = ExtractAsciiVector(utf16VectorFirst, utf16VectorFirst); 2024Vector512<ushort> utf16VectorSecond = Vector512.LoadUnsafe(ref utf16Buffer, currentOffsetInElements + Vector512.Size / sizeof(short)); 2025Vector512<ushort> combinedVector = utf16VectorFirst | utf16VectorSecond; 2080if (Vector512.IsHardwareAccelerated && (elementCount - currentOffset) >= (uint)Vector512<byte>.Count) 2082WidenAsciiToUtf1_Vector<Vector512<byte>, Vector512<ushort>>(pAsciiBuffer, pUtf16Buffer, ref currentOffset, elementCount); 2259else if (typeof(TVectorByte) == typeof(Vector512<byte>)) 2261(Vector512<ushort> Lower512, Vector512<ushort> Upper512) = Vector512.Widen((Vector512<byte>)(object)vector);
src\runtime\src\libraries\System.Private.CoreLib\src\System\ThrowHelper.cs (1)
841if (!Vector512<T>.IsSupported)
System.Runtime.Intrinsics (1)
src\runtime\artifacts\obj\System.Runtime.Intrinsics\Release\net11.0\System.Runtime.Intrinsics.Forwards.cs (1)
24[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Runtime.Intrinsics.Vector512<>))]
System.Runtime.Numerics (16)
src\runtime\src\libraries\System.Private.CoreLib\src\System\Numerics\BigIntegerCalculator.Shared.cs (5)
125while (Vector512.IsHardwareAccelerated && remaining.Length >= Vector512<nuint>.Count + 1) 127Vector512<nuint> current = Vector512.Create(remaining) >> shift; 128Vector512<nuint> carries = Vector512.Create(remaining.Slice(1)) << back; 130Vector512<nuint> newValue = current | carries; 133remaining = remaining.Slice(Vector512<nuint>.Count);
System\Numerics\BigIntegerCalculator.ShiftRot.cs (8)
161while (Vector512.IsHardwareAccelerated && offset >= Vector512<nuint>.Count + 1) 163Vector512<nuint> current = Vector512.LoadUnsafe(ref start, (nuint)(offset - Vector512<nuint>.Count)) << shift; 164Vector512<nuint> carries = Vector512.LoadUnsafe(ref start, (nuint)(offset - (Vector512<nuint>.Count + 1))) >> back; 166Vector512<nuint> newValue = current | carries; 168Vector512.StoreUnsafe(newValue, ref start, (nuint)(offset - Vector512<nuint>.Count)); 169offset -= Vector512<nuint>.Count;
System\Numerics\NumericsHelpers.cs (3)
80while (Vector512.IsHardwareAccelerated && d.Length >= Vector512<nuint>.Count) 82Vector512<nuint> complement = ~Vector512.Create(d); 84d = d.Slice(Vector512<nuint>.Count);