|
|
@@ -21,6 +21,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first source vector.</param>
|
|
|
/// <param name="right">The second source vector.</param>
|
|
|
/// <returns>The new vector with elements selected based on the mask.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<float> ConditionalSelect(Vector<int> condition, Vector<float> left, Vector<float> right)
|
|
|
{
|
|
|
@@ -34,6 +35,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first source vector.</param>
|
|
|
/// <param name="right">The second source vector.</param>
|
|
|
/// <returns>The new vector with elements selected based on the mask.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<double> ConditionalSelect(Vector<long> condition, Vector<double> left, Vector<double> right)
|
|
|
{
|
|
|
@@ -47,6 +49,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first source vector.</param>
|
|
|
/// <param name="right">The second source vector.</param>
|
|
|
/// <returns>The new vector with elements selected based on the mask.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> ConditionalSelect<T>(Vector<T> condition, Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
@@ -62,6 +65,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> Equals<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
@@ -74,6 +78,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> Equals(Vector<float> left, Vector<float> right)
|
|
|
{
|
|
|
@@ -86,6 +91,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> Equals(Vector<int> left, Vector<int> right)
|
|
|
{
|
|
|
@@ -98,6 +104,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> Equals(Vector<double> left, Vector<double> right)
|
|
|
{
|
|
|
@@ -110,6 +117,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> Equals(Vector<long> left, Vector<long> right)
|
|
|
{
|
|
|
@@ -149,6 +157,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> LessThan<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
@@ -162,6 +171,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant integral vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> LessThan(Vector<float> left, Vector<float> right)
|
|
|
{
|
|
|
@@ -175,6 +185,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> LessThan(Vector<int> left, Vector<int> right)
|
|
|
{
|
|
|
@@ -188,6 +199,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant integral vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> LessThan(Vector<double> left, Vector<double> right)
|
|
|
{
|
|
|
@@ -201,6 +213,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> LessThan(Vector<long> left, Vector<long> right)
|
|
|
{
|
|
|
@@ -242,6 +255,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> LessThanOrEqual<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
@@ -255,6 +269,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant integral vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> LessThanOrEqual(Vector<float> left, Vector<float> right)
|
|
|
{
|
|
|
@@ -268,6 +283,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> LessThanOrEqual(Vector<int> left, Vector<int> right)
|
|
|
{
|
|
|
@@ -281,6 +297,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> LessThanOrEqual(Vector<long> left, Vector<long> right)
|
|
|
{
|
|
|
@@ -294,6 +311,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant integral vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> LessThanOrEqual(Vector<double> left, Vector<double> right)
|
|
|
{
|
|
|
@@ -335,6 +353,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> GreaterThan<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
@@ -348,6 +367,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant integral vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> GreaterThan(Vector<float> left, Vector<float> right)
|
|
|
{
|
|
|
@@ -361,6 +381,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> GreaterThan(Vector<int> left, Vector<int> right)
|
|
|
{
|
|
|
@@ -374,6 +395,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant integral vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> GreaterThan(Vector<double> left, Vector<double> right)
|
|
|
{
|
|
|
@@ -387,6 +409,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> GreaterThan(Vector<long> left, Vector<long> right)
|
|
|
{
|
|
|
@@ -429,6 +452,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> GreaterThanOrEqual<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
@@ -442,6 +466,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant integral vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> GreaterThanOrEqual(Vector<float> left, Vector<float> right)
|
|
|
{
|
|
|
@@ -455,6 +480,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<int> GreaterThanOrEqual(Vector<int> left, Vector<int> right)
|
|
|
{
|
|
|
@@ -468,6 +494,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> GreaterThanOrEqual(Vector<long> left, Vector<long> right)
|
|
|
{
|
|
|
@@ -481,6 +508,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first vector to compare.</param>
|
|
|
/// <param name="right">The second vector to compare.</param>
|
|
|
/// <returns>The resultant integral vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<long> GreaterThanOrEqual(Vector<double> left, Vector<double> right)
|
|
|
{
|
|
|
@@ -542,6 +570,7 @@ namespace System.Numerics
|
|
|
/// </summary>
|
|
|
/// <param name="value">The source vector.</param>
|
|
|
/// <returns>The absolute value vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> Abs<T>(Vector<T> value) where T : struct
|
|
|
{
|
|
|
@@ -554,6 +583,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first source vector.</param>
|
|
|
/// <param name="right">The second source vector.</param>
|
|
|
/// <returns>The minimum vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> Min<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
@@ -566,6 +596,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first source vector.</param>
|
|
|
/// <param name="right">The second source vector.</param>
|
|
|
/// <returns>The maximum vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> Max<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
@@ -580,10 +611,11 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first source vector.</param>
|
|
|
/// <param name="right">The second source vector.</param>
|
|
|
/// <returns>The dot product.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static T Dot<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|
|
|
- return Vector<T>.DotProduct(left, right);
|
|
|
+ return Vector<T>.Dot(left, right);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -591,6 +623,7 @@ namespace System.Numerics
|
|
|
/// </summary>
|
|
|
/// <param name="value">The source vector.</param>
|
|
|
/// <returns>The square root vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> SquareRoot<T>(Vector<T> value) where T : struct
|
|
|
{
|
|
|
@@ -738,6 +771,7 @@ namespace System.Numerics
|
|
|
/// <param name="left">The first source vector.</param>
|
|
|
/// <param name="right">The second source vector.</param>
|
|
|
/// <returns>The resultant vector.</returns>
|
|
|
+ [Intrinsic]
|
|
|
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
|
|
|
public static Vector<T> AndNot<T>(Vector<T> left, Vector<T> right) where T : struct
|
|
|
{
|