Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Vector256.cs
Go to the documentation of this file.
8using System.Text;
10
12
13public static class Vector256
14{
15 [MethodImpl(MethodImplOptions.AggressiveInlining)]
16 [Intrinsic]
17 public static Vector256<U> As<T, U>(this Vector256<T> vector) where T : struct where U : struct
18 {
19 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
20 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<U>();
21 return Unsafe.As<Vector256<T>, Vector256<U>>(ref vector);
22 }
23
24 [Intrinsic]
25 public static Vector256<byte> AsByte<T>(this Vector256<T> vector) where T : struct
26 {
27 return vector.As<T, byte>();
28 }
29
30 [Intrinsic]
31 public static Vector256<double> AsDouble<T>(this Vector256<T> vector) where T : struct
32 {
33 return vector.As<T, double>();
34 }
35
36 [Intrinsic]
37 public static Vector256<short> AsInt16<T>(this Vector256<T> vector) where T : struct
38 {
39 return vector.As<T, short>();
40 }
41
42 [Intrinsic]
43 public static Vector256<int> AsInt32<T>(this Vector256<T> vector) where T : struct
44 {
45 return vector.As<T, int>();
46 }
47
48 [Intrinsic]
49 public static Vector256<long> AsInt64<T>(this Vector256<T> vector) where T : struct
50 {
51 return vector.As<T, long>();
52 }
53
54 [Intrinsic]
55 [CLSCompliant(false)]
56 public static Vector256<sbyte> AsSByte<T>(this Vector256<T> vector) where T : struct
57 {
58 return vector.As<T, sbyte>();
59 }
60
61 [Intrinsic]
62 public static Vector256<float> AsSingle<T>(this Vector256<T> vector) where T : struct
63 {
64 return vector.As<T, float>();
65 }
66
67 [Intrinsic]
68 [CLSCompliant(false)]
69 public static Vector256<ushort> AsUInt16<T>(this Vector256<T> vector) where T : struct
70 {
71 return vector.As<T, ushort>();
72 }
73
74 [Intrinsic]
75 [CLSCompliant(false)]
76 public static Vector256<uint> AsUInt32<T>(this Vector256<T> vector) where T : struct
77 {
78 return vector.As<T, uint>();
79 }
80
81 [Intrinsic]
82 [CLSCompliant(false)]
83 public static Vector256<ulong> AsUInt64<T>(this Vector256<T> vector) where T : struct
84 {
85 return vector.As<T, ulong>();
86 }
87
88 [Intrinsic]
89 public static Vector256<T> AsVector256<T>(this Vector<T> value) where T : struct
90 {
91 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
93 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<T>, byte>(ref source), value);
94 return source;
95 }
96
97 [Intrinsic]
98 public static Vector<T> AsVector<T>(this Vector256<T> value) where T : struct
99 {
100 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
101 return Unsafe.As<Vector256<T>, Vector<T>>(ref value);
102 }
103
104 [Intrinsic]
105 public static Vector256<byte> Create(byte value)
106 {
107 if (Avx.IsSupported)
108 {
109 return Create(value);
110 }
111 return SoftwareFallback(value);
112 unsafe static Vector256<byte> SoftwareFallback(byte value)
113 {
114 byte* source = stackalloc byte[32]
115 {
119 value, value
120 };
121 return Unsafe.AsRef<Vector256<byte>>(source);
122 }
123 }
124
125 [Intrinsic]
126 public static Vector256<double> Create(double value)
127 {
128 if (Avx.IsSupported)
129 {
130 return Create(value);
131 }
132 return SoftwareFallback(value);
133 unsafe static Vector256<double> SoftwareFallback(double value)
134 {
135 double* source = stackalloc double[4] { value, value, value, value };
136 return Unsafe.AsRef<Vector256<double>>(source);
137 }
138 }
139
140 [Intrinsic]
141 public static Vector256<short> Create(short value)
142 {
143 if (Avx.IsSupported)
144 {
145 return Create(value);
146 }
147 return SoftwareFallback(value);
148 unsafe static Vector256<short> SoftwareFallback(short value)
149 {
150 short* source = stackalloc short[16]
151 {
154 };
155 return Unsafe.AsRef<Vector256<short>>(source);
156 }
157 }
158
159 [Intrinsic]
160 public static Vector256<int> Create(int value)
161 {
162 if (Avx.IsSupported)
163 {
164 return Create(value);
165 }
166 return SoftwareFallback(value);
167 unsafe static Vector256<int> SoftwareFallback(int value)
168 {
169 int* source = stackalloc int[8] { value, value, value, value, value, value, value, value };
170 return Unsafe.AsRef<Vector256<int>>(source);
171 }
172 }
173
174 [Intrinsic]
175 public static Vector256<long> Create(long value)
176 {
178 {
179 return Create(value);
180 }
181 return SoftwareFallback(value);
182 unsafe static Vector256<long> SoftwareFallback(long value)
183 {
184 long* source = stackalloc long[4] { value, value, value, value };
185 return Unsafe.AsRef<Vector256<long>>(source);
186 }
187 }
188
189 [Intrinsic]
190 [CLSCompliant(false)]
191 public static Vector256<sbyte> Create(sbyte value)
192 {
193 if (Avx.IsSupported)
194 {
195 return Create(value);
196 }
197 return SoftwareFallback(value);
198 unsafe static Vector256<sbyte> SoftwareFallback(sbyte value)
199 {
200 sbyte* source = stackalloc sbyte[32]
201 {
205 value, value
206 };
207 return Unsafe.AsRef<Vector256<sbyte>>(source);
208 }
209 }
210
211 [Intrinsic]
212 public static Vector256<float> Create(float value)
213 {
214 if (Avx.IsSupported)
215 {
216 return Create(value);
217 }
218 return SoftwareFallback(value);
219 unsafe static Vector256<float> SoftwareFallback(float value)
220 {
221 float* source = stackalloc float[8] { value, value, value, value, value, value, value, value };
222 return Unsafe.AsRef<Vector256<float>>(source);
223 }
224 }
225
226 [Intrinsic]
227 [CLSCompliant(false)]
228 public static Vector256<ushort> Create(ushort value)
229 {
230 if (Avx.IsSupported)
231 {
232 return Create(value);
233 }
234 return SoftwareFallback(value);
235 unsafe static Vector256<ushort> SoftwareFallback(ushort value)
236 {
237 ushort* source = stackalloc ushort[16]
238 {
241 };
242 return Unsafe.AsRef<Vector256<ushort>>(source);
243 }
244 }
245
246 [Intrinsic]
247 [CLSCompliant(false)]
248 public static Vector256<uint> Create(uint value)
249 {
250 if (Avx.IsSupported)
251 {
252 return Create(value);
253 }
254 return SoftwareFallback(value);
255 unsafe static Vector256<uint> SoftwareFallback(uint value)
256 {
257 uint* source = stackalloc uint[8] { value, value, value, value, value, value, value, value };
258 return Unsafe.AsRef<Vector256<uint>>(source);
259 }
260 }
261
262 [Intrinsic]
263 [CLSCompliant(false)]
264 public static Vector256<ulong> Create(ulong value)
265 {
267 {
268 return Create(value);
269 }
270 return SoftwareFallback(value);
271 unsafe static Vector256<ulong> SoftwareFallback(ulong value)
272 {
273 ulong* source = stackalloc ulong[4] { value, value, value, value };
274 return Unsafe.AsRef<Vector256<ulong>>(source);
275 }
276 }
277
278 [Intrinsic]
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)
280 {
281 if (Avx.IsSupported)
282 {
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);
284 }
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)
287 {
288 byte* source = stackalloc byte[32]
289 {
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,
293 e30, e31
294 };
295 return Unsafe.AsRef<Vector256<byte>>(source);
296 }
297 }
298
299 [Intrinsic]
300 public static Vector256<double> Create(double e0, double e1, double e2, double e3)
301 {
302 if (Avx.IsSupported)
303 {
304 return Create(e0, e1, e2, e3);
305 }
306 return SoftwareFallback(e0, e1, e2, e3);
307 unsafe static Vector256<double> SoftwareFallback(double e0, double e1, double e2, double e3)
308 {
309 double* source = stackalloc double[4] { e0, e1, e2, e3 };
310 return Unsafe.AsRef<Vector256<double>>(source);
311 }
312 }
313
314 [Intrinsic]
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)
316 {
317 if (Avx.IsSupported)
318 {
319 return Create(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
320 }
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)
323 {
324 short* source = stackalloc short[16]
325 {
326 e0, e1, e2, e3, e4, e5, e6, e7, e8, e9,
327 e10, e11, e12, e13, e14, e15
328 };
329 return Unsafe.AsRef<Vector256<short>>(source);
330 }
331 }
332
333 [Intrinsic]
334 public static Vector256<int> Create(int e0, int e1, int e2, int e3, int e4, int e5, int e6, int e7)
335 {
336 if (Avx.IsSupported)
337 {
338 return Create(e0, e1, e2, e3, e4, e5, e6, e7);
339 }
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)
342 {
343 int* source = stackalloc int[8] { e0, e1, e2, e3, e4, e5, e6, e7 };
344 return Unsafe.AsRef<Vector256<int>>(source);
345 }
346 }
347
348 [Intrinsic]
349 public static Vector256<long> Create(long e0, long e1, long e2, long e3)
350 {
352 {
353 return Create(e0, e1, e2, e3);
354 }
355 return SoftwareFallback(e0, e1, e2, e3);
356 unsafe static Vector256<long> SoftwareFallback(long e0, long e1, long e2, long e3)
357 {
358 long* source = stackalloc long[4] { e0, e1, e2, e3 };
359 return Unsafe.AsRef<Vector256<long>>(source);
360 }
361 }
362
363 [Intrinsic]
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)
366 {
367 if (Avx.IsSupported)
368 {
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);
370 }
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)
373 {
374 sbyte* source = stackalloc sbyte[32]
375 {
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,
379 e30, e31
380 };
381 return Unsafe.AsRef<Vector256<sbyte>>(source);
382 }
383 }
384
385 [Intrinsic]
386 public static Vector256<float> Create(float e0, float e1, float e2, float e3, float e4, float e5, float e6, float e7)
387 {
388 if (Avx.IsSupported)
389 {
390 return Create(e0, e1, e2, e3, e4, e5, e6, e7);
391 }
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)
394 {
395 float* source = stackalloc float[8] { e0, e1, e2, e3, e4, e5, e6, e7 };
396 return Unsafe.AsRef<Vector256<float>>(source);
397 }
398 }
399
400 [Intrinsic]
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)
403 {
404 if (Avx.IsSupported)
405 {
406 return Create(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15);
407 }
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)
410 {
411 ushort* source = stackalloc ushort[16]
412 {
413 e0, e1, e2, e3, e4, e5, e6, e7, e8, e9,
414 e10, e11, e12, e13, e14, e15
415 };
416 return Unsafe.AsRef<Vector256<ushort>>(source);
417 }
418 }
419
420 [Intrinsic]
421 [CLSCompliant(false)]
422 public static Vector256<uint> Create(uint e0, uint e1, uint e2, uint e3, uint e4, uint e5, uint e6, uint e7)
423 {
424 if (Avx.IsSupported)
425 {
426 return Create(e0, e1, e2, e3, e4, e5, e6, e7);
427 }
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)
430 {
431 uint* source = stackalloc uint[8] { e0, e1, e2, e3, e4, e5, e6, e7 };
432 return Unsafe.AsRef<Vector256<uint>>(source);
433 }
434 }
435
436 [Intrinsic]
437 [CLSCompliant(false)]
438 public static Vector256<ulong> Create(ulong e0, ulong e1, ulong e2, ulong e3)
439 {
441 {
442 return Create(e0, e1, e2, e3);
443 }
444 return SoftwareFallback(e0, e1, e2, e3);
445 unsafe static Vector256<ulong> SoftwareFallback(ulong e0, ulong e1, ulong e2, ulong e3)
446 {
447 ulong* source = stackalloc ulong[4] { e0, e1, e2, e3 };
448 return Unsafe.AsRef<Vector256<ulong>>(source);
449 }
450 }
451
452 [MethodImpl(MethodImplOptions.AggressiveInlining)]
454 {
455 if (Avx.IsSupported)
456 {
457 Vector256<byte> vector = lower.ToVector256Unsafe();
458 return vector.WithUpper(upper);
459 }
460 return SoftwareFallback(lower, upper);
461 static Vector256<byte> SoftwareFallback(Vector128<byte> lower, Vector128<byte> upper)
462 {
464 ref Vector128<byte> reference = ref Unsafe.As<Vector256<byte>, Vector128<byte>>(ref source);
465 reference = lower;
466 Unsafe.Add(ref reference, 1) = upper;
467 return source;
468 }
469 }
470
471 [MethodImpl(MethodImplOptions.AggressiveInlining)]
473 {
474 if (Avx.IsSupported)
475 {
476 Vector256<double> vector = lower.ToVector256Unsafe();
477 return vector.WithUpper(upper);
478 }
479 return SoftwareFallback(lower, upper);
480 static Vector256<double> SoftwareFallback(Vector128<double> lower, Vector128<double> upper)
481 {
484 reference = lower;
485 Unsafe.Add(ref reference, 1) = upper;
486 return source;
487 }
488 }
489
490 [MethodImpl(MethodImplOptions.AggressiveInlining)]
492 {
493 if (Avx.IsSupported)
494 {
495 Vector256<short> vector = lower.ToVector256Unsafe();
496 return vector.WithUpper(upper);
497 }
498 return SoftwareFallback(lower, upper);
499 static Vector256<short> SoftwareFallback(Vector128<short> lower, Vector128<short> upper)
500 {
502 ref Vector128<short> reference = ref Unsafe.As<Vector256<short>, Vector128<short>>(ref source);
503 reference = lower;
504 Unsafe.Add(ref reference, 1) = upper;
505 return source;
506 }
507 }
508
509 [MethodImpl(MethodImplOptions.AggressiveInlining)]
511 {
512 if (Avx.IsSupported)
513 {
514 Vector256<int> vector = lower.ToVector256Unsafe();
515 return vector.WithUpper(upper);
516 }
517 return SoftwareFallback(lower, upper);
518 static Vector256<int> SoftwareFallback(Vector128<int> lower, Vector128<int> upper)
519 {
521 ref Vector128<int> reference = ref Unsafe.As<Vector256<int>, Vector128<int>>(ref source);
522 reference = lower;
523 Unsafe.Add(ref reference, 1) = upper;
524 return source;
525 }
526 }
527
528 [MethodImpl(MethodImplOptions.AggressiveInlining)]
530 {
531 if (Avx.IsSupported)
532 {
533 Vector256<long> vector = lower.ToVector256Unsafe();
534 return vector.WithUpper(upper);
535 }
536 return SoftwareFallback(lower, upper);
537 static Vector256<long> SoftwareFallback(Vector128<long> lower, Vector128<long> upper)
538 {
540 ref Vector128<long> reference = ref Unsafe.As<Vector256<long>, Vector128<long>>(ref source);
541 reference = lower;
542 Unsafe.Add(ref reference, 1) = upper;
543 return source;
544 }
545 }
546
547 [MethodImpl(MethodImplOptions.AggressiveInlining)]
548 [CLSCompliant(false)]
550 {
551 if (Avx.IsSupported)
552 {
553 Vector256<sbyte> vector = lower.ToVector256Unsafe();
554 return vector.WithUpper(upper);
555 }
556 return SoftwareFallback(lower, upper);
557 static Vector256<sbyte> SoftwareFallback(Vector128<sbyte> lower, Vector128<sbyte> upper)
558 {
560 ref Vector128<sbyte> reference = ref Unsafe.As<Vector256<sbyte>, Vector128<sbyte>>(ref source);
561 reference = lower;
562 Unsafe.Add(ref reference, 1) = upper;
563 return source;
564 }
565 }
566
567 [MethodImpl(MethodImplOptions.AggressiveInlining)]
569 {
570 if (Avx.IsSupported)
571 {
572 Vector256<float> vector = lower.ToVector256Unsafe();
573 return vector.WithUpper(upper);
574 }
575 return SoftwareFallback(lower, upper);
576 static Vector256<float> SoftwareFallback(Vector128<float> lower, Vector128<float> upper)
577 {
579 ref Vector128<float> reference = ref Unsafe.As<Vector256<float>, Vector128<float>>(ref source);
580 reference = lower;
581 Unsafe.Add(ref reference, 1) = upper;
582 return source;
583 }
584 }
585
586 [MethodImpl(MethodImplOptions.AggressiveInlining)]
587 [CLSCompliant(false)]
589 {
590 if (Avx.IsSupported)
591 {
592 Vector256<ushort> vector = lower.ToVector256Unsafe();
593 return vector.WithUpper(upper);
594 }
595 return SoftwareFallback(lower, upper);
596 static Vector256<ushort> SoftwareFallback(Vector128<ushort> lower, Vector128<ushort> upper)
597 {
600 reference = lower;
601 Unsafe.Add(ref reference, 1) = upper;
602 return source;
603 }
604 }
605
606 [MethodImpl(MethodImplOptions.AggressiveInlining)]
607 [CLSCompliant(false)]
609 {
610 if (Avx.IsSupported)
611 {
612 Vector256<uint> vector = lower.ToVector256Unsafe();
613 return vector.WithUpper(upper);
614 }
615 return SoftwareFallback(lower, upper);
616 static Vector256<uint> SoftwareFallback(Vector128<uint> lower, Vector128<uint> upper)
617 {
619 ref Vector128<uint> reference = ref Unsafe.As<Vector256<uint>, Vector128<uint>>(ref source);
620 reference = lower;
621 Unsafe.Add(ref reference, 1) = upper;
622 return source;
623 }
624 }
625
626 [MethodImpl(MethodImplOptions.AggressiveInlining)]
627 [CLSCompliant(false)]
629 {
630 if (Avx.IsSupported)
631 {
632 Vector256<ulong> vector = lower.ToVector256Unsafe();
633 return vector.WithUpper(upper);
634 }
635 return SoftwareFallback(lower, upper);
636 static Vector256<ulong> SoftwareFallback(Vector128<ulong> lower, Vector128<ulong> upper)
637 {
639 ref Vector128<ulong> reference = ref Unsafe.As<Vector256<ulong>, Vector128<ulong>>(ref source);
640 reference = lower;
641 Unsafe.Add(ref reference, 1) = upper;
642 return source;
643 }
644 }
645
646 [MethodImpl(MethodImplOptions.AggressiveInlining)]
648 {
649 if (Avx.IsSupported)
650 {
651 return Vector128.CreateScalar(value).ToVector256();
652 }
653 return SoftwareFallback(value);
654 static Vector256<byte> SoftwareFallback(byte value)
655 {
657 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<byte>, byte>(ref source), value);
658 return source;
659 }
660 }
661
662 [MethodImpl(MethodImplOptions.AggressiveInlining)]
664 {
665 if (Avx.IsSupported)
666 {
667 return Vector128.CreateScalar(value).ToVector256();
668 }
669 return SoftwareFallback(value);
670 static Vector256<double> SoftwareFallback(double value)
671 {
673 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<double>, byte>(ref source), value);
674 return source;
675 }
676 }
677
678 [MethodImpl(MethodImplOptions.AggressiveInlining)]
680 {
681 if (Avx.IsSupported)
682 {
683 return Vector128.CreateScalar(value).ToVector256();
684 }
685 return SoftwareFallback(value);
686 static Vector256<short> SoftwareFallback(short value)
687 {
689 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<short>, byte>(ref source), value);
690 return source;
691 }
692 }
693
694 [MethodImpl(MethodImplOptions.AggressiveInlining)]
696 {
697 if (Avx.IsSupported)
698 {
699 return Vector128.CreateScalar(value).ToVector256();
700 }
701 return SoftwareFallback(value);
702 static Vector256<int> SoftwareFallback(int value)
703 {
705 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<int>, byte>(ref source), value);
706 return source;
707 }
708 }
709
710 [MethodImpl(MethodImplOptions.AggressiveInlining)]
712 {
714 {
715 return Vector128.CreateScalar(value).ToVector256();
716 }
717 return SoftwareFallback(value);
718 static Vector256<long> SoftwareFallback(long value)
719 {
721 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<long>, byte>(ref source), value);
722 return source;
723 }
724 }
725
726 [MethodImpl(MethodImplOptions.AggressiveInlining)]
727 [CLSCompliant(false)]
729 {
730 if (Avx.IsSupported)
731 {
732 return Vector128.CreateScalar(value).ToVector256();
733 }
734 return SoftwareFallback(value);
735 static Vector256<sbyte> SoftwareFallback(sbyte value)
736 {
738 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<sbyte>, byte>(ref source), value);
739 return source;
740 }
741 }
742
743 [MethodImpl(MethodImplOptions.AggressiveInlining)]
745 {
746 if (Avx.IsSupported)
747 {
748 return Vector128.CreateScalar(value).ToVector256();
749 }
750 return SoftwareFallback(value);
751 static Vector256<float> SoftwareFallback(float value)
752 {
754 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<float>, byte>(ref source), value);
755 return source;
756 }
757 }
758
759 [MethodImpl(MethodImplOptions.AggressiveInlining)]
760 [CLSCompliant(false)]
762 {
763 if (Avx.IsSupported)
764 {
765 return Vector128.CreateScalar(value).ToVector256();
766 }
767 return SoftwareFallback(value);
768 static Vector256<ushort> SoftwareFallback(ushort value)
769 {
771 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<ushort>, byte>(ref source), value);
772 return source;
773 }
774 }
775
776 [MethodImpl(MethodImplOptions.AggressiveInlining)]
777 [CLSCompliant(false)]
779 {
780 if (Avx.IsSupported)
781 {
782 return Vector128.CreateScalar(value).ToVector256();
783 }
784 return SoftwareFallback(value);
785 static Vector256<uint> SoftwareFallback(uint value)
786 {
788 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<uint>, byte>(ref source), value);
789 return source;
790 }
791 }
792
793 [MethodImpl(MethodImplOptions.AggressiveInlining)]
794 [CLSCompliant(false)]
796 {
798 {
799 return Vector128.CreateScalar(value).ToVector256();
800 }
801 return SoftwareFallback(value);
802 static Vector256<ulong> SoftwareFallback(ulong value)
803 {
805 Unsafe.WriteUnaligned(ref Unsafe.As<Vector256<ulong>, byte>(ref source), value);
806 return source;
807 }
808 }
809
810 [Intrinsic]
811 public unsafe static Vector256<byte> CreateScalarUnsafe(byte value)
812 {
813 byte* ptr = stackalloc byte[32];
814 *ptr = value;
815 return Unsafe.AsRef<Vector256<byte>>(ptr);
816 }
817
818 [Intrinsic]
819 public unsafe static Vector256<double> CreateScalarUnsafe(double value)
820 {
821 double* ptr = stackalloc double[4];
822 *ptr = value;
823 return Unsafe.AsRef<Vector256<double>>(ptr);
824 }
825
826 [Intrinsic]
827 public unsafe static Vector256<short> CreateScalarUnsafe(short value)
828 {
829 short* ptr = stackalloc short[16];
830 *ptr = value;
831 return Unsafe.AsRef<Vector256<short>>(ptr);
832 }
833
834 [Intrinsic]
835 public unsafe static Vector256<int> CreateScalarUnsafe(int value)
836 {
837 int* ptr = stackalloc int[8];
838 *ptr = value;
839 return Unsafe.AsRef<Vector256<int>>(ptr);
840 }
841
842 [Intrinsic]
843 public unsafe static Vector256<long> CreateScalarUnsafe(long value)
844 {
845 long* ptr = stackalloc long[4];
846 *ptr = value;
847 return Unsafe.AsRef<Vector256<long>>(ptr);
848 }
849
850 [Intrinsic]
851 [CLSCompliant(false)]
852 public unsafe static Vector256<sbyte> CreateScalarUnsafe(sbyte value)
853 {
854 sbyte* ptr = stackalloc sbyte[32];
855 *ptr = value;
856 return Unsafe.AsRef<Vector256<sbyte>>(ptr);
857 }
858
859 [Intrinsic]
860 public unsafe static Vector256<float> CreateScalarUnsafe(float value)
861 {
862 float* ptr = stackalloc float[8];
863 *ptr = value;
864 return Unsafe.AsRef<Vector256<float>>(ptr);
865 }
866
867 [Intrinsic]
868 [CLSCompliant(false)]
869 public unsafe static Vector256<ushort> CreateScalarUnsafe(ushort value)
870 {
871 ushort* ptr = stackalloc ushort[16];
872 *ptr = value;
873 return Unsafe.AsRef<Vector256<ushort>>(ptr);
874 }
875
876 [Intrinsic]
877 [CLSCompliant(false)]
878 public unsafe static Vector256<uint> CreateScalarUnsafe(uint value)
879 {
880 uint* ptr = stackalloc uint[8];
881 *ptr = value;
882 return Unsafe.AsRef<Vector256<uint>>(ptr);
883 }
884
885 [Intrinsic]
886 [CLSCompliant(false)]
887 public unsafe static Vector256<ulong> CreateScalarUnsafe(ulong value)
888 {
889 ulong* ptr = stackalloc ulong[4];
890 *ptr = value;
891 return Unsafe.AsRef<Vector256<ulong>>(ptr);
892 }
893
894 [Intrinsic]
895 public static T GetElement<T>(this Vector256<T> vector, int index) where T : struct
896 {
897 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
898 if ((uint)index >= (uint)Vector256<T>.Count)
899 {
901 }
902 return Unsafe.Add(ref Unsafe.As<Vector256<T>, T>(ref vector), index);
903 }
904
905 [Intrinsic]
906 public static Vector256<T> WithElement<T>(this Vector256<T> vector, int index, T value) where T : struct
907 {
908 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
909 if ((uint)index >= (uint)Vector256<T>.Count)
910 {
912 }
913 Vector256<T> source = vector;
914 Unsafe.Add(ref Unsafe.As<Vector256<T>, T>(ref source), index) = value;
915 return source;
916 }
917
918 [Intrinsic]
919 public static Vector128<T> GetLower<T>(this Vector256<T> vector) where T : struct
920 {
921 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
922 return Unsafe.As<Vector256<T>, Vector128<T>>(ref vector);
923 }
924
925 [MethodImpl(MethodImplOptions.AggressiveInlining)]
926 public static Vector256<T> WithLower<T>(this Vector256<T> vector, Vector128<T> value) where T : struct
927 {
928 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
929 if (Avx2.IsSupported && typeof(T) != typeof(float) && typeof(T) != typeof(double))
930 {
931 return Avx2.InsertVector128(vector.AsByte(), value.AsByte(), 0).As<byte, T>();
932 }
933 if (Avx.IsSupported)
934 {
935 return Avx.InsertVector128(vector.AsSingle(), value.AsSingle(), 0).As<float, T>();
936 }
937 return SoftwareFallback(vector, value);
938 static Vector256<T> SoftwareFallback(Vector256<T> vector, Vector128<T> value)
939 {
940 Vector256<T> source = vector;
942 return source;
943 }
944 }
945
946 [MethodImpl(MethodImplOptions.AggressiveInlining)]
947 public static Vector128<T> GetUpper<T>(this Vector256<T> vector) where T : struct
948 {
949 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
950 if (Avx2.IsSupported && typeof(T) != typeof(float) && typeof(T) != typeof(double))
951 {
952 return Avx2.ExtractVector128(vector.AsByte(), 1).As<byte, T>();
953 }
954 if (Avx.IsSupported)
955 {
956 return Avx.ExtractVector128(vector.AsSingle(), 1).As<float, T>();
957 }
958 return SoftwareFallback(vector);
959 static Vector128<T> SoftwareFallback(Vector256<T> vector)
960 {
961 return Unsafe.Add(ref Unsafe.As<Vector256<T>, Vector128<T>>(ref vector), 1);
962 }
963 }
964
965 [MethodImpl(MethodImplOptions.AggressiveInlining)]
966 public static Vector256<T> WithUpper<T>(this Vector256<T> vector, Vector128<T> value) where T : struct
967 {
968 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
969 if (Avx2.IsSupported && typeof(T) != typeof(float) && typeof(T) != typeof(double))
970 {
971 return Avx2.InsertVector128(vector.AsByte(), value.AsByte(), 1).As<byte, T>();
972 }
973 if (Avx.IsSupported)
974 {
975 return Avx.InsertVector128(vector.AsSingle(), value.AsSingle(), 1).As<float, T>();
976 }
977 return SoftwareFallback(vector, value);
978 static Vector256<T> SoftwareFallback(Vector256<T> vector, Vector128<T> value)
979 {
980 Vector256<T> source = vector;
981 Unsafe.Add(ref Unsafe.As<Vector256<T>, Vector128<T>>(ref source), 1) = value;
982 return source;
983 }
984 }
985
986 [Intrinsic]
987 public static T ToScalar<T>(this Vector256<T> vector) where T : struct
988 {
989 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
990 return Unsafe.As<Vector256<T>, T>(ref vector);
991 }
992}
993[StructLayout(LayoutKind.Sequential, Size = 32)]
994[Intrinsic]
995[DebuggerDisplay("{DisplayString,nq}")]
996[DebuggerTypeProxy(typeof(Vector256DebugView<>))]
997public readonly struct Vector256<T> : IEquatable<Vector256<T>> where T : struct
998{
999 private readonly ulong _00;
1000
1001 private readonly ulong _01;
1002
1003 private readonly ulong _02;
1004
1005 private readonly ulong _03;
1006
1007 public static int Count
1008 {
1009 [Intrinsic]
1010 get
1011 {
1012 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1013 return 32 / Unsafe.SizeOf<T>();
1014 }
1015 }
1016
1017 public static Vector256<T> Zero
1018 {
1019 [Intrinsic]
1020 get
1021 {
1022 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1023 return default(Vector256<T>);
1024 }
1025 }
1026
1028 {
1029 [Intrinsic]
1030 get
1031 {
1032 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1033 return Vector256.Create(uint.MaxValue).As<uint, T>();
1034 }
1035 }
1036
1037 internal string DisplayString
1038 {
1039 get
1040 {
1041 if (IsSupported)
1042 {
1043 return ToString();
1044 }
1045 return SR.NotSupported_Type;
1046 }
1047 }
1048
1049 internal static bool IsSupported
1050 {
1051 [MethodImpl(MethodImplOptions.AggressiveInlining)]
1052 get
1053 {
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)))
1055 {
1056 return typeof(T) == typeof(double);
1057 }
1058 return true;
1059 }
1060 }
1061
1062 [MethodImpl(MethodImplOptions.AggressiveInlining)]
1064 {
1065 if (Avx.IsSupported)
1066 {
1067 if (typeof(T) == typeof(float))
1068 {
1069 Vector256<float> value = Avx.Compare(this.AsSingle(), other.AsSingle(), FloatComparisonMode.OrderedEqualNonSignaling);
1070 return Avx.MoveMask(value) == 255;
1071 }
1072 if (typeof(T) == typeof(double))
1073 {
1074 Vector256<double> value2 = Avx.Compare(this.AsDouble(), other.AsDouble(), FloatComparisonMode.OrderedEqualNonSignaling);
1075 return Avx.MoveMask(value2) == 15;
1076 }
1077 }
1078 if (Avx2.IsSupported)
1079 {
1080 Vector256<byte> value3 = Avx2.CompareEqual(this.AsByte(), other.AsByte());
1081 return Avx2.MoveMask(value3) == -1;
1082 }
1083 return SoftwareFallback(in this, other);
1084 static bool SoftwareFallback(in Vector256<T> vector, Vector256<T> other)
1085 {
1086 for (int i = 0; i < Count; i++)
1087 {
1088 if (!((IEquatable<T>)(object)vector.GetElement(i)).Equals(other.GetElement(i)))
1089 {
1090 return false;
1091 }
1092 }
1093 return true;
1094 }
1095 }
1096
1097 public override bool Equals([NotNullWhen(true)] object? obj)
1098 {
1099 if (obj is Vector256<T>)
1100 {
1101 return Equals((Vector256<T>)obj);
1102 }
1103 return false;
1104 }
1105
1106 public override int GetHashCode()
1107 {
1108 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1109 HashCode hashCode = default(HashCode);
1110 for (int i = 0; i < Count; i++)
1111 {
1112 hashCode.Add(this.GetElement(i).GetHashCode());
1113 }
1114 return hashCode.ToHashCode();
1115 }
1116
1117 public override string ToString()
1118 {
1119 ThrowHelper.ThrowForUnsupportedIntrinsicsVectorBaseType<T>();
1120 int num = Count - 1;
1121 Span<char> initialBuffer = stackalloc char[64];
1122 ValueStringBuilder valueStringBuilder = new ValueStringBuilder(initialBuffer);
1123 CultureInfo invariantCulture = CultureInfo.InvariantCulture;
1124 valueStringBuilder.Append('<');
1125 for (int i = 0; i < num; i++)
1126 {
1127 valueStringBuilder.Append(((IFormattable)(object)this.GetElement(i)).ToString("G", invariantCulture));
1128 valueStringBuilder.Append(',');
1129 valueStringBuilder.Append(' ');
1130 }
1131 valueStringBuilder.Append(((IFormattable)(object)this.GetElement(num)).ToString("G", invariantCulture));
1132 valueStringBuilder.Append('>');
1133 return valueStringBuilder.ToString();
1134 }
1135}
static CultureInfo InvariantCulture
static Vector128< byte > CreateScalar(byte value)
Definition Vector128.cs:636
static Vector256< byte > CreateScalar(byte value)
Definition Vector256.cs:647
static Vector256< ulong > Create(ulong value)
Definition Vector256.cs:264
static Vector256< double > Create(double e0, double e1, double e2, double e3)
Definition Vector256.cs:300
static Vector256< ulong > AsUInt64< T >(this Vector256< T > vector)
Definition Vector256.cs:83
static Vector256< int > Create(int value)
Definition Vector256.cs:160
static Vector256< uint > Create(uint e0, uint e1, uint e2, uint e3, uint e4, uint e5, uint e6, uint e7)
Definition Vector256.cs:422
static Vector256< sbyte > Create(Vector128< sbyte > lower, Vector128< sbyte > upper)
Definition Vector256.cs:549
static Vector256< long > AsInt64< T >(this Vector256< T > vector)
Definition Vector256.cs:49
static Vector256< ushort > Create(ushort value)
Definition Vector256.cs:228
static T GetElement< T >(this Vector256< T > vector, int index)
Definition Vector256.cs:895
static Vector256< double > AsDouble< T >(this Vector256< T > vector)
Definition Vector256.cs:31
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)
Definition Vector256.cs:402
static Vector256< short > AsInt16< T >(this Vector256< T > vector)
Definition Vector256.cs:37
static Vector256< T > AllBitsSet
static Vector256< int > Create(int e0, int e1, int e2, int e3, int e4, int e5, int e6, int e7)
Definition Vector256.cs:334
static Vector256< int > Create(Vector128< int > lower, Vector128< int > upper)
Definition Vector256.cs:510
static Vector256< T > WithElement< T >(this Vector256< T > vector, int index, T value)
Definition Vector256.cs:906
static Vector256< ushort > AsUInt16< T >(this Vector256< T > vector)
Definition Vector256.cs:69
static unsafe Vector256< sbyte > CreateScalarUnsafe(sbyte value)
Definition Vector256.cs:852
static Vector256< T > WithLower< T >(this Vector256< T > vector, Vector128< T > value)
Definition Vector256.cs:926
static Vector256< short > CreateScalar(short value)
Definition Vector256.cs:679
static Vector256< sbyte > AsSByte< T >(this Vector256< T > vector)
Definition Vector256.cs:56
static Vector256< double > CreateScalar(double value)
Definition Vector256.cs:663
static Vector256< uint > CreateScalar(uint value)
Definition Vector256.cs:778
static Vector256< float > Create(Vector128< float > lower, Vector128< float > upper)
Definition Vector256.cs:568
static unsafe Vector256< byte > CreateScalarUnsafe(byte value)
Definition Vector256.cs:811
static Vector256< T > WithUpper< T >(this Vector256< T > vector, Vector128< T > value)
Definition Vector256.cs:966
static Vector256< T > AsVector256< T >(this Vector< T > value)
Definition Vector256.cs:89
static Vector256< ulong > Create(Vector128< ulong > lower, Vector128< ulong > upper)
Definition Vector256.cs:628
static Vector128< T > GetUpper< T >(this Vector256< T > vector)
Definition Vector256.cs:947
static Vector256< uint > AsUInt32< T >(this Vector256< T > vector)
Definition Vector256.cs:76
static Vector256< float > AsSingle< T >(this Vector256< T > vector)
Definition Vector256.cs:62
static Vector256< uint > Create(uint value)
Definition Vector256.cs:248
bool Equals(Vector256< T > other)
static Vector256< ulong > CreateScalar(ulong value)
Definition Vector256.cs:795
static Vector256< double > Create(double value)
Definition Vector256.cs:126
static unsafe Vector256< float > CreateScalarUnsafe(float value)
Definition Vector256.cs:860
static Vector256< long > Create(long e0, long e1, long e2, long e3)
Definition Vector256.cs:349
static unsafe Vector256< uint > CreateScalarUnsafe(uint value)
Definition Vector256.cs:878
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)
Definition Vector256.cs:279
static Vector256< byte > Create(Vector128< byte > lower, Vector128< byte > upper)
Definition Vector256.cs:453
static Vector256< long > Create(long value)
Definition Vector256.cs:175
static unsafe Vector256< short > CreateScalarUnsafe(short value)
Definition Vector256.cs:827
static Vector< T > AsVector< T >(this Vector256< T > value)
Definition Vector256.cs:98
static unsafe Vector256< ushort > CreateScalarUnsafe(ushort value)
Definition Vector256.cs:869
static Vector256< double > Create(Vector128< double > lower, Vector128< double > upper)
Definition Vector256.cs:472
static Vector256< sbyte > CreateScalar(sbyte value)
Definition Vector256.cs:728
static T ToScalar< T >(this Vector256< T > vector)
Definition Vector256.cs:987
static Vector256< float > Create(float value)
Definition Vector256.cs:212
static Vector256< U > As< T, U >(this Vector256< T > vector)
Definition Vector256.cs:17
static Vector256< float > CreateScalar(float value)
Definition Vector256.cs:744
static Vector256< ushort > Create(Vector128< ushort > lower, Vector128< ushort > upper)
Definition Vector256.cs:588
static unsafe Vector256< long > CreateScalarUnsafe(long value)
Definition Vector256.cs:843
static Vector256< float > Create(float e0, float e1, float e2, float e3, float e4, float e5, float e6, float e7)
Definition Vector256.cs:386
static Vector256< long > CreateScalar(long value)
Definition Vector256.cs:711
static Vector256< ushort > CreateScalar(ushort value)
Definition Vector256.cs:761
static Vector256< ulong > Create(ulong e0, ulong e1, ulong e2, ulong e3)
Definition Vector256.cs:438
static Vector256< short > Create(Vector128< short > lower, Vector128< short > upper)
Definition Vector256.cs:491
static Vector256< uint > Create(Vector128< uint > lower, Vector128< uint > upper)
Definition Vector256.cs:608
static Vector256< int > AsInt32< T >(this Vector256< T > vector)
Definition Vector256.cs:43
static Vector128< T > GetLower< T >(this Vector256< T > vector)
Definition Vector256.cs:919
static Vector256< long > Create(Vector128< long > lower, Vector128< long > upper)
Definition Vector256.cs:529
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)
Definition Vector256.cs:315
static Vector256< byte > Create(byte value)
Definition Vector256.cs:105
static Vector256< short > Create(short value)
Definition Vector256.cs:141
static Vector256< byte > AsByte< T >(this Vector256< T > vector)
Definition Vector256.cs:25
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)
Definition Vector256.cs:365
static Vector256< sbyte > Create(sbyte value)
Definition Vector256.cs:191
static unsafe Vector256< ulong > CreateScalarUnsafe(ulong value)
Definition Vector256.cs:887
static Vector256< int > CreateScalar(int value)
Definition Vector256.cs:695
static unsafe Vector256< double > CreateScalarUnsafe(double value)
Definition Vector256.cs:819
override bool Equals([NotNullWhen(true)] object? obj)
static unsafe Vector256< int > CreateScalarUnsafe(int value)
Definition Vector256.cs:835
static int MoveMask(Vector256< sbyte > value)
Definition Avx2.cs:1578
static Vector256< sbyte > CompareEqual(Vector256< sbyte > left, Vector256< sbyte > right)
Definition Avx2.cs:512
static new bool IsSupported
Definition Avx2.cs:15
static new Vector128< sbyte > ExtractVector128(Vector256< sbyte > value, byte index)
Definition Avx2.cs:702
static new Vector256< sbyte > InsertVector128(Vector256< sbyte > value, Vector128< sbyte > data, byte index)
Definition Avx2.cs:1348
static new bool IsSupported
Definition Avx.cs:15
static int MoveMask(Vector256< float > value)
Definition Avx.cs:662
static Vector128< byte > ExtractVector128(Vector256< byte > value, byte index)
Definition Avx.cs:332
static Vector256< byte > InsertVector128(Vector256< byte > value, Vector128< byte > data, byte index)
Definition Avx.cs:412
static Vector128< float > Compare(Vector128< float > left, Vector128< float > right, FloatComparisonMode mode)
Definition Avx.cs:112
static string NotSupported_Type
Definition SR.cs:1718
Definition SR.cs:7
static void ThrowArgumentOutOfRangeException(System.ExceptionArgument argument)
void Add(int value)
Definition HashCode.cs:239