diff --git a/src/System.Runtime.CompilerServices.Intrinsics.Intel/System/Runtime/CompilerServices/Intrinsics/Intel/AVX.cs b/src/System.Runtime.CompilerServices.Intrinsics.Intel/System/Runtime/CompilerServices/Intrinsics/Intel/AVX.cs
new file mode 100644
index 00000000000..abccb99e1a4
--- /dev/null
+++ b/src/System.Runtime.CompilerServices.Intrinsics.Intel/System/Runtime/CompilerServices/Intrinsics/Intel/AVX.cs
@@ -0,0 +1,666 @@
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// AVX.cs
+//
+// A class that implements intrinsic functions to provide access to Intel SSE4.1 instructions.
+//
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+
+using System;
+using System.Runtime.InteropServices;
+using System.Runtime.CompilerServices.Intrinsics;
+
+namespace System.Runtime.CompilerServices.Intrinsics.Intel
+{
+ ///
+ /// Provides access to Intel AVX hardware instructions via intrinsics
+ ///
+ ///
+ /// AVX class provides access to AVX SIMD instructions
+ ///
+
+ public static class AVX
+ {
+ // __m256 _mm256_add_ps (__m256 a, __m256 b)
+ public static Vector256 Add(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_add_pd (__m256d a, __m256d b)
+ public static Vector256 Add(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_addsub_ps (__m256 a, __m256 b)
+ public static Vector256 AddSubtract(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_addsub_pd (__m256d a, __m256d b)
+ public static Vector256 AddSubtract(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_and_ps (__m256 a, __m256 b)
+ public static Vector256 And(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_and_pd (__m256d a, __m256d b)
+ public static Vector256 And(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_andnot_ps (__m256 a, __m256 b)
+ public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_andnot_pd (__m256d a, __m256d b)
+ public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_blend_ps (__m256 a, __m256 b, const int imm8)
+ private static Vector256 Blend(Vector256 left, Vector256 right, byte control) { throw new NotImplementedException(); }
+ public static BlendVector256Delegate GetBlendVector256Float(byte control)
+ {
+ return (left, right) => Blend(left, right, control);
+ }
+ // __m256d _mm256_blend_pd (__m256d a, __m256d b, const int imm8)
+ private static Vector256 Blend(Vector256 left, Vector256 right, byte control) { throw new NotImplementedException(); }
+ public static BlendVector256Delegate GetBlendVector256Double(byte control)
+ {
+ return (left, right) => Blend(left, right, control);
+ }
+
+ // __m256 _mm256_blendv_ps (__m256 a, __m256 b, __m256 mask)
+ public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new NotImplementedException(); }
+ // __m256d _mm256_blendv_pd (__m256d a, __m256d b, __m256d mask)
+ public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new NotImplementedException(); }
+
+ // __m128 _mm_broadcast_ss (float const * mem_addr)
+ public static Vector128 BroadcastVector128Scalar(ref float source) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_broadcast_ps (__m128 const * mem_addr)
+ public static unsafe Vector256 BroadcastVector256Packed(float* mem) { throw new NotImplementedException(); }
+ // __m256 _mm256_broadcast_ss (float const * mem_addr)
+ public static Vector256 BroadcastVector256Scalar(ref float source) { throw new NotImplementedException(); }
+ // __m256d _mm256_broadcast_pd (__m128d const * mem_addr)
+ public static unsafe Vector256 BroadcastVector256Packed(double* mem) { throw new NotImplementedException(); }
+ // __m256d _mm256_broadcast_sd (double const * mem_addr)
+ public static Vector256 BroadcastVector256Scalar(ref double source) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_ceil_ps (__m256 a)
+ public static Vector256 Ceiling(Vector256 value) { throw new NotImplementedException(); }
+ // __m256d _mm256_ceil_pd (__m256d a)
+ public static Vector256 Ceiling(Vector256 value) { throw new NotImplementedException(); }
+
+ // __m128 _mm_cmp_ps (__m128 a, __m128 b, const int imm8)
+ private static Vector128 CompareVector128Float(Vector128 left, Vector128 right, FloatComparisonMode mode) { throw new NotImplementedException(); }
+ public static CompareVector128Delegate GetCompareVector128Float(FloatComparisonMode mode)
+ {
+ return (left, right) => CompareVector128Float(left, right, mode);
+ }
+
+ // __m128d _mm_cmp_pd (__m128d a, __m128d b, const int imm8)
+ private static Vector128 CompareVector128Double(Vector128 left, Vector128 right, FloatComparisonMode mode) { throw new NotImplementedException(); }
+ public static CompareVector128Delegate GetCompareVector128Double(FloatComparisonMode mode)
+ {
+ return (left, right) => CompareVector128Double(left, right, mode);
+ }
+
+ // __m256 _mm256_cmp_ps (__m256 a, __m256 b, const int imm8)
+ private static Vector256 CompareVector256Float(Vector256 left, Vector256 right, FloatComparisonMode mode) { throw new NotImplementedException(); }
+ public static CompareVector256Delegate GetCompareVector256Float(FloatComparisonMode mode)
+ {
+ return (left, right) => CompareVector256Float(left, right, mode);
+ }
+
+ // __m256d _mm256_cmp_pd (__m256d a, __m256d b, const int imm8)
+ private static Vector256 CompareVector256Double(Vector256 left, Vector256 right, FloatComparisonMode mode) { throw new NotImplementedException(); }
+ public static CompareVector256Delegate GetCompareVector256Double(FloatComparisonMode mode)
+ {
+ return (left, right) => CompareVector256Double(left, right, mode);
+ }
+
+ // __m128i _mm256_cvtpd_epi32 (__m256d a)
+ public static Vector128 ConvertToVector128Int(Vector256 value) { throw new NotImplementedException(); }
+ // __m128 _mm256_cvtpd_ps (__m256d a)
+ public static Vector128 ConvertToVector128Float(Vector256 value) { throw new NotImplementedException(); }
+ // __m256i _mm256_cvtps_epi32 (__m256 a)
+ public static Vector256 ConvertToVector256Int(Vector256 value) { throw new NotImplementedException(); }
+ // __m256 _mm256_cvtepi32_ps (__m256i a)
+ public static Vector256 ConvertToVector256Float(Vector256 value) { throw new NotImplementedException(); }
+ // __m256d _mm256_cvtps_pd (__m128 a)
+ public static Vector256 ConvertToVector256Double(Vector256 value) { throw new NotImplementedException(); }
+ // __m256d _mm256_cvtepi32_pd (__m128i a)
+ public static Vector256 ConvertToVector256Double(Vector256 value) { throw new NotImplementedException(); }
+
+ // __m128i _mm256_cvttpd_epi32 (__m256d a)
+ public static Vector128 ConvertToVector128IntWithTruncation(Vector256 value) { throw new NotImplementedException(); }
+ // __m256i _mm256_cvttps_epi32 (__m256 a)
+ public static Vector256 ConvertToVector256IntWithTruncation(Vector256 value) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_div_ps (__m256 a, __m256 b)
+ public static Vector256 Divide(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_div_pd (__m256d a, __m256d b)
+ public static Vector256 Divide(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_dp_ps (__m256 a, __m256 b, const int imm8)
+ private static Vector256 DotProduct(Vector256 left, Vector256 right, byte control) { throw new NotImplementedException(); }
+ public static DotProductVectro256Delegate GetDotProductVector256Float(byte control)
+ {
+ return (left, right) => DotProduct(left, right, control);
+ }
+
+ // __m256 _mm256_moveldup_ps (__m256 a)
+ public static Vector256 DuplicateEvenIndexed(Vector256 value) { throw new NotImplementedException(); }
+ // __m256d _mm256_movedup_pd (__m256d a)
+ public static Vector256 DuplicateEvenIndexed(Vector256 value) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_movehdup_ps (__m256 a)
+ public static Vector256 DuplicateOddIndexed(Vector256 value) { throw new NotImplementedException(); }
+
+
+ // __int8 _mm256_extract_epi8 (__m256i a, const int index)
+ private static sbyte ExtractSbyte(Vector256 value, byte index) where T : struct { throw new NotImplementedException(); }
+ public static ExtractSbyteVector256Delegate GetExtractSbyte(byte index) where T : struct
+ {
+ return (value) => ExtractSbyte(value, index);
+ }
+ // __int8 _mm256_extract_epi8 (__m256i a, const int index)
+ private static byte ExtractByte(Vector256 value, byte index) where T : struct { throw new NotImplementedException(); }
+ public static ExtractByteVector256Delegate GetExtractByte(byte index) where T : struct
+ {
+ return (value) => ExtractByte(value, index);
+ }
+ // __int16 _mm256_extract_epi16 (__m256i a, const int index)
+ private static short ExtractShort(Vector256 value, byte index) where T : struct { throw new NotImplementedException(); }
+ public static ExtractShortVector256Delegate GetExtractShort(byte index) where T : struct
+ {
+ return (value) => ExtractShort(value, index);
+ }
+ // __int16 _mm256_extract_epi16 (__m256i a, const int index)
+ private static ushort ExtractUshort(Vector256 value, byte index) where T : struct { throw new NotImplementedException(); }
+ public static ExtractUShortVector256Delegate GetExtractUshort(byte index) where T : struct
+ {
+ return (value) => ExtractUshort(value, index);
+ }
+ // __int32 _mm256_extract_epi32 (__m256i a, const int index)
+ private static int ExtractInt(Vector256 value, byte index) where T : struct { throw new NotImplementedException(); }
+ public static ExtractIntVector256Delegate GetExtractInt(byte index) where T : struct
+ {
+ return (value) => ExtractInt(value, index);
+ }
+ // __int32 _mm256_extract_epi32 (__m256i a, const int index)
+ private static uint ExtractUint(Vector256 value, byte index) where T : struct { throw new NotImplementedException(); }
+ public static ExtractUintVector256Delegate GetExtractUint(byte index) where T : struct
+ {
+ return (value) => ExtractUint(value, index);
+ }
+ // __int64 _mm256_extract_epi64 (__m256i a, const int index)
+ private static long ExtractLong(Vector256 value, byte index) where T : struct { throw new NotImplementedException(); }
+ public static ExtractLongVector256Delegate GetExtractLong(byte index) where T : struct
+ {
+ return (value) => ExtractLong(value, index);
+ }
+ // __int64 _mm256_extract_epi64 (__m256i a, const int index)
+ private static ulong ExtractUlong(Vector256 value, byte index) where T : struct { throw new NotImplementedException(); }
+ public static ExtractUlongVector256Delegate GetExtractUlong(byte index) where T : struct
+ {
+ return (value) => ExtractUlong(value, index);
+ }
+
+ //__m128 _mm256_extractf128_ps (__m256 a, const int imm8)
+ private static Vector128 ExtractVector128(Vector256 value, byte index) { throw new NotImplementedException(); }
+ public static Extract128Vector256Delegate GetExtractVector128Float(byte index)
+ {
+ return (value) => ExtractVector128(value, index);
+ }
+ // __m128d _mm256_extractf128_pd (__m256d a, const int imm8)
+ private static Vector128 ExtractVector128(Vector256 value, byte index) { throw new NotImplementedException(); }
+ public static Extract128Vector256Delegate GetExtractVector128Double(byte index)
+ {
+ return (value) => ExtractVector128(value, index);
+ }
+
+ // __m256 _mm256_floor_ps (__m256 a)
+ public static Vector256 Floor(Vector256 value) { throw new NotImplementedException(); }
+ // __m256d _mm256_floor_pd (__m256d a)
+ public static Vector256 Floor(Vector256 value) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_hadd_ps (__m256 a, __m256 b)
+ public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_hadd_pd (__m256d a, __m256d b)
+ public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_hsub_ps (__m256 a, __m256 b)
+ public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_hsub_pd (__m256d a, __m256d b)
+ public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // __m256i _mm256_insert_epi8 (__m256i a, __int8 i, const int index)
+ private static Vector256 InsertSbyte(Vector256 value, sbyte data, byte index) where T : struct { throw new NotImplementedException(); }
+ public static InsertSbyteVector256Delegate GetInsertSbyte(byte index) where T : struct
+ {
+ return (value, data) => InsertSbyte(value, data, index);
+ }
+ // __m256i _mm256_insert_epi8 (__m256i a, __int8 i, const int index)
+ private static Vector256 InsertByte(Vector256 value, byte data, byte index) where T : struct { throw new NotImplementedException(); }
+ public static InsertByteVector256Delegate GetInsertByte(byte index) where T : struct
+ {
+ return (value, data) => InsertByte(value, data, index);
+ }
+ // __m256i _mm256_insert_epi16 (__m256i a, __int16 i, const int index)
+ private static Vector256 InsertShort(Vector256 value, short data, byte index) where T : struct { throw new NotImplementedException(); }
+ public static InsertShortVector256Delegate GetInsertShort(byte index) where T : struct
+ {
+ return (value, data) => InsertShort(value, data, index);
+ }
+ // __m256i _mm256_insert_epi16 (__m256i a, __int16 i, const int index)
+ private static Vector256 InsertUshort(Vector256 value, ushort data, byte index) where T : struct { throw new NotImplementedException(); }
+ public static InsertUshortVector256Delegate GetInsertUshort(byte index) where T : struct
+ {
+ return (value, data) => InsertUshort(value, data, index);
+ }
+ // __m256i _mm256_insert_epi32 (__m256i a, __int32 i, const int index)
+ private static Vector256 InsertInt(Vector256 value, int data, byte index) where T : struct { throw new NotImplementedException(); }
+ public static InsertIntVector256Delegate GetInsertInt(byte index) where T : struct
+ {
+ return (value, data) => InsertInt(value, data, index);
+ }
+ // __m256i _mm256_insert_epi32 (__m256i a, __int32 i, const int index)
+ private static Vector256 InsertUint(Vector256 value, uint data, byte index) where T : struct { throw new NotImplementedException(); }
+ public static InsertUintVector256Delegate GetInsertUint(byte index) where T : struct
+ {
+ return (value, data) => InsertUint(value, data, index);
+ }
+ // __m256i _mm256_insert_epi64 (__m256i a, __int64 i, const int index)
+ private static Vector256 InsertLong(Vector256 value, long data, byte index) where T : struct { throw new NotImplementedException(); }
+ public static InsertLongVector256Delegate GetInsertLong(byte index) where T : struct
+ {
+ return (value, data) => InsertLong(value, data, index);
+ }
+ // __m256i _mm256_insert_epi64 (__m256i a, __int64 i, const int index)
+ private static Vector256 InsertUlong(Vector256 value, ulong data, byte index) where T : struct { throw new NotImplementedException(); }
+ public static InsertUlongVector256Delegate GetInsertUlong(byte index) where T : struct
+ {
+ return (value, data) => InsertUlong(value, data, index);
+ }
+
+ // __m256 _mm256_insertf128_ps (__m256 a, __m128 b, int imm8)
+ private static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new NotImplementedException(); }
+ public static Insert128Vector256Delegate GetInsertVector128Float(byte index)
+ {
+ return (value, data) => Insert(value, data, index);
+ }
+
+ // __m256d _mm256_insertf128_pd (__m256d a, __m128d b, int imm8)
+ private static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new NotImplementedException(); }
+ public static Insert128Vector256Delegate GetInsertVector128Double(byte index)
+ {
+ return (value, data) => Insert(value, data, index);
+ }
+
+ // __m256i _mm256_loadu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 Load(sbyte* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_loadu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 Load(byte* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_loadu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 Load(short* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_loadu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 Load(ushort* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_loadu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 Load(int* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_loadu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 Load(uint* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_loadu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 Load(long* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_loadu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 Load(ulong* mem) { throw new NotImplementedException(); }
+ // __m256 _mm256_loadu_ps (float const * mem_addr)
+ public static unsafe Vector256 Load(float* mem) { throw new NotImplementedException(); }
+ // __m256d _mm256_loadu_pd (double const * mem_addr)
+ public static unsafe Vector256 Load(double* mem) { throw new NotImplementedException(); }
+
+ // __m256i _mm256_load_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadAligned(sbyte* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_load_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadAligned(byte* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_load_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadAligned(short* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_load_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadAligned(ushort* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_load_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadAligned(int* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_load_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadAligned(uint* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_load_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadAligned(long* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_load_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadAligned(ulong* mem) { throw new NotImplementedException(); }
+ // __m256 _mm256_load_ps (float const * mem_addr)
+ public static unsafe Vector256 LoadAligned(float* mem) { throw new NotImplementedException(); }
+ // __m256d _mm256_load_pd (double const * mem_addr)
+ public static unsafe Vector256 LoadAligned(double* mem) { throw new NotImplementedException(); }
+
+ // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadDqu(sbyte* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadDqu(byte* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadDqu(short* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadDqu(ushort* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadDqu(int* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadDqu(uint* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadDqu(long* mem) { throw new NotImplementedException(); }
+ // __m256i _mm256_lddqu_si256 (__m256i const * mem_addr)
+ public static unsafe Vector256 LoadDqu(ulong* mem) { throw new NotImplementedException(); }
+
+ // __m128d _mm_maskload_pd (double const * mem_addr, __m128i mask)
+ public static unsafe Vector128 MaskLoad(float* mem, Vector128 mask) { throw new NotImplementedException(); }
+ // __m128d _mm_maskload_pd (double const * mem_addr, __m128i mask)
+ public static unsafe Vector128 MaskLoad(double* mem, Vector128 mask) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_maskload_ps (float const * mem_addr, __m256i mask)
+ public static unsafe Vector256 MaskLoad(float* mem, Vector256 mask) { throw new NotImplementedException(); }
+ // __m256d _mm256_maskload_pd (double const * mem_addr, __m256i mask)
+ public static unsafe Vector256 MaskLoad(double* mem, Vector256 mask) { throw new NotImplementedException(); }
+
+ // void _mm_maskstore_ps (float * mem_addr, __m128i mask, __m128 a)
+ public static unsafe void MaskStore(float* mem, Vector128 mask, Vector128 source) { throw new NotImplementedException(); }
+ // void _mm_maskstore_pd (double * mem_addr, __m128i mask, __m128d a)
+ public static unsafe void MaskStore(double* mem, Vector128 mask, Vector128 source) { throw new NotImplementedException(); }
+
+ // void _mm256_maskstore_ps (float * mem_addr, __m256i mask, __m256 a)
+ public static unsafe void MaskStore(float* mem, Vector256 mask, Vector256 source) { throw new NotImplementedException(); }
+ // void _mm256_maskstore_pd (double * mem_addr, __m256i mask, __m256d a)
+ public static unsafe void MaskStore(double* mem, Vector256 mask, Vector256 source) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_max_ps (__m256 a, __m256 b)
+ public static Vector256 Max(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_max_pd (__m256d a, __m256d b)
+ public static Vector256 Max(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // __m256 _mm256_min_ps (__m256 a, __m256 b)
+ public static Vector256 Min(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+ // __m256d _mm256_min_pd (__m256d a, __m256d b)
+ public static Vector256 Min(Vector256 left, Vector256 right) { throw new NotImplementedException(); }
+
+ // int _mm256_movemask_ps (__m256 a)
+ public static int MoveMask(Vector256