Skip to content

Commit

Permalink
Ensure the handling of the Vector2/3 All/Any/None and Count/IndexOf/L…
Browse files Browse the repository at this point in the history
…astIndexOf methods is correct
  • Loading branch information
tannergooding committed Jan 10, 2025
1 parent a740498 commit a242714
Showing 1 changed file with 24 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,42 +12,42 @@ public static partial class Vector128
/// <inheritdoc cref="Vector4.All(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool All(Vector2 vector, float value) => Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() == 0b11;
internal static bool All(Vector2 vector, float value) => All(vector.AsVector128(), Vector2.Create(value).AsVector128());

Check failure on line 15 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build linux-x64 checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L15

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(15,70): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'System.Numerics.Vector2'

Check failure on line 15 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build linux-x64 checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L15

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(15,92): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 2: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'float'

Check failure on line 15 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L15

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(15,70): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'System.Numerics.Vector2'

Check failure on line 15 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L15

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(15,92): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 2: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'float'

Check failure on line 15 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L15

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(15,70): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'System.Numerics.Vector2'

Check failure on line 15 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L15

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(15,92): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 2: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'float'

Check failure on line 15 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-sve (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L15

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(15,70): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'System.Numerics.Vector2'

Check failure on line 15 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-sve (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L15

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(15,92): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 2: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'float'

/// <inheritdoc cref="Vector4.All(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool All(Vector3 vector, float value) => Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() == 0b111;
internal static bool All(Vector3 vector, float value) => All(vector.AsVector128(), Vector3.Create(value).AsVector128());

Check failure on line 20 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build linux-x64 checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L20

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(20,70): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'System.Numerics.Vector2'

Check failure on line 20 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build linux-x64 checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L20

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(20,92): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 2: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'float'

Check failure on line 20 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L20

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(20,70): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'System.Numerics.Vector2'

Check failure on line 20 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L20

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(20,92): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 2: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'float'

Check failure on line 20 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L20

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(20,70): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'System.Numerics.Vector2'

Check failure on line 20 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L20

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(20,92): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 2: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'float'

Check failure on line 20 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-sve (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L20

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(20,70): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'System.Numerics.Vector2'

Check failure on line 20 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-sve (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L20

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(20,92): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 2: cannot convert from 'System.Runtime.Intrinsics.Vector128<float>' to 'float'

/// <inheritdoc cref="Vector4.AllWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool AllWhereAllBitsSet(Vector2 vector) => Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() == 0b11;
internal static bool AllWhereAllBitsSet(Vector2 vector) => All(vector.AsVector128().AsInt32(), Vector2.AllBitsSet.AsVector128().AsInt32());

Check failure on line 25 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build linux-x64 checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L25

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(25,72): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<int>' to 'System.Numerics.Vector2'

Check failure on line 25 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-avx512 (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L25

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(25,72): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<int>' to 'System.Numerics.Vector2'

Check failure on line 25 in src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs

View check run for this annotation

Azure Pipelines / runtime-coreclr jitstress-isas-sve (Build coreclr Common Pri1 Test Build AnyOS AnyCPU checked)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs#L25

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs(25,72): error CS1503: (NETCORE_ENGINEERING_TELEMETRY=Build) Argument 1: cannot convert from 'System.Runtime.Intrinsics.Vector128<int>' to 'System.Numerics.Vector2'

/// <inheritdoc cref="Vector4.AllWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool AllWhereAllBitsSet(Vector3 vector) => Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() == 0b111;
internal static bool AllWhereAllBitsSet(Vector3 vector) => All(vector.AsVector128().AsInt32(), Vector3.AllBitsSet.AsVector128().AsInt32());

/// <inheritdoc cref="Vector4.Any(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool Any(Vector2 vector, float value) => Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() != 0b00;
internal static bool Any(Vector2 vector, float value) => Any(vector.AsVector128(), Create(value, value, -1, -1));

/// <inheritdoc cref="Vector4.Any(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool Any(Vector3 vector, float value) => Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() != 0b000;
internal static bool Any(Vector3 vector, float value) => Any(vector.AsVector128(), Create(value, value, value, -1));

/// <inheritdoc cref="Vector4.AnyWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool AnyWhereAllBitsSet(Vector2 vector) => Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() != 0b00;
internal static bool AnyWhereAllBitsSet(Vector2 vector) => Any(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet);

/// <inheritdoc cref="Vector4.AnyWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool AnyWhereAllBitsSet(Vector3 vector) => Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() != 0b000;
internal static bool AnyWhereAllBitsSet(Vector3 vector) => Any(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet);

/// <summary>Reinterprets a <see langword="Vector128&lt;Single&gt;" /> as a new <see cref="Plane" />.</summary>
/// <param name="value">The vector to reinterpret.</param>
Expand Down Expand Up @@ -225,97 +225,81 @@ public static Vector<T> AsVector<T>(this Vector128<T> value)
/// <inheritdoc cref="Vector4.Count(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int Count(Vector2 vector, float value) => BitOperations.PopCount(Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() & 0b11);
internal static int Count(Vector2 vector, float value) => Count(vector.AsVector128(), Create(value, value, -1, -1));

/// <inheritdoc cref="Vector4.Count(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int Count(Vector3 vector, float value) => BitOperations.PopCount(Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() & 0b111);
internal static int Count(Vector3 vector, float value) => Count(vector.AsVector128(), Create(value, value, value, -1));

/// <inheritdoc cref="Vector4.CountWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int CountWhereAllBitsSet(Vector2 vector) => BitOperations.PopCount(Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() & 0b11);
internal static int CountWhereAllBitsSet(Vector2 vector) => Count(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet);

/// <inheritdoc cref="Vector4.CountWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int CountWhereAllBitsSet(Vector3 vector) => BitOperations.PopCount(Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() & 0b111);
internal static int CountWhereAllBitsSet(Vector3 vector) => Count(vector.AsVector128().AsInt32(), Vector128<int>.AllBitsSet);

/// <inheritdoc cref="Vector4.IndexOf(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int IndexOf(Vector2 vector, float value)
{
int result = BitOperations.TrailingZeroCount(Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() & 0b11);
return (result != 32) ? result : -1;
}
internal static int IndexOf(Vector2 vector, float value) => IndexOf(vector.AsVector128(), Create(value, value, -1, -1));

/// <inheritdoc cref="Vector4.IndexOf(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int IndexOf(Vector3 vector, float value)
{
int result = BitOperations.TrailingZeroCount(Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() & 0b111);
return (result != 32) ? result : -1;
}
internal static int IndexOf(Vector3 vector, float value) => IndexOf(vector.AsVector128(), Create(value, value, value, -1));

/// <inheritdoc cref="Vector4.IndexOfWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int IndexOfWhereAllBitsSet(Vector2 vector)
{
int result = BitOperations.TrailingZeroCount(Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() & 0b11);
return (result != 32) ? result : -1;
}
internal static int IndexOfWhereAllBitsSet(Vector2 vector) => IndexOf(vector.AsVector128().AsInt32, Vector128<int>.AllBitsSet);

/// <inheritdoc cref="Vector4.IndexOfWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int IndexOfWhereAllBitsSet(Vector3 vector)
{
int result = BitOperations.TrailingZeroCount(Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() & 0b111);
return (result != 32) ? result : -1;
}
internal static int IndexOfWhereAllBitsSet(Vector3 vector) => IndexOf(vector.AsVector128().AsInt32, Vector128<int>.AllBitsSet);

/// <inheritdoc cref="Vector4.LastIndexOf(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int LastIndexOf(Vector2 vector, float value) => 31 - BitOperations.LeadingZeroCount(Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() & 0b11);
internal static int LastIndexOf(Vector2 vector, float value) => LastIndexOf(vector.AsVector128().AsInt32, Create(value, value, -1, -1));

/// <inheritdoc cref="Vector4.LastIndexOf(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int LastIndexOf(Vector3 vector, float value) => 31 - BitOperations.LeadingZeroCount(Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() & 0b111);
internal static int LastIndexOf(Vector3 vector, float value) => LastIndexOf(vector.AsVector128().AsInt32, Create(value, value, value, -1));

/// <inheritdoc cref="Vector4.LastIndexOfWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int LastIndexOfWhereAllBitsSet(Vector2 vector) => 31 - BitOperations.LeadingZeroCount(Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() & 0b11);
internal static int LastIndexOfWhereAllBitsSet(Vector2 vector) => LastIndexOf(vector.AsVector128().AsInt32, Vector128<int>.AllBitsSet);

/// <inheritdoc cref="Vector4.LastIndexOfWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static int LastIndexOfWhereAllBitsSet(Vector3 vector) => 31 - BitOperations.LeadingZeroCount(Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() & 0b111);
internal static int LastIndexOfWhereAllBitsSet(Vector3 vector) => LastIndexOf(vector.AsVector128().AsInt32, Vector128<int>.AllBitsSet);

/// <inheritdoc cref="Vector4.None(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool None(Vector2 vector, float value) => Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() == 0b00;
internal static bool None(Vector2 vector, float value) => None(vector.AsVector128().AsInt32, Create(value, value, -1, -1));

/// <inheritdoc cref="Vector4.None(Vector4, float)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool None(Vector3 vector, float value) => Equals(vector.AsVector128Unsafe(), Create(value)).ExtractMostSignificantBits() == 0b000;
internal static bool None(Vector3 vector, float value) => None(vector.AsVector128().AsInt32, Create(value, value, value, -1));

/// <inheritdoc cref="Vector4.NoneWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool NoneWhereAllBitsSet(Vector2 vector) => Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() == 0b00;
internal static bool NoneWhereAllBitsSet(Vector2 vector) => None(vector.AsVector128().AsInt32, Vector128<int>.AllBitsSet);

/// <inheritdoc cref="Vector4.NoneWhereAllBitsSet(Vector4)" />
[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static bool NoneWhereAllBitsSet(Vector3 vector) => Equals(vector.AsVector128Unsafe().AsInt32(), Create(-1)).ExtractMostSignificantBits() == 0b000;
internal static bool NoneWhereAllBitsSet(Vector3 vector) => None(vector.AsVector128().AsInt32, Vector128<int>.AllBitsSet);
}
}

0 comments on commit a242714

Please sign in to comment.