20 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
21 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<U>();
28 return vector.As<
T,
byte>();
34 return vector.As<
T,
double>();
40 return vector.As<
T,
short>();
46 return vector.As<
T,
int>();
52 return vector.As<
T,
long>();
59 return vector.As<
T, sbyte>();
65 return vector.As<
T,
float>();
72 return vector.As<
T, ushort>();
79 return vector.As<
T, uint>();
86 return vector.As<
T, ulong>();
108 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
131 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
144 return SoftwareFallback(
value);
147 byte*
source = stackalloc
byte[16]
149 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
163 return SoftwareFallback(
value);
178 return SoftwareFallback(
value);
193 return SoftwareFallback(
value);
208 return SoftwareFallback(
value);
217 [CLSCompliant(
false)]
224 return SoftwareFallback(
value);
227 sbyte*
source = stackalloc sbyte[16]
229 value,
value,
value,
value,
value,
value,
value,
value,
value,
value,
243 return SoftwareFallback(
value);
252 [CLSCompliant(
false)]
259 return SoftwareFallback(
value);
268 [CLSCompliant(
false)]
275 return SoftwareFallback(
value);
284 [CLSCompliant(
false)]
291 return SoftwareFallback(
value);
300 public static Vector128<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)
304 return Create(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
306 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
307 unsafe
static Vector128<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)
309 byte*
source = stackalloc
byte[16]
311 e0, e1, e2, e3, e4, e5, e6, e7, e8, e9,
312 e10, e11, e12, e13, e14, e15
325 return SoftwareFallback(e0, e1);
328 double*
source = stackalloc
double[2] { e0, e1 };
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 Vector128<short> SoftwareFallback(
short e0,
short e1,
short e2,
short e3,
short e4,
short e5,
short e6,
short e7)
343 short*
source = stackalloc
short[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 Vector128<int> SoftwareFallback(
int e0,
int e1,
int e2,
int e3)
358 int*
source = stackalloc
int[4] { e0, e1, e2, e3 };
370 return SoftwareFallback(e0, e1);
373 long*
source = stackalloc
long[2] { e0, e1 };
379 [CLSCompliant(
false)]
380 public static Vector128<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)
384 return Create(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
386 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
387 unsafe
static Vector128<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)
389 sbyte*
source = stackalloc sbyte[16]
391 e0, e1, e2, e3, e4, e5, e6, e7, e8, e9,
392 e10, e11, e12, e13, e14, e15
403 return Create(e0, e1, e2, e3);
405 return SoftwareFallback(e0, e1, e2, e3);
406 unsafe
static Vector128<float> SoftwareFallback(
float e0,
float e1,
float e2,
float e3)
408 float*
source = stackalloc
float[4] { e0, e1, e2, e3 };
414 [CLSCompliant(
false)]
415 public static Vector128<ushort> Create(ushort e0, ushort e1, ushort e2, ushort e3, ushort e4, ushort e5, ushort e6, ushort e7)
419 return Create(e0, e1, e2, e3, e4, e5, e6, e7);
421 return SoftwareFallback(e0, e1, e2, e3, e4, e5, e6, e7);
422 unsafe
static Vector128<ushort> SoftwareFallback(ushort e0, ushort e1, ushort e2, ushort e3, ushort e4, ushort e5, ushort e6, ushort e7)
424 ushort*
source = stackalloc ushort[8] { e0, e1, e2, e3, e4, e5, e6, e7 };
430 [CLSCompliant(
false)]
435 return Create(e0, e1, e2, e3);
437 return SoftwareFallback(e0, e1, e2, e3);
438 unsafe
static Vector128<uint> SoftwareFallback(uint e0, uint e1, uint e2, uint e3)
440 uint*
source = stackalloc uint[4] { e0, e1, e2, e3 };
446 [CLSCompliant(
false)]
453 return SoftwareFallback(e0, e1);
456 ulong*
source = stackalloc ulong[2] { e0, e1 };
467 return SoftwareFallback(lower, upper);
473 Unsafe.Add(ref reference, 1) = upper;
484 return SoftwareFallback(lower, upper);
490 Unsafe.Add(ref reference, 1) = upper;
501 return SoftwareFallback(lower, upper);
507 Unsafe.Add(ref reference, 1) = upper;
518 return SoftwareFallback(lower, upper);
524 Unsafe.Add(ref reference, 1) = upper;
535 return SoftwareFallback(lower, upper);
541 Unsafe.Add(ref reference, 1) = upper;
547 [CLSCompliant(
false)]
553 return SoftwareFallback(lower, upper);
559 Unsafe.Add(ref reference, 1) = upper;
570 return SoftwareFallback(lower, upper);
576 Unsafe.Add(ref reference, 1) = upper;
582 [CLSCompliant(
false)]
588 return SoftwareFallback(lower, upper);
594 Unsafe.Add(ref reference, 1) = upper;
600 [CLSCompliant(
false)]
606 return SoftwareFallback(lower, upper);
612 Unsafe.Add(ref reference, 1) = upper;
618 [CLSCompliant(
false)]
624 return SoftwareFallback(lower, upper);
630 Unsafe.Add(ref reference, 1) = upper;
645 return SoftwareFallback(
value);
664 return SoftwareFallback(
value);
683 return SoftwareFallback(
value);
702 return SoftwareFallback(
value);
720 return SoftwareFallback(
value);
730 [CLSCompliant(
false)]
740 return SoftwareFallback(
value);
759 return SoftwareFallback(
value);
769 [CLSCompliant(
false)]
779 return SoftwareFallback(
value);
789 [CLSCompliant(
false)]
799 return SoftwareFallback(
value);
809 [CLSCompliant(
false)]
819 return SoftwareFallback(
value);
831 byte* ptr = stackalloc
byte[16];
839 double* ptr = stackalloc
double[2];
847 short* ptr = stackalloc
short[8];
855 int* ptr = stackalloc
int[4];
863 long* ptr = stackalloc
long[2];
869 [CLSCompliant(
false)]
872 sbyte* ptr = stackalloc sbyte[16];
880 float* ptr = stackalloc
float[4];
886 [CLSCompliant(
false)]
889 ushort* ptr = stackalloc ushort[8];
895 [CLSCompliant(
false)]
898 uint* ptr = stackalloc uint[4];
904 [CLSCompliant(
false)]
907 ulong* ptr = stackalloc ulong[2];
915 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
926 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
939 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
949 return SoftwareFallback(vector,
value);
952 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
962 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
972 return SoftwareFallback(vector,
value);
975 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
985 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
992 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1001 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1002 byte*
source = stackalloc
byte[32];
1007[StructLayout(
LayoutKind.Sequential, Size = 16)]
1009[DebuggerDisplay(
"{DisplayString,nq}")]
1022 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1023 return 16 /
Unsafe.SizeOf<T>();
1032 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1042 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1064 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)))
1066 return typeof(T) == typeof(
double);
1075 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1083 if (typeof(T) == typeof(
double))
1091 return SoftwareFallback(in
this,
other);
1094 for (
int i = 0; i <
Count; i++)
1105 public override bool Equals([NotNullWhen(
true)]
object?
obj)
1116 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1118 for (
int i = 0; i <
Count; i++)
1120 hashCode.
Add(this.GetElement(i).GetHashCode());
1122 return hashCode.ToHashCode();
1127 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1128 int num =
Count - 1;
1129 Span<char> initialBuffer = stackalloc
char[64];
1132 valueStringBuilder.
Append(
'<');
1133 for (
int i = 0; i < num; i++)
1136 valueStringBuilder.
Append(
',');
1137 valueStringBuilder.
Append(
' ');
1140 valueStringBuilder.
Append(
'>');
1141 return valueStringBuilder.
ToString();
static CultureInfo InvariantCulture
static new bool IsSupported
static new bool IsSupported
static Vector128< long > AsInt64< T >(this Vector128< T > vector)
static Vector128< long > Create(long e0, long e1)
override int GetHashCode()
static Vector128< byte > Create(byte value)
static Vector128< uint > AsUInt32< T >(this Vector128< T > vector)
static unsafe Vector128< long > CreateScalarUnsafe(long value)
static Vector128< double > CreateScalar(double value)
static Vector128< float > AsVector128(this Vector4 value)
static unsafe Vector128< ushort > CreateScalarUnsafe(ushort value)
static Vector128< long > Create(long value)
static Vector128< int > AsInt32< T >(this Vector128< T > vector)
static Vector128< ulong > Create(ulong e0, ulong e1)
static Vector128< T > WithElement< T >(this Vector128< T > vector, int index, T value)
static Vector128< byte > CreateScalar(byte value)
static Vector64< T > GetUpper< T >(this Vector128< T > vector)
static Vector128< T > WithLower< T >(this Vector128< T > vector, Vector64< T > value)
static Vector2 AsVector2(this Vector128< float > value)
static Vector128< T > AllBitsSet
static Vector128< ulong > AsUInt64< T >(this Vector128< T > vector)
static Vector< T > AsVector< T >(this Vector128< T > value)
static Vector128< float > AsSingle< T >(this Vector128< T > vector)
static unsafe Vector128< float > CreateScalarUnsafe(float value)
static Vector128< double > Create(double e0, double e1)
static Vector128< ulong > Create(ulong value)
static unsafe Vector128< uint > CreateScalarUnsafe(uint value)
static Vector4 AsVector4(this Vector128< float > value)
static Vector128< float > AsVector128(this Vector3 value)
bool Equals(Vector128< T > other)
static Vector128< 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)
static Vector128< int > CreateScalar(int value)
static Vector128< float > Create(float e0, float e1, float e2, float e3)
static Vector128< short > CreateScalar(short value)
static Vector128< byte > AsByte< T >(this Vector128< T > vector)
static Vector128< double > Create(Vector64< double > lower, Vector64< double > upper)
static T ToScalar< T >(this Vector128< T > vector)
static Vector128< sbyte > AsSByte< T >(this Vector128< T > vector)
static Vector128< T > AsVector128< T >(this Vector< T > value)
static unsafe Vector128< sbyte > CreateScalarUnsafe(sbyte value)
static Vector128< float > Create(Vector64< float > lower, Vector64< float > upper)
static Vector128< float > CreateScalar(float value)
static unsafe Vector128< byte > CreateScalarUnsafe(byte value)
static Vector128< 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)
static Vector128< short > Create(short e0, short e1, short e2, short e3, short e4, short e5, short e6, short e7)
static Vector256< T > ToVector256< T >(this Vector128< T > vector)
static Vector128< short > AsInt16< T >(this Vector128< T > vector)
static Vector128< ushort > AsUInt16< T >(this Vector128< T > vector)
static Vector128< long > Create(Vector64< long > lower, Vector64< long > upper)
static Vector128< T > WithUpper< T >(this Vector128< T > vector, Vector64< T > value)
static Vector128< uint > Create(uint value)
static Vector64< T > GetLower< T >(this Vector128< T > vector)
static Vector128< U > As< T, U >(this Vector128< T > vector)
static unsafe Vector128< short > CreateScalarUnsafe(short value)
static Vector128< short > Create(short value)
override string ToString()
static Vector128< ushort > Create(ushort e0, ushort e1, ushort e2, ushort e3, ushort e4, ushort e5, ushort e6, ushort e7)
static Vector128< short > Create(Vector64< short > lower, Vector64< short > upper)
static Vector128< double > AsDouble< T >(this Vector128< T > vector)
static unsafe Vector128< int > CreateScalarUnsafe(int value)
static Vector128< T > Zero
static Vector128< int > Create(Vector64< int > lower, Vector64< int > upper)
static Vector128< sbyte > Create(Vector64< sbyte > lower, Vector64< sbyte > upper)
static Vector128< ushort > Create(ushort value)
static Vector128< int > Create(int value)
static Vector128< uint > Create(Vector64< uint > lower, Vector64< uint > upper)
static Vector128< sbyte > CreateScalar(sbyte value)
static Vector128< float > Create(float value)
static Vector128< uint > Create(uint e0, uint e1, uint e2, uint e3)
override bool Equals([NotNullWhen(true)] object? obj)
static unsafe Vector128< ulong > CreateScalarUnsafe(ulong value)
static Vector128< ushort > CreateScalar(ushort value)
static Vector128< byte > Create(Vector64< byte > lower, Vector64< byte > upper)
static T GetElement< T >(this Vector128< T > vector, int index)
static Vector128< int > Create(int e0, int e1, int e2, int e3)
static Vector3 AsVector3(this Vector128< float > value)
static Vector128< ulong > CreateScalar(ulong value)
static unsafe Vector128< double > CreateScalarUnsafe(double value)
static Vector128< sbyte > Create(sbyte value)
static Vector128< float > AsVector128(this Vector2 value)
static Vector128< uint > CreateScalar(uint value)
static unsafe Vector256< T > ToVector256Unsafe< T >(this Vector128< T > vector)
static Vector128< long > CreateScalar(long value)
static Vector128< double > Create(double value)
static Vector128< ulong > Create(Vector64< ulong > lower, Vector64< ulong > upper)
static Vector128< ushort > Create(Vector64< ushort > lower, Vector64< ushort > upper)
static Vector256< T > Zero
static new bool IsSupported
static Vector128< ulong > ConvertScalarToVector128UInt64(ulong value)
static Vector128< long > ConvertScalarToVector128Int64(long value)
static int MoveMask(Vector128< sbyte > value)
static Vector128< sbyte > CompareEqual(Vector128< sbyte > left, Vector128< sbyte > right)
static Vector128< double > MoveScalar(Vector128< double > upper, Vector128< double > value)
static Vector128< int > ConvertScalarToVector128Int32(int value)
static new bool IsSupported
static Vector128< uint > ConvertScalarToVector128UInt32(uint value)
static Vector128< float > CompareEqual(Vector128< float > left, Vector128< float > right)
static int MoveMask(Vector128< float > value)
static new bool IsSupported
static Vector128< float > MoveScalar(Vector128< float > upper, Vector128< float > value)
static string NotSupported_Type
static void ThrowArgumentOutOfRangeException(System.ExceptionArgument argument)
override string ToString()