19 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
20 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<U>();
27 return vector.As<
T,
byte>();
33 return vector.As<
T,
double>();
39 return vector.As<
T,
short>();
45 return vector.As<
T,
int>();
51 return vector.As<
T,
long>();
58 return vector.As<
T, sbyte>();
64 return vector.As<
T,
float>();
71 return vector.As<
T, ushort>();
78 return vector.As<
T, uint>();
85 return vector.As<
T, ulong>();
91 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
100 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
111 return SoftwareFallback(
value);
114 byte*
source = stackalloc
byte[32]
116 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
117 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
118 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
132 return SoftwareFallback(
value);
147 return SoftwareFallback(
value);
150 short*
source = stackalloc
short[16]
152 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
166 return SoftwareFallback(
value);
181 return SoftwareFallback(
value);
190 [CLSCompliant(
false)]
197 return SoftwareFallback(
value);
200 sbyte*
source = stackalloc sbyte[32]
202 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
203 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
204 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
218 return SoftwareFallback(
value);
227 [CLSCompliant(
false)]
234 return SoftwareFallback(
value);
237 ushort*
source = stackalloc ushort[16]
239 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
247 [CLSCompliant(
false)]
254 return SoftwareFallback(
value);
263 [CLSCompliant(
false)]
270 return SoftwareFallback(
value);
279 public static Vector256<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,
byte e16,
byte e17,
byte e18,
byte e19,
byte e20,
byte e21,
byte e22,
byte e23,
byte e24,
byte e25,
byte e26,
byte e27,
byte e28,
byte e29,
byte e30,
byte e31)
283 return Create(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31);
285 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31);
286 unsafe
static Vector256<byte> SoftwareFallback(
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,
byte e16,
byte e17,
byte e18,
byte e19,
byte e20,
byte e21,
byte e22,
byte e23,
byte e24,
byte e25,
byte e26,
byte e27,
byte e28,
byte e29,
byte e30,
byte e31)
288 byte*
source = stackalloc
byte[32]
290 e0, e1, e2, e3, e4, e5, e6, e7, e8, e9,
291 e10, e11, e12, e13, e14, e15, e16, e17, e18, e19,
292 e20, e21, e22, e23, e24, e25, e26, e27, e28, e29,
304 return Create(e0, e1, e2, e3);
306 return SoftwareFallback(e0, e1, e2, e3);
307 unsafe
static Vector256<double> SoftwareFallback(
double e0,
double e1,
double e2,
double e3)
309 double*
source = stackalloc
double[4] { e0, e1, e2, e3 };
315 public static Vector256<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)
319 return Create(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
321 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
322 unsafe
static Vector256<short> SoftwareFallback(
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)
324 short*
source = stackalloc
short[16]
326 e0, e1, e2, e3, e4, e5, e6, e7, e8, e9,
327 e10, e11, e12, e13, e14, e15
338 return Create(e0, e1, e2, e3, e4, e5, e6, e7);
340 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7);
341 unsafe
static Vector256<int> SoftwareFallback(
int e0,
int e1,
int e2,
int e3,
int e4,
int e5,
int e6,
int e7)
343 int*
source = stackalloc
int[8] { e0, e1, e2, e3, e4, e5, e6, e7 };
353 return Create(e0, e1, e2, e3);
355 return SoftwareFallback(e0, e1, e2, e3);
356 unsafe
static Vector256<long> SoftwareFallback(
long e0,
long e1,
long e2,
long e3)
358 long*
source = stackalloc
long[4] { e0, e1, e2, e3 };
364 [CLSCompliant(
false)]
365 public static Vector256<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, sbyte e16, sbyte e17, sbyte e18, sbyte e19, sbyte e20, sbyte e21, sbyte e22, sbyte e23, sbyte e24, sbyte e25, sbyte e26, sbyte e27, sbyte e28, sbyte e29, sbyte e30, sbyte e31)
369 return Create(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31);
371 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31);
372 unsafe
static Vector256<sbyte> SoftwareFallback(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, sbyte e16, sbyte e17, sbyte e18, sbyte e19, sbyte e20, sbyte e21, sbyte e22, sbyte e23, sbyte e24, sbyte e25, sbyte e26, sbyte e27, sbyte e28, sbyte e29, sbyte e30, sbyte e31)
374 sbyte*
source = stackalloc sbyte[32]
376 e0, e1, e2, e3, e4, e5, e6, e7, e8, e9,
377 e10, e11, e12, e13, e14, e15, e16, e17, e18, e19,
378 e20, e21, e22, e23, e24, e25, e26, e27, e28, e29,
390 return Create(e0, e1, e2, e3, e4, e5, e6, e7);
392 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7);
393 unsafe
static Vector256<float> SoftwareFallback(
float e0,
float e1,
float e2,
float e3,
float e4,
float e5,
float e6,
float e7)
395 float*
source = stackalloc
float[8] { e0, e1, e2, e3, e4, e5, e6, e7 };
401 [CLSCompliant(
false)]
402 public static Vector256<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)
406 return Create(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
408 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
409 unsafe
static Vector256<ushort> SoftwareFallback(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)
411 ushort*
source = stackalloc ushort[16]
413 e0, e1, e2, e3, e4, e5, e6, e7, e8, e9,
414 e10, e11, e12, e13, e14, e15
421 [CLSCompliant(
false)]
426 return Create(e0, e1, e2, e3, e4, e5, e6, e7);
428 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7);
429 unsafe
static Vector256<uint> SoftwareFallback(uint e0, uint e1, uint e2, uint e3, uint e4, uint e5, uint e6, uint e7)
431 uint*
source = stackalloc uint[8] { e0, e1, e2, e3, e4, e5, e6, e7 };
437 [CLSCompliant(
false)]
442 return Create(e0, e1, e2, e3);
444 return SoftwareFallback(e0, e1, e2, e3);
445 unsafe
static Vector256<ulong> SoftwareFallback(ulong e0, ulong e1, ulong e2, ulong e3)
447 ulong*
source = stackalloc ulong[4] { e0, e1, e2, e3 };
458 return vector.WithUpper(upper);
460 return SoftwareFallback(lower, upper);
466 Unsafe.Add(ref reference, 1) = upper;
477 return vector.WithUpper(upper);
479 return SoftwareFallback(lower, upper);
485 Unsafe.Add(ref reference, 1) = upper;
496 return vector.WithUpper(upper);
498 return SoftwareFallback(lower, upper);
504 Unsafe.Add(ref reference, 1) = upper;
515 return vector.WithUpper(upper);
517 return SoftwareFallback(lower, upper);
523 Unsafe.Add(ref reference, 1) = upper;
534 return vector.WithUpper(upper);
536 return SoftwareFallback(lower, upper);
542 Unsafe.Add(ref reference, 1) = upper;
548 [CLSCompliant(
false)]
554 return vector.WithUpper(upper);
556 return SoftwareFallback(lower, upper);
562 Unsafe.Add(ref reference, 1) = upper;
573 return vector.WithUpper(upper);
575 return SoftwareFallback(lower, upper);
581 Unsafe.Add(ref reference, 1) = upper;
587 [CLSCompliant(
false)]
593 return vector.WithUpper(upper);
595 return SoftwareFallback(lower, upper);
601 Unsafe.Add(ref reference, 1) = upper;
607 [CLSCompliant(
false)]
613 return vector.WithUpper(upper);
615 return SoftwareFallback(lower, upper);
621 Unsafe.Add(ref reference, 1) = upper;
627 [CLSCompliant(
false)]
633 return vector.WithUpper(upper);
635 return SoftwareFallback(lower, upper);
641 Unsafe.Add(ref reference, 1) = upper;
653 return SoftwareFallback(
value);
669 return SoftwareFallback(
value);
685 return SoftwareFallback(
value);
701 return SoftwareFallback(
value);
717 return SoftwareFallback(
value);
727 [CLSCompliant(
false)]
734 return SoftwareFallback(
value);
750 return SoftwareFallback(
value);
760 [CLSCompliant(
false)]
767 return SoftwareFallback(
value);
777 [CLSCompliant(
false)]
784 return SoftwareFallback(
value);
794 [CLSCompliant(
false)]
801 return SoftwareFallback(
value);
813 byte* ptr = stackalloc
byte[32];
821 double* ptr = stackalloc
double[4];
829 short* ptr = stackalloc
short[16];
837 int* ptr = stackalloc
int[8];
845 long* ptr = stackalloc
long[4];
851 [CLSCompliant(
false)]
854 sbyte* ptr = stackalloc sbyte[32];
862 float* ptr = stackalloc
float[8];
868 [CLSCompliant(
false)]
871 ushort* ptr = stackalloc ushort[16];
877 [CLSCompliant(
false)]
880 uint* ptr = stackalloc uint[8];
886 [CLSCompliant(
false)]
889 ulong* ptr = stackalloc ulong[4];
897 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
908 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
921 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
928 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
929 if (
Avx2.
IsSupported && typeof(T) != typeof(
float) && typeof(T) != typeof(
double))
937 return SoftwareFallback(vector,
value);
949 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
950 if (
Avx2.
IsSupported && typeof(T) != typeof(
float) && typeof(T) != typeof(
double))
958 return SoftwareFallback(vector);
968 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
969 if (
Avx2.
IsSupported && typeof(T) != typeof(
float) && typeof(T) != typeof(
double))
977 return SoftwareFallback(vector,
value);
989 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
993[StructLayout(
LayoutKind.Sequential, Size = 32)]
995[DebuggerDisplay(
"{DisplayString,nq}")]
999 private readonly ulong
_00;
1012 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1013 return 32 /
Unsafe.SizeOf<T>();
1022 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1032 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1054 if (!(typeof(T) == typeof(
byte)) && !(typeof(T) == typeof(sbyte)) && !(typeof(T) == typeof(
short)) && !(typeof(T) == typeof(ushort)) && !(typeof(T) == typeof(
int)) && !(typeof(T) == typeof(uint)) && !(typeof(T) == typeof(
long)) && !(typeof(T) == typeof(ulong)) && !(typeof(T) == typeof(
float)))
1056 return typeof(T) == typeof(
double);
1067 if (typeof(T) == typeof(
float))
1072 if (typeof(T) == typeof(
double))
1083 return SoftwareFallback(in
this,
other);
1086 for (
int i = 0; i <
Count; i++)
1097 public override bool Equals([NotNullWhen(
true)]
object?
obj)
1108 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1110 for (
int i = 0; i <
Count; i++)
1112 hashCode.
Add(this.GetElement(i).GetHashCode());
1114 return hashCode.ToHashCode();
1119 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1120 int num =
Count - 1;
1121 Span<char> initialBuffer = stackalloc
char[64];
1124 valueStringBuilder.
Append(
'<');
1125 for (
int i = 0; i < num; i++)
1128 valueStringBuilder.
Append(
',');
1129 valueStringBuilder.
Append(
' ');
1132 valueStringBuilder.
Append(
'>');
1133 return valueStringBuilder.
ToString();
static CultureInfo InvariantCulture
static Vector128< byte > CreateScalar(byte value)
static Vector256< byte > CreateScalar(byte value)
static Vector256< ulong > Create(ulong value)
static Vector256< double > Create(double e0, double e1, double e2, double e3)
static Vector256< ulong > AsUInt64< T >(this Vector256< T > vector)
static Vector256< int > Create(int value)
static Vector256< uint > Create(uint e0, uint e1, uint e2, uint e3, uint e4, uint e5, uint e6, uint e7)
static Vector256< sbyte > Create(Vector128< sbyte > lower, Vector128< sbyte > upper)
static Vector256< long > AsInt64< T >(this Vector256< T > vector)
static Vector256< ushort > Create(ushort value)
static T GetElement< T >(this Vector256< T > vector, int index)
static Vector256< double > AsDouble< T >(this Vector256< T > vector)
static Vector256< 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)
static Vector256< short > AsInt16< T >(this Vector256< T > vector)
static Vector256< T > AllBitsSet
static Vector256< int > Create(int e0, int e1, int e2, int e3, int e4, int e5, int e6, int e7)
static Vector256< int > Create(Vector128< int > lower, Vector128< int > upper)
static Vector256< T > WithElement< T >(this Vector256< T > vector, int index, T value)
static Vector256< ushort > AsUInt16< T >(this Vector256< T > vector)
override string ToString()
static unsafe Vector256< sbyte > CreateScalarUnsafe(sbyte value)
static Vector256< T > WithLower< T >(this Vector256< T > vector, Vector128< T > value)
static Vector256< short > CreateScalar(short value)
static Vector256< T > Zero
static Vector256< sbyte > AsSByte< T >(this Vector256< T > vector)
static Vector256< double > CreateScalar(double value)
static Vector256< uint > CreateScalar(uint value)
static Vector256< float > Create(Vector128< float > lower, Vector128< float > upper)
static unsafe Vector256< byte > CreateScalarUnsafe(byte value)
static Vector256< T > WithUpper< T >(this Vector256< T > vector, Vector128< T > value)
static Vector256< T > AsVector256< T >(this Vector< T > value)
static Vector256< ulong > Create(Vector128< ulong > lower, Vector128< ulong > upper)
static Vector128< T > GetUpper< T >(this Vector256< T > vector)
static Vector256< uint > AsUInt32< T >(this Vector256< T > vector)
static Vector256< float > AsSingle< T >(this Vector256< T > vector)
static Vector256< uint > Create(uint value)
bool Equals(Vector256< T > other)
static Vector256< ulong > CreateScalar(ulong value)
static Vector256< double > Create(double value)
static unsafe Vector256< float > CreateScalarUnsafe(float value)
static Vector256< long > Create(long e0, long e1, long e2, long e3)
static unsafe Vector256< uint > CreateScalarUnsafe(uint value)
static Vector256< 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, byte e16, byte e17, byte e18, byte e19, byte e20, byte e21, byte e22, byte e23, byte e24, byte e25, byte e26, byte e27, byte e28, byte e29, byte e30, byte e31)
static Vector256< byte > Create(Vector128< byte > lower, Vector128< byte > upper)
static Vector256< long > Create(long value)
static unsafe Vector256< short > CreateScalarUnsafe(short value)
static Vector< T > AsVector< T >(this Vector256< T > value)
static unsafe Vector256< ushort > CreateScalarUnsafe(ushort value)
static Vector256< double > Create(Vector128< double > lower, Vector128< double > upper)
static Vector256< sbyte > CreateScalar(sbyte value)
static T ToScalar< T >(this Vector256< T > vector)
static Vector256< float > Create(float value)
override int GetHashCode()
static Vector256< U > As< T, U >(this Vector256< T > vector)
static Vector256< float > CreateScalar(float value)
static Vector256< ushort > Create(Vector128< ushort > lower, Vector128< ushort > upper)
static unsafe Vector256< long > CreateScalarUnsafe(long value)
static Vector256< float > Create(float e0, float e1, float e2, float e3, float e4, float e5, float e6, float e7)
static Vector256< long > CreateScalar(long value)
static Vector256< ushort > CreateScalar(ushort value)
static Vector256< ulong > Create(ulong e0, ulong e1, ulong e2, ulong e3)
static Vector256< short > Create(Vector128< short > lower, Vector128< short > upper)
static Vector256< uint > Create(Vector128< uint > lower, Vector128< uint > upper)
static Vector256< int > AsInt32< T >(this Vector256< T > vector)
static Vector128< T > GetLower< T >(this Vector256< T > vector)
static Vector256< long > Create(Vector128< long > lower, Vector128< long > upper)
static Vector256< 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)
static Vector256< byte > Create(byte value)
static Vector256< short > Create(short value)
static Vector256< byte > AsByte< T >(this Vector256< T > vector)
static Vector256< 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, sbyte e16, sbyte e17, sbyte e18, sbyte e19, sbyte e20, sbyte e21, sbyte e22, sbyte e23, sbyte e24, sbyte e25, sbyte e26, sbyte e27, sbyte e28, sbyte e29, sbyte e30, sbyte e31)
static Vector256< sbyte > Create(sbyte value)
static unsafe Vector256< ulong > CreateScalarUnsafe(ulong value)
static Vector256< int > CreateScalar(int value)
static unsafe Vector256< double > CreateScalarUnsafe(double value)
override bool Equals([NotNullWhen(true)] object? obj)
static unsafe Vector256< int > CreateScalarUnsafe(int value)
static int MoveMask(Vector256< sbyte > value)
static Vector256< sbyte > CompareEqual(Vector256< sbyte > left, Vector256< sbyte > right)
static new bool IsSupported
static new Vector128< sbyte > ExtractVector128(Vector256< sbyte > value, byte index)
static new Vector256< sbyte > InsertVector128(Vector256< sbyte > value, Vector128< sbyte > data, byte index)
static new bool IsSupported
static int MoveMask(Vector256< float > value)
static Vector128< byte > ExtractVector128(Vector256< byte > value, byte index)
static Vector256< byte > InsertVector128(Vector256< byte > value, Vector128< byte > data, byte index)
static Vector128< float > Compare(Vector128< float > left, Vector128< float > right, FloatComparisonMode mode)
static new bool IsSupported
static string NotSupported_Type
static void ThrowArgumentOutOfRangeException(System.ExceptionArgument argument)
override string ToString()