diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Aes.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Aes.PlatformNotSupported.cs index 68c0a1352610..5df8f266dfac 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Aes.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Aes.PlatformNotSupported.cs @@ -17,55 +17,67 @@ public static class Aes /// /// __m128i _mm_aesdec_si128 (__m128i a, __m128i RoundKey) + /// AESDEC xmm, xmm/m128 /// public static Vector128 Decrypt(Vector128 value, Vector128 roundKey) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesdec_si128 (__m128i a, __m128i RoundKey) + /// AESDEC xmm, xmm/m128 /// public static Vector128 Decrypt(Vector128 value, Vector128 roundKey) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesdeclast_si128 (__m128i a, __m128i RoundKey) + /// AESDECLAST xmm, xmm/m128 /// public static Vector128 DecryptLast(Vector128 value, Vector128 roundKey) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesdeclast_si128 (__m128i a, __m128i RoundKey) + /// AESDECLAST xmm, xmm/m128 /// public static Vector128 DecryptLast(Vector128 value, Vector128 roundKey) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesenc_si128 (__m128i a, __m128i RoundKey) + /// AESENC xmm, xmm/m128 /// public static Vector128 Encrypt(Vector128 value, Vector128 roundKey) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesenc_si128 (__m128i a, __m128i RoundKey) + /// AESENC xmm, xmm/m128 /// public static Vector128 Encrypt(Vector128 value, Vector128 roundKey) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesenclast_si128 (__m128i a, __m128i RoundKey) + /// AESENCLAST xmm, xmm/m128 /// public static Vector128 EncryptLast(Vector128 value, Vector128 roundKey) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesenclast_si128 (__m128i a, __m128i RoundKey) + /// AESENCLAST xmm, xmm/m128 /// public static Vector128 EncryptLast(Vector128 value, Vector128 roundKey) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesimc_si128 (__m128i a) + /// AESIMC xmm, xmm/m128 /// public static Vector128 InvisibleMixColumn(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aesimc_si128 (__m128i a) + /// AESIMC xmm, xmm/m128 /// public static Vector128 InvisibleMixColumn(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aeskeygenassist_si128 (__m128i a, const int imm8) + /// AESKEYGENASSIST xmm, xmm/m128, imm8 /// public static Vector128 KeygenAssist(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_aeskeygenassist_si128 (__m128i a, const int imm8) + /// AESKEYGENASSIST xmm, xmm/m128, imm8 /// public static Vector128 KeygenAssist(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Aes.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Aes.cs index b3c2a3da477d..349919a21ca6 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Aes.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Aes.cs @@ -17,55 +17,67 @@ public static class Aes /// /// __m128i _mm_aesdec_si128 (__m128i a, __m128i RoundKey) + /// AESDEC xmm, xmm/m128 /// public static Vector128 Decrypt(Vector128 value, Vector128 roundKey) => Decrypt(value, roundKey); /// /// __m128i _mm_aesdec_si128 (__m128i a, __m128i RoundKey) + /// AESDEC xmm, xmm/m128 /// public static Vector128 Decrypt(Vector128 value, Vector128 roundKey) => Decrypt(value, roundKey); /// /// __m128i _mm_aesdeclast_si128 (__m128i a, __m128i RoundKey) + /// AESDECLAST xmm, xmm/m128 /// public static Vector128 DecryptLast(Vector128 value, Vector128 roundKey) => DecryptLast(value, roundKey); /// /// __m128i _mm_aesdeclast_si128 (__m128i a, __m128i RoundKey) + /// AESDECLAST xmm, xmm/m128 /// public static Vector128 DecryptLast(Vector128 value, Vector128 roundKey) => DecryptLast(value, roundKey); /// /// __m128i _mm_aesenc_si128 (__m128i a, __m128i RoundKey) + /// AESENC xmm, xmm/m128 /// public static Vector128 Encrypt(Vector128 value, Vector128 roundKey) => Encrypt(value, roundKey); /// /// __m128i _mm_aesenc_si128 (__m128i a, __m128i RoundKey) + /// AESENC xmm, xmm/m128 /// public static Vector128 Encrypt(Vector128 value, Vector128 roundKey) => Encrypt(value, roundKey); /// /// __m128i _mm_aesenclast_si128 (__m128i a, __m128i RoundKey) + /// AESENCLAST xmm, xmm/m128 /// public static Vector128 EncryptLast(Vector128 value, Vector128 roundKey) => EncryptLast(value, roundKey); /// /// __m128i _mm_aesenclast_si128 (__m128i a, __m128i RoundKey) + /// AESENCLAST xmm, xmm/m128 /// public static Vector128 EncryptLast(Vector128 value, Vector128 roundKey) => EncryptLast(value, roundKey); /// /// __m128i _mm_aesimc_si128 (__m128i a) + /// AESIMC xmm, xmm/m128 /// public static Vector128 InvisibleMixColumn(Vector128 value) => InvisibleMixColumn(value); /// /// __m128i _mm_aesimc_si128 (__m128i a) + /// AESIMC xmm, xmm/m128 /// public static Vector128 InvisibleMixColumn(Vector128 value) => InvisibleMixColumn(value); /// /// __m128i _mm_aeskeygenassist_si128 (__m128i a, const int imm8) + /// AESKEYGENASSIST xmm, xmm/m128, imm8 /// public static Vector128 KeygenAssist(Vector128 value, byte control) => KeygenAssist(value, control); /// /// __m128i _mm_aeskeygenassist_si128 (__m128i a, const int imm8) + /// AESKEYGENASSIST xmm, xmm/m128, imm8 /// public static Vector128 KeygenAssist(Vector128 value, byte control) => KeygenAssist(value, control); diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx.PlatformNotSupported.cs index c43b5d3d5920..399f93b8a864 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx.PlatformNotSupported.cs @@ -17,991 +17,1242 @@ public static class Avx /// /// __m256 _mm256_add_ps (__m256 a, __m256 b) + /// VADDPS ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_add_pd (__m256d a, __m256d b) + /// VADDPD ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_addsub_ps (__m256 a, __m256 b) + /// VADDSUBPS ymm, ymm, ymm/m256 /// public static Vector256 AddSubtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_addsub_pd (__m256d a, __m256d b) + /// VADDSUBPD ymm, ymm, ymm/m256 /// public static Vector256 AddSubtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_and_ps (__m256 a, __m256 b) + /// VANDPS ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_and_pd (__m256d a, __m256d b) + /// VANDPD ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_andnot_ps (__m256 a, __m256 b) + /// VANDNPS ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_andnot_pd (__m256d a, __m256d b) + /// VANDNPD ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_blend_ps (__m256 a, __m256 b, const int imm8) + /// VBLENDPS ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_blend_pd (__m256d a, __m256d b, const int imm8) + /// VBLENDPD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256 _mm256_blendv_ps (__m256 a, __m256 b, __m256 mask) + /// VBLENDVPS ymm, ymm, ymm/m256, ymm /// public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_blendv_pd (__m256d a, __m256d b, __m256d mask) + /// VBLENDVPD ymm, ymm, ymm/m256, ymm /// public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_broadcast_ss (float const * mem_addr) + /// VBROADCASTSS xmm, m32 /// - public static Vector128 BroadcastElementToVector128(ref float source) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 BroadcastScalarToVector128(float* source) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_broadcast_ss (float const * mem_addr) + /// VBROADCASTSS ymm, m32 /// - public static Vector256 BroadcastElementToVector256(ref float source) { throw new PlatformNotSupportedException(); } + public static unsafe Vector256 BroadcastScalarToVector256(float* source) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_broadcast_sd (double const * mem_addr) + /// VBROADCASTSD ymm, m64 /// - public static Vector256 BroadcastElementToVector256(ref double source) { throw new PlatformNotSupportedException(); } + public static unsafe Vector256 BroadcastScalarToVector256(double* source) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_broadcast_ps (__m128 const * mem_addr) + /// VBROADCASTF128, ymm, m128 /// public static unsafe Vector256 BroadcastVector128ToVector256(float* address) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_broadcast_pd (__m128d const * mem_addr) + /// VBROADCASTF128, ymm, m128 /// public static unsafe Vector256 BroadcastVector128ToVector256(double* address) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_ceil_ps (__m256 a) + /// VROUNDPS ymm, ymm/m256, imm8(10) /// public static Vector256 Ceiling(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_ceil_pd (__m256d a) + /// VROUNDPD ymm, ymm/m256, imm8(10) /// public static Vector256 Ceiling(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmp_ps (__m128 a, __m128 b, const int imm8) + /// VCMPPS xmm, xmm, xmm/m128, imm8 /// public static Vector128 Compare(Vector128 left, Vector128 right, FloatComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmp_pd (__m128d a, __m128d b, const int imm8) + /// VCMPPD xmm, xmm, xmm/m128, imm8 /// public static Vector128 Compare(Vector128 left, Vector128 right, FloatComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_cmp_ps (__m256 a, __m256 b, const int imm8) + /// VCMPPS ymm, ymm, ymm/m256, imm8 /// public static Vector256 Compare(Vector256 left, Vector256 right, FloatComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_cmp_pd (__m256d a, __m256d b, const int imm8) + /// VCMPPD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Compare(Vector256 left, Vector256 right, FloatComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmp_sd (__m128d a, __m128d b, const int imm8) + /// VCMPSS xmm, xmm, xmm/m32, imm8 /// public static Vector128 CompareScalar(Vector128 left, Vector128 right, FloatComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmp_ss (__m128 a, __m128 b, const int imm8) + /// VCMPSD xmm, xmm, xmm/m64, imm8 /// public static Vector128 CompareScalar(Vector128 left, Vector128 right, FloatComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// float _mm256_cvtss_f32 (__m256 a) + /// HELPER: VMOVSS /// public static float ConvertToSingle(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_cvtpd_epi32 (__m256d a) + /// VCVTPD2DQ xmm, ymm/m256 /// public static Vector128 ConvertToVector128Int32(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm256_cvtpd_ps (__m256d a) + /// VCVTPD2PS xmm, ymm/m256 /// public static Vector128 ConvertToVector128Single(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtps_epi32 (__m256 a) + /// VCVTPS2DQ ymm, ymm/m256 /// public static Vector256 ConvertToVector256Int32(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_cvtepi32_ps (__m256i a) + /// VCVTDQ2PS ymm, ymm/m256 /// public static Vector256 ConvertToVector256Single(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_cvtps_pd (__m128 a) + /// VCVTPS2PD ymm, xmm/m128 /// - public static Vector256 ConvertToVector256Double(Vector256 value) { throw new PlatformNotSupportedException(); } + public static Vector256 ConvertToVector256Double(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_cvtepi32_pd (__m128i a) + /// VCVTDQ2PD ymm, xmm/m128 /// - public static Vector256 ConvertToVector256Double(Vector256 value) { throw new PlatformNotSupportedException(); } + public static Vector256 ConvertToVector256Double(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_cvttpd_epi32 (__m256d a) + /// VCVTTPD2DQ xmm, ymm/m256 /// public static Vector128 ConvertToVector128Int32WithTruncation(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvttps_epi32 (__m256 a) + /// VCVTTPS2DQ ymm, ymm/m256 /// public static Vector256 ConvertToVector256Int32WithTruncation(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_div_ps (__m256 a, __m256 b) + /// VDIVPS ymm, ymm, ymm/m256 /// public static Vector256 Divide(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_div_pd (__m256d a, __m256d b) + /// VDIVPD ymm, ymm, ymm/m256 /// public static Vector256 Divide(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_dp_ps (__m256 a, __m256 b, const int imm8) + /// VDPPS ymm, ymm, ymm/m256, imm8 /// public static Vector256 DotProduct(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256 _mm256_moveldup_ps (__m256 a) + /// VMOVSLDUP ymm, ymm/m256 /// public static Vector256 DuplicateEvenIndexed(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_movedup_pd (__m256d a) + /// VMOVDDUP ymm, ymm/m256 /// public static Vector256 DuplicateEvenIndexed(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_movehdup_ps (__m256 a) + /// VMOVSHDUP ymm, ymm/m256 /// public static Vector256 DuplicateOddIndexed(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __int8 _mm256_extract_epi8 (__m256i a, const int index) + /// HELPER /// public static sbyte Extract(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int8 _mm256_extract_epi8 (__m256i a, const int index) + /// HELPER /// public static byte Extract(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int16 _mm256_extract_epi16 (__m256i a, const int index) + /// HELPER /// public static short Extract(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int16 _mm256_extract_epi16 (__m256i a, const int index) + /// HELPER /// public static ushort Extract(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int32 _mm256_extract_epi32 (__m256i a, const int index) + /// HELPER /// public static int Extract(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int32 _mm256_extract_epi32 (__m256i a, const int index) + /// HELPER /// public static uint Extract(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm256_extract_epi64 (__m256i a, const int index) + /// HELPER /// public static long Extract(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm256_extract_epi64 (__m256i a, const int index) + /// HELPER /// public static ulong Extract(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } - + /// /// __m128 _mm256_extractf128_ps (__m256 a, const int imm8) + /// VEXTRACTF128 xmm/m128, ymm, imm8 /// __m128d _mm256_extractf128_pd (__m256d a, const int imm8) + /// VEXTRACTF128 xmm/m128, ymm, imm8 /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 xmm/m128, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(byte* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(sbyte* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(short* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(ushort* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(int* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(uint* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(long* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(ulong* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm256_extractf128_ps (__m256 a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(float* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm256_extractf128_pd (__m256d a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(double* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } - + /// /// __m256d _mm256_castpd128_pd256 (__m128d a) + /// HELPER - No Codegen /// __m256 _mm256_castps128_ps256 (__m128 a) + /// HELPER - No Codegen /// __m256i _mm256_castsi128_si256 (__m128i a) + /// HELPER - No Codegen /// public static Vector256 ExtendToVector256(Vector128 value) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_floor_ps (__m256 a) + /// VROUNDPS ymm, ymm/m256, imm8(9) /// public static Vector256 Floor(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_floor_pd (__m256d a) + /// VROUNDPS ymm, ymm/m256, imm8(9) /// public static Vector256 Floor(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm256_castpd256_pd128 (__m256d a) + /// HELPER - No Codegen /// __m128 _mm256_castps256_ps128 (__m256 a) + /// HELPER - No Codegen /// __m128i _mm256_castsi256_si128 (__m256i a) + /// HELPER - No Codegen /// public static Vector128 GetLowerHalf(Vector256 value) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_hadd_ps (__m256 a, __m256 b) + /// VHADDPS ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_hadd_pd (__m256d a, __m256d b) + /// VHADDPD ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_hsub_ps (__m256 a, __m256 b) + /// VHSUBPS ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_hsub_pd (__m256d a, __m256d b) + /// VHSUBPD ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insert_epi8 (__m256i a, __int8 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, sbyte data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insert_epi8 (__m256i a, __int8 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, byte data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insert_epi16 (__m256i a, __int16 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, short data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insert_epi16 (__m256i a, __int16 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, ushort data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insert_epi32 (__m256i a, __int32 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, int data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insert_epi32 (__m256i a, __int32 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, uint data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insert_epi64 (__m256i a, __int64 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, long data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insert_epi64 (__m256i a, __int64 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, ulong data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_insertf128_ps (__m256 a, __m128 b, int imm8) + /// VINSERTF128 ymm, ymm, xmm/m128, imm8 /// __m256d _mm256_insertf128_pd (__m256d a, __m128d b, int imm8) + /// VINSERTF128 ymm, ymm, xmm/m128, imm8 /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, xmm/m128, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, sbyte* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, byte* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, short* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, ushort* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, int* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, uint* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, long* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, ulong* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_insertf128_ps (__m256 a, __m128 b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, float* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_insertf128_pd (__m256d a, __m128d b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, double* address, byte index) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(sbyte* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(byte* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(short* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(ushort* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(int* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(uint* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(long* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(ulong* address) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_loadu_ps (float const * mem_addr) + /// VMOVUPS ymm, ymm/m256 /// public static unsafe Vector256 LoadVector256(float* address) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_loadu_pd (double const * mem_addr) + /// VMOVUPD ymm, ymm/m256 /// public static unsafe Vector256 LoadVector256(double* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(sbyte* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(byte* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(short* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(ushort* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(int* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(uint* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(long* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(ulong* address) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_load_ps (float const * mem_addr) + /// VMOVAPS ymm, ymm/m256 /// public static unsafe Vector256 LoadAlignedVector256(float* address) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_load_pd (double const * mem_addr) + /// VMOVAPD ymm, ymm/m256 /// public static unsafe Vector256 LoadAlignedVector256(double* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(sbyte* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(byte* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(short* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(ushort* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(int* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(uint* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(long* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(ulong* address) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_maskload_ps (float const * mem_addr, __m128i mask) + /// VMASKMOVPS xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(float* address, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_maskload_pd (double const * mem_addr, __m128i mask) + /// VMASKMOVPD xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(double* address, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_maskload_ps (float const * mem_addr, __m256i mask) + /// VMASKMOVPS ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(float* address, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_maskload_pd (double const * mem_addr, __m256i mask) + /// VMASKMOVPD ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(double* address, Vector256 mask) { throw new PlatformNotSupportedException(); } - + /// /// void _mm_maskstore_ps (float * mem_addr, __m128i mask, __m128 a) + /// VMASKMOVPS m128, xmm, xmm /// public static unsafe void MaskStore(float* address, Vector128 mask, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_maskstore_pd (double * mem_addr, __m128i mask, __m128d a) + /// VMASKMOVPD m128, xmm, xmm /// public static unsafe void MaskStore(double* address, Vector128 mask, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_maskstore_ps (float * mem_addr, __m256i mask, __m256 a) + /// VMASKMOVPS m256, ymm, ymm /// public static unsafe void MaskStore(float* address, Vector256 mask, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_maskstore_pd (double * mem_addr, __m256i mask, __m256d a) + /// VMASKMOVPD m256, ymm, ymm /// public static unsafe void MaskStore(double* address, Vector256 mask, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_max_ps (__m256 a, __m256 b) + /// VMAXPS ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_max_pd (__m256d a, __m256d b) + /// VMAXPD ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_min_ps (__m256 a, __m256 b) + /// VMINPS ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_min_pd (__m256d a, __m256d b) + /// VMINPD ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// int _mm256_movemask_ps (__m256 a) + /// VMOVMSKPS reg, ymm /// public static int MoveMask(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// int _mm256_movemask_pd (__m256d a) + /// VMOVMSKPD reg, ymm /// public static int MoveMask(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_mul_ps (__m256 a, __m256 b) + /// VMULPS ymm, ymm, ymm/m256 /// public static Vector256 Multiply(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_mul_pd (__m256d a, __m256d b) + /// VMULPD ymm, ymm, ymm/m256 /// public static Vector256 Multiply(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_or_ps (__m256 a, __m256 b) + /// VORPS ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_or_pd (__m256d a, __m256d b) + /// VORPD ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_permute_ps (__m128 a, int imm8) + /// VPERMILPS xmm, xmm, imm8 /// public static Vector128 Permute(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_permute_pd (__m128d a, int imm8) + /// VPERMILPD xmm, xmm, imm8 /// public static Vector128 Permute(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256 _mm256_permute_ps (__m256 a, int imm8) + /// VPERMILPS ymm, ymm, imm8 /// public static Vector256 Permute(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_permute_pd (__m256d a, int imm8) + /// VPERMILPD ymm, ymm, imm8 /// public static Vector256 Permute(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256 _mm256_permute2f128_ps (__m256 a, __m256 b, int imm8) + /// VPERM2F128 ymm, ymm, ymm/m256, imm8 /// __m256d _mm256_permute2f128_pd (__m256d a, __m256d b, int imm8) + /// VPERM2F128 ymm, ymm, ymm/m256, imm8 /// __m256i _mm256_permute2f128_si256 (__m256i a, __m256i b, int imm8) + /// VPERM2F128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_permutevar_ps (__m128 a, __m128i b) + /// VPERMILPS xmm, xmm, xmm/m128 /// public static Vector128 PermuteVar(Vector128 left, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_permutevar_pd (__m128d a, __m128i b) + /// VPERMILPD xmm, xmm, xmm/m128 /// public static Vector128 PermuteVar(Vector128 left, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_permutevar_ps (__m256 a, __m256i b) + /// VPERMILPS ymm, ymm, ymm/m256 /// public static Vector256 PermuteVar(Vector256 left, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_permutevar_pd (__m256d a, __m256i b) + /// VPERMILPD ymm, ymm, ymm/m256 /// public static Vector256 PermuteVar(Vector256 left, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_rcp_ps (__m256 a) + /// VRCPPS ymm, ymm/m256 /// public static Vector256 Reciprocal(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_rsqrt_ps (__m256 a) + /// VRSQRTPS ymm, ymm/m256 /// public static Vector256 ReciprocalSqrt(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// __m256 _mm256_round_ps (__m256 a, int rounding) - /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) + /// VROUNDPS ymm, ymm/m256, imm8(8) /// public static Vector256 RoundToNearestInteger(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) + /// VROUNDPS ymm, ymm/m256, imm8(9) /// public static Vector256 RoundToNegativeInfinity(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) + /// VROUNDPS ymm, ymm/m256, imm8(10) /// public static Vector256 RoundToPositiveInfinity(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC) + /// VROUNDPS ymm, ymm/m256, imm8(11) /// public static Vector256 RoundToZero(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_CUR_DIRECTION + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_CUR_DIRECTION) + /// VROUNDPS ymm, ymm/m256, imm8(4) /// public static Vector256 RoundCurrentDirection(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// __m256d _mm256_round_pd (__m256d a, int rounding) - /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) + /// VROUNDPD ymm, ymm/m256, imm8(8) /// public static Vector256 RoundToNearestInteger(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) + /// VROUNDPD ymm, ymm/m256, imm8(9) /// public static Vector256 RoundToNegativeInfinity(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) + /// VROUNDPD ymm, ymm/m256, imm8(10) /// public static Vector256 RoundToPositiveInfinity(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC) + /// VROUNDPD ymm, ymm/m256, imm8(11) /// public static Vector256 RoundToZero(Vector256 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_CUR_DIRECTION + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_CUR_DIRECTION) + /// VROUNDPD ymm, ymm/m256, imm8(4) /// public static Vector256 RoundCurrentDirection(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_set_epi8 (char e31, char e30, char e29, char e28, char e27, char e26, char e25, char e24, char e23, char e22, char e21, char e20, char e19, char e18, char e17, char e16, char e15, char e14, char e13, char e12, char e11, char e10, char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2, char e1, char e0) + /// HELPER /// public static Vector256 SetVector256(sbyte e31, sbyte e30, sbyte e29, sbyte e28, sbyte e27, sbyte e26, sbyte e25, sbyte e24, sbyte e23, sbyte e22, sbyte e21, sbyte e20, sbyte e19, sbyte e18, sbyte e17, sbyte e16, sbyte e15, sbyte e14, sbyte e13, sbyte e12, sbyte e11, sbyte e10, sbyte e9, sbyte e8, sbyte e7, sbyte e6, sbyte e5, sbyte e4, sbyte e3, sbyte e2, sbyte e1, sbyte e0) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_set_epi8 (char e31, char e30, char e29, char e28, char e27, char e26, char e25, char e24, char e23, char e22, char e21, char e20, char e19, char e18, char e17, char e16, char e15, char e14, char e13, char e12, char e11, char e10, char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2, char e1, char e0) + /// HELPER /// public static Vector256 SetVector256(byte e31, byte e30, byte e29, byte e28, byte e27, byte e26, byte e25, byte e24, byte e23, byte e22, byte e21, byte e20, byte e19, byte e18, byte e17, byte e16, byte e15, byte e14, byte e13, byte e12, byte e11, byte e10, byte e9, byte e8, byte e7, byte e6, byte e5, byte e4, byte e3, byte e2, byte e1, byte e0) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_set_epi16 (short e15, short e14, short e13, short e12, short e11, short e10, short e9, short e8, short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) + /// HELPER /// public static Vector256 SetVector256(short e15, short e14, short e13, short e12, short e11, short e10, short e9, short e8, short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_set_epi16 (short e15, short e14, short e13, short e12, short e11, short e10, short e9, short e8, short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) + /// HELPER /// public static Vector256 SetVector256(ushort e15, ushort e14, ushort e13, ushort e12, ushort e11, ushort e10, ushort e9, ushort e8, ushort e7, ushort e6, ushort e5, ushort e4, ushort e3, ushort e2, ushort e1, ushort e0) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_set_epi32 (int e7, int e6, int e5, int e4, int e3, int e2, int e1, int e0) + /// HELPER /// public static Vector256 SetVector256(int e7, int e6, int e5, int e4, int e3, int e2, int e1, int e0) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_set_epi32 (int e7, int e6, int e5, int e4, int e3, int e2, int e1, int e0) + /// HELPER /// public static Vector256 SetVector256(uint e7, uint e6, uint e5, uint e4, uint e3, uint e2, uint e1, uint e0) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_set_epi64x (__int64 e3, __int64 e2, __int64 e1, __int64 e0) + /// HELPER /// public static Vector256 SetVector256(long e3, long e2, long e1, long e0) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_set_epi64x (__int64 e3, __int64 e2, __int64 e1, __int64 e0) + /// HELPER /// public static Vector256 SetVector256(ulong e3, ulong e2, ulong e1, ulong e0) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_set_ps (float e7, float e6, float e5, float e4, float e3, float e2, float e1, float e0) + /// HELPER /// public static Vector256 SetVector256(float e7, float e6, float e5, float e4, float e3, float e2, float e1, float e0) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_set_pd (double e3, double e2, double e1, double e0) + /// HELPER /// public static Vector256 SetVector256(double e3, double e2, double e1, double e0) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_set1_epi8 (char a) + /// HELPER /// __m256i _mm256_set1_epi16 (short a) + /// HELPER /// __m256i _mm256_set1_epi32 (int a) + /// HELPER /// __m256i _mm256_set1_epi64x (long long a) + /// HELPER /// __m256 _mm256_set1_ps (float a) + /// HELPER /// __m256d _mm256_set1_pd (double a) + /// HELPER /// public static Vector256 SetAllVector256(T value) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_set_m128 (__m128 hi, __m128 lo) + /// HELPER /// __m256d _mm256_set_m128d (__m128d hi, __m128d lo) + /// HELPER /// __m256i _mm256_set_m128i (__m128i hi, __m128i lo) + /// HELPER /// public static Vector256 SetHighLow(Vector128 hi, Vector128 lo) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_setzero_si256 (void) + /// HELPER /// __m256 _mm256_setzero_ps (void) + /// HELPER /// __m256d _mm256_setzero_pd (void) + /// HELPER /// public static Vector256 SetZeroVector256() where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_shuffle_ps (__m256 a, __m256 b, const int imm8) + /// VSHUFPS ymm, ymm, ymm/m256, imm8 /// public static Vector256 Shuffle(Vector256 value, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_shuffle_pd (__m256d a, __m256d b, const int imm8) + /// VSHUFPD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Shuffle(Vector256 value, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256 _mm256_sqrt_ps (__m256 a) + /// VSQRTPS ymm, ymm/m256 /// public static Vector256 Sqrt(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_sqrt_pd (__m256d a) + /// VSQRTPD ymm, ymm/m256 /// public static Vector256 Sqrt(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_castpd_ps (__m256d a) + /// HELPER - No Codegen /// __m256i _mm256_castpd_si256 (__m256d a) + /// HELPER - No Codegen /// __m256d _mm256_castps_pd (__m256 a) + /// HELPER - No Codegen /// __m256i _mm256_castps_si256 (__m256 a) + /// HELPER - No Codegen /// __m256d _mm256_castsi256_pd (__m256i a) + /// HELPER - No Codegen /// __m256 _mm256_castsi256_ps (__m256i a) + /// HELPER - No Codegen /// public static Vector256 StaticCast(Vector256 value) where T : struct where U : struct { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(sbyte* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(byte* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(short* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(ushort* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(int* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(uint* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(long* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(ulong* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_ps (float * mem_addr, __m256 a) + /// VMOVAPS m256, ymm /// public static unsafe void StoreAligned(float* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_store_pd (double * mem_addr, __m256d a) + /// VMOVAPD m256, ymm /// public static unsafe void StoreAligned(double* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(sbyte* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(byte* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(short* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(ushort* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(int* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(uint* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(long* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(ulong* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_ps (float * mem_addr, __m256 a) + /// MOVNTPS m256, ymm /// public static unsafe void StoreAlignedNonTemporal(float* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_stream_pd (double * mem_addr, __m256d a) + /// MOVNTPD m256, ymm /// public static unsafe void StoreAlignedNonTemporal(double* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(sbyte* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(byte* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(short* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(ushort* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(int* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(uint* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(long* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(ulong* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_ps (float * mem_addr, __m256 a) + /// MOVUPS m256, ymm /// public static unsafe void Store(float* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_storeu_pd (double * mem_addr, __m256d a) + /// MOVUPD m256, ymm /// public static unsafe void Store(double* address, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_sub_ps (__m256 a, __m256 b) + /// VSUBPS ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_sub_pd (__m256d a, __m256d b) + /// VSUBPD ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_testc_ps (__m128 a, __m128 b) + /// VTESTPS xmm, xmm/m128 /// - public static bool TestC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static bool TestC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_testc_pd (__m128d a, __m128d b) + /// VTESTPD xmm, xmm/m128 /// public static bool TestC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm256_testc_si256 (__m256i a, __m256i b) + /// VPTEST ymm, ymm/m256 /// int _mm256_testc_ps (__m256 a, __m256 b) + /// VTESTPS ymm, ymm/m256 /// int _mm256_testc_pd (__m256d a, __m256d b) + /// VTESTPS ymm, ymm/m256 /// public static bool TestC(Vector256 left, Vector256 right) where T : struct { throw new PlatformNotSupportedException(); } /// /// int _mm_testnzc_ps (__m128 a, __m128 b) + /// VTESTPS xmm, xmm/m128 /// - public static bool TestNotZAndNotC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static bool TestNotZAndNotC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_testnzc_pd (__m128d a, __m128d b) + /// VTESTPD xmm, xmm/m128 /// public static bool TestNotZAndNotC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm256_testnzc_si256 (__m256i a, __m256i b) + /// VPTEST ymm, ymm/m256 /// int _mm256_testnzc_ps (__m256 a, __m256 b) + /// VTESTPS ymm, ymm/m256 /// int _mm256_testnzc_pd (__m256d a, __m256d b) + /// VTESTPD ymm, ymm/m256 /// public static bool TestNotZAndNotC(Vector256 left, Vector256 right) where T : struct { throw new PlatformNotSupportedException(); } /// /// int _mm_testz_ps (__m128 a, __m128 b) + /// VTESTPS xmm, xmm/m128 /// public static bool TestZ(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_testz_pd (__m128d a, __m128d b) + /// VTESTPD xmm, xmm/m128 /// public static bool TestZ(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm256_testz_si256 (__m256i a, __m256i b) + /// VPTEST ymm, ymm/m256 /// int _mm256_testz_ps (__m256 a, __m256 b) + /// VTESTPS ymm, ymm/m256 /// int _mm256_testz_pd (__m256d a, __m256d b) + /// VTESTPD ymm, ymm/m256 /// public static bool TestZ(Vector256 left, Vector256 right) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_unpackhi_ps (__m256 a, __m256 b) + /// VUNPCKHPS ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_unpackhi_pd (__m256d a, __m256d b) + /// VUNPCKHPD ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_unpacklo_ps (__m256 a, __m256 b) + /// VUNPCKLPS ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_unpacklo_pd (__m256d a, __m256d b) + /// VUNPCKLPD ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_xor_ps (__m256 a, __m256 b) + /// VXORPS ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_xor_pd (__m256d a, __m256d b) + /// VXORPS ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// void _mm256_zeroall (void) + /// VZEROALL /// public static void ZeroAll() { throw new PlatformNotSupportedException(); } /// /// void _mm256_zeroupper (void) + /// VZEROUPPER /// public static void ZeroUpper() { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_zextpd128_pd256 (__m128d a) + /// HELPER - No Codegen /// __m256 _mm256_zextps128_ps256 (__m128 a) + /// HELPER - No Codegen /// __m256i _mm256_zextsi128_si256 (__m128i a) + /// HELPER - No Codegen /// public static Vector256 ZeroExtendToVector256(Vector128 value) where T : struct { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx.cs index f5c95247b283..48ad6cbd959d 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx.cs @@ -14,223 +14,274 @@ namespace System.Runtime.Intrinsics.X86 public static class Avx { public static bool IsSupported { get => IsSupported; } - + /// /// __m256 _mm256_add_ps (__m256 a, __m256 b) + /// VADDPS ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256d _mm256_add_pd (__m256d a, __m256d b) + /// VADDPD ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256 _mm256_addsub_ps (__m256 a, __m256 b) + /// VADDSUBPS ymm, ymm, ymm/m256 /// public static Vector256 AddSubtract(Vector256 left, Vector256 right) => AddSubtract(left, right); /// /// __m256d _mm256_addsub_pd (__m256d a, __m256d b) + /// VADDSUBPD ymm, ymm, ymm/m256 /// public static Vector256 AddSubtract(Vector256 left, Vector256 right) => AddSubtract(left, right); /// /// __m256 _mm256_and_ps (__m256 a, __m256 b) + /// VANDPS ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256d _mm256_and_pd (__m256d a, __m256d b) + /// VANDPD ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256 _mm256_andnot_ps (__m256 a, __m256 b) + /// VANDNPS ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256d _mm256_andnot_pd (__m256d a, __m256d b) + /// VANDNPD ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256 _mm256_blend_ps (__m256 a, __m256 b, const int imm8) + /// VBLENDPS ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) => Blend(left, right, control); /// /// __m256d _mm256_blend_pd (__m256d a, __m256d b, const int imm8) + /// VBLENDPD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) => Blend(left, right, control); - + /// /// __m256 _mm256_blendv_ps (__m256 a, __m256 b, __m256 mask) + /// VBLENDVPS ymm, ymm, ymm/m256, ymm /// public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); /// /// __m256d _mm256_blendv_pd (__m256d a, __m256d b, __m256d mask) + /// VBLENDVPD ymm, ymm, ymm/m256, ymm /// public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); /// /// __m128 _mm_broadcast_ss (float const * mem_addr) + /// VBROADCASTSS xmm, m32 /// - public static Vector128 BroadcastElementToVector128(ref float source) => BroadcastElementToVector128(ref source); + public static unsafe Vector128 BroadcastScalarToVector128(float* source) => BroadcastScalarToVector128(source); /// /// __m256 _mm256_broadcast_ss (float const * mem_addr) + /// VBROADCASTSS ymm, m32 /// - public static Vector256 BroadcastElementToVector256(ref float source) => BroadcastElementToVector256(ref source); + public static unsafe Vector256 BroadcastScalarToVector256(float* source) => BroadcastScalarToVector256(source); /// /// __m256d _mm256_broadcast_sd (double const * mem_addr) + /// VBROADCASTSD ymm, m64 /// - public static Vector256 BroadcastElementToVector256(ref double source) => BroadcastElementToVector256(ref source); + public static unsafe Vector256 BroadcastScalarToVector256(double* source) => BroadcastScalarToVector256(source); /// /// __m256 _mm256_broadcast_ps (__m128 const * mem_addr) + /// VBROADCASTF128, ymm, m128 /// public static unsafe Vector256 BroadcastVector128ToVector256(float* address) => BroadcastVector128ToVector256(address); /// /// __m256d _mm256_broadcast_pd (__m128d const * mem_addr) + /// VBROADCASTF128, ymm, m128 /// public static unsafe Vector256 BroadcastVector128ToVector256(double* address) => BroadcastVector128ToVector256(address); /// /// __m256 _mm256_ceil_ps (__m256 a) + /// VROUNDPS ymm, ymm/m256, imm8(10) /// public static Vector256 Ceiling(Vector256 value) => Ceiling(value); /// /// __m256d _mm256_ceil_pd (__m256d a) + /// VROUNDPD ymm, ymm/m256, imm8(10) /// public static Vector256 Ceiling(Vector256 value) => Ceiling(value); /// /// __m128 _mm_cmp_ps (__m128 a, __m128 b, const int imm8) + /// VCMPPS xmm, xmm, xmm/m128, imm8 /// public static Vector128 Compare(Vector128 left, Vector128 right, FloatComparisonMode mode) => Compare(left, right, mode); /// /// __m128d _mm_cmp_pd (__m128d a, __m128d b, const int imm8) + /// VCMPPD xmm, xmm, xmm/m128, imm8 /// public static Vector128 Compare(Vector128 left, Vector128 right, FloatComparisonMode mode) => Compare(left, right, mode); /// /// __m256 _mm256_cmp_ps (__m256 a, __m256 b, const int imm8) + /// VCMPPS ymm, ymm, ymm/m256, imm8 /// public static Vector256 Compare(Vector256 left, Vector256 right, FloatComparisonMode mode) => Compare(left, right, mode); /// /// __m256d _mm256_cmp_pd (__m256d a, __m256d b, const int imm8) + /// VCMPPD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Compare(Vector256 left, Vector256 right, FloatComparisonMode mode) => Compare(left, right, mode); /// /// __m128d _mm_cmp_sd (__m128d a, __m128d b, const int imm8) + /// VCMPSS xmm, xmm, xmm/m32, imm8 /// public static Vector128 CompareScalar(Vector128 left, Vector128 right, FloatComparisonMode mode) => CompareScalar(left, right, mode); /// /// __m128 _mm_cmp_ss (__m128 a, __m128 b, const int imm8) + /// VCMPSD xmm, xmm, xmm/m64, imm8 /// public static Vector128 CompareScalar(Vector128 left, Vector128 right, FloatComparisonMode mode) => CompareScalar(left, right, mode); /// /// float _mm256_cvtss_f32 (__m256 a) + /// HELPER: VMOVSS /// public static float ConvertToSingle(Vector256 value) => ConvertToSingle(value); /// /// __m128i _mm256_cvtpd_epi32 (__m256d a) + /// VCVTPD2DQ xmm, ymm/m256 /// public static Vector128 ConvertToVector128Int32(Vector256 value) => ConvertToVector128Int32(value); /// /// __m128 _mm256_cvtpd_ps (__m256d a) + /// VCVTPD2PS xmm, ymm/m256 /// public static Vector128 ConvertToVector128Single(Vector256 value) => ConvertToVector128Single(value); /// /// __m256i _mm256_cvtps_epi32 (__m256 a) + /// VCVTPS2DQ ymm, ymm/m256 /// public static Vector256 ConvertToVector256Int32(Vector256 value) => ConvertToVector256Int32(value); /// /// __m256 _mm256_cvtepi32_ps (__m256i a) + /// VCVTDQ2PS ymm, ymm/m256 /// public static Vector256 ConvertToVector256Single(Vector256 value) => ConvertToVector256Single(value); /// /// __m256d _mm256_cvtps_pd (__m128 a) + /// VCVTPS2PD ymm, xmm/m128 /// - public static Vector256 ConvertToVector256Double(Vector256 value) => ConvertToVector256Double(value); + public static Vector256 ConvertToVector256Double(Vector128 value) => ConvertToVector256Double(value); /// /// __m256d _mm256_cvtepi32_pd (__m128i a) + /// VCVTDQ2PD ymm, xmm/m128 /// - public static Vector256 ConvertToVector256Double(Vector256 value) => ConvertToVector256Double(value); + public static Vector256 ConvertToVector256Double(Vector128 value) => ConvertToVector256Double(value); /// /// __m128i _mm256_cvttpd_epi32 (__m256d a) + /// VCVTTPD2DQ xmm, ymm/m256 /// public static Vector128 ConvertToVector128Int32WithTruncation(Vector256 value) => ConvertToVector128Int32WithTruncation(value); /// /// __m256i _mm256_cvttps_epi32 (__m256 a) + /// VCVTTPS2DQ ymm, ymm/m256 /// public static Vector256 ConvertToVector256Int32WithTruncation(Vector256 value) => ConvertToVector256Int32WithTruncation(value); /// /// __m256 _mm256_div_ps (__m256 a, __m256 b) + /// VDIVPS ymm, ymm, ymm/m256 /// public static Vector256 Divide(Vector256 left, Vector256 right) => Divide(left, right); /// /// __m256d _mm256_div_pd (__m256d a, __m256d b) + /// VDIVPD ymm, ymm, ymm/m256 /// public static Vector256 Divide(Vector256 left, Vector256 right) => Divide(left, right); /// /// __m256 _mm256_dp_ps (__m256 a, __m256 b, const int imm8) + /// VDPPS ymm, ymm, ymm/m256, imm8 /// public static Vector256 DotProduct(Vector256 left, Vector256 right, byte control) => DotProduct(left, right, control); - + /// /// __m256 _mm256_moveldup_ps (__m256 a) + /// VMOVSLDUP ymm, ymm/m256 /// public static Vector256 DuplicateEvenIndexed(Vector256 value) => DuplicateEvenIndexed(value); /// /// __m256d _mm256_movedup_pd (__m256d a) + /// VMOVDDUP ymm, ymm/m256 /// public static Vector256 DuplicateEvenIndexed(Vector256 value) => DuplicateEvenIndexed(value); /// /// __m256 _mm256_movehdup_ps (__m256 a) + /// VMOVSHDUP ymm, ymm/m256 /// public static Vector256 DuplicateOddIndexed(Vector256 value) => DuplicateOddIndexed(value); /// /// __int8 _mm256_extract_epi8 (__m256i a, const int index) + /// HELPER /// public static sbyte Extract(Vector256 value, byte index) => Extract(value, index); /// /// __int8 _mm256_extract_epi8 (__m256i a, const int index) + /// HELPER /// public static byte Extract(Vector256 value, byte index) => Extract(value, index); /// /// __int16 _mm256_extract_epi16 (__m256i a, const int index) + /// HELPER /// public static short Extract(Vector256 value, byte index) => Extract(value, index); /// /// __int16 _mm256_extract_epi16 (__m256i a, const int index) + /// HELPER /// public static ushort Extract(Vector256 value, byte index) => Extract(value, index); /// /// __int32 _mm256_extract_epi32 (__m256i a, const int index) + /// HELPER /// public static int Extract(Vector256 value, byte index) => Extract(value, index); /// /// __int32 _mm256_extract_epi32 (__m256i a, const int index) + /// HELPER /// public static uint Extract(Vector256 value, byte index) => Extract(value, index); /// /// __int64 _mm256_extract_epi64 (__m256i a, const int index) + /// HELPER /// public static long Extract(Vector256 value, byte index) => Extract(value, index); /// /// __int64 _mm256_extract_epi64 (__m256i a, const int index) + /// HELPER /// public static ulong Extract(Vector256 value, byte index) => Extract(value, index); - + /// /// __m128 _mm256_extractf128_ps (__m256 a, const int imm8) + /// VEXTRACTF128 xmm/m128, ymm, imm8 /// __m128d _mm256_extractf128_pd (__m256d a, const int imm8) + /// VEXTRACTF128 xmm/m128, ymm, imm8 /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 xmm/m128, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) where T : struct { @@ -240,49 +291,62 @@ public static Vector128 ExtractVector128(Vector256 value, byte index) w /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(byte* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(sbyte* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(short* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(ushort* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(int* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(uint* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(long* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extractf128_si256 (__m256i a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(ulong* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128 _mm256_extractf128_ps (__m256 a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(float* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128d _mm256_extractf128_pd (__m256d a, const int imm8) + /// VEXTRACTF128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(double* address, Vector256 value, byte index) => ExtractVector128(address, value, index); - + /// /// __m256d _mm256_castpd128_pd256 (__m128d a) + /// HELPER - No Codegen /// __m256 _mm256_castps128_ps256 (__m128 a) + /// HELPER - No Codegen /// __m256i _mm256_castsi128_si256 (__m128i a) + /// HELPER - No Codegen /// public static Vector256 ExtendToVector256(Vector128 value) where T : struct { @@ -292,17 +356,22 @@ public static Vector256 ExtendToVector256(Vector128 value) where T : st /// /// __m256 _mm256_floor_ps (__m256 a) + /// VROUNDPS ymm, ymm/m256, imm8(9) /// public static Vector256 Floor(Vector256 value) => Floor(value); /// /// __m256d _mm256_floor_pd (__m256d a) + /// VROUNDPS ymm, ymm/m256, imm8(9) /// public static Vector256 Floor(Vector256 value) => Floor(value); /// /// __m128d _mm256_castpd256_pd128 (__m256d a) + /// HELPER - No Codegen /// __m128 _mm256_castps256_ps128 (__m256 a) + /// HELPER - No Codegen /// __m128i _mm256_castsi256_si128 (__m256i a) + /// HELPER - No Codegen /// public static Vector128 GetLowerHalf(Vector256 value) where T : struct { @@ -312,59 +381,74 @@ public static Vector128 GetLowerHalf(Vector256 value) where T : struct /// /// __m256 _mm256_hadd_ps (__m256 a, __m256 b) + /// VHADDPS ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) => HorizontalAdd(left, right); /// /// __m256d _mm256_hadd_pd (__m256d a, __m256d b) + /// VHADDPD ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) => HorizontalAdd(left, right); /// /// __m256 _mm256_hsub_ps (__m256 a, __m256 b) + /// VHSUBPS ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) => HorizontalSubtract(left, right); /// /// __m256d _mm256_hsub_pd (__m256d a, __m256d b) + /// VHSUBPD ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) => HorizontalSubtract(left, right); /// /// __m256i _mm256_insert_epi8 (__m256i a, __int8 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, sbyte data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_insert_epi8 (__m256i a, __int8 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, byte data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_insert_epi16 (__m256i a, __int16 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, short data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_insert_epi16 (__m256i a, __int16 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, ushort data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_insert_epi32 (__m256i a, __int32 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, int data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_insert_epi32 (__m256i a, __int32 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, uint data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_insert_epi64 (__m256i a, __int64 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, long data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_insert_epi64 (__m256i a, __int64 i, const int index) + /// HELPER /// public static Vector256 Insert(Vector256 value, ulong data, byte index) => Insert(value, data, index); /// /// __m256 _mm256_insertf128_ps (__m256 a, __m128 b, int imm8) + /// VINSERTF128 ymm, ymm, xmm/m128, imm8 /// __m256d _mm256_insertf128_pd (__m256d a, __m128d b, int imm8) + /// VINSERTF128 ymm, ymm, xmm/m128, imm8 /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, xmm/m128, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) where T : struct { @@ -374,389 +458,482 @@ public static Vector256 Insert(Vector256 value, Vector128 data, byte /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, sbyte* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, byte* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, short* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, ushort* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, int* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, uint* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, long* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_insertf128_si256 (__m256i a, __m128i b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, ulong* address, byte index) => Insert(value, address, index); /// /// __m256 _mm256_insertf128_ps (__m256 a, __m128 b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, float* address, byte index) => Insert(value, address, index); /// /// __m256d _mm256_insertf128_pd (__m256d a, __m128d b, int imm8) + /// VINSERTF128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, double* address, byte index) => Insert(value, address, index); - + /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(sbyte* address) => LoadVector256(address); /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(byte* address) => LoadVector256(address); /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(short* address) => LoadVector256(address); /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(ushort* address) => LoadVector256(address); /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(int* address) => LoadVector256(address); /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(uint* address) => LoadVector256(address); /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(long* address) => LoadVector256(address); /// /// __m256i _mm256_loadu_si256 (__m256i const * mem_addr) + /// VMOVDQU ymm, m256 /// public static unsafe Vector256 LoadVector256(ulong* address) => LoadVector256(address); /// /// __m256 _mm256_loadu_ps (float const * mem_addr) + /// VMOVUPS ymm, ymm/m256 /// public static unsafe Vector256 LoadVector256(float* address) => LoadVector256(address); /// /// __m256d _mm256_loadu_pd (double const * mem_addr) + /// VMOVUPD ymm, ymm/m256 /// public static unsafe Vector256 LoadVector256(double* address) => LoadVector256(address); /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(sbyte* address) => LoadAlignedVector256(address); /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(byte* address) => LoadAlignedVector256(address); /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(short* address) => LoadAlignedVector256(address); /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(ushort* address) => LoadAlignedVector256(address); /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(int* address) => LoadAlignedVector256(address); /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(uint* address) => LoadAlignedVector256(address); /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(long* address) => LoadAlignedVector256(address); /// /// __m256i _mm256_load_si256 (__m256i const * mem_addr) + /// VMOVDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256(ulong* address) => LoadAlignedVector256(address); /// /// __m256 _mm256_load_ps (float const * mem_addr) + /// VMOVAPS ymm, ymm/m256 /// public static unsafe Vector256 LoadAlignedVector256(float* address) => LoadAlignedVector256(address); /// /// __m256d _mm256_load_pd (double const * mem_addr) + /// VMOVAPD ymm, ymm/m256 /// public static unsafe Vector256 LoadAlignedVector256(double* address) => LoadAlignedVector256(address); /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(sbyte* address) => LoadDquVector256(address); /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(byte* address) => LoadDquVector256(address); /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(short* address) => LoadDquVector256(address); /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(ushort* address) => LoadDquVector256(address); /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(int* address) => LoadDquVector256(address); /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(uint* address) => LoadDquVector256(address); /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(long* address) => LoadDquVector256(address); /// /// __m256i _mm256_lddqu_si256 (__m256i const * mem_addr) + /// VLDDQU ymm, m256 /// public static unsafe Vector256 LoadDquVector256(ulong* address) => LoadDquVector256(address); /// /// __m128 _mm_maskload_ps (float const * mem_addr, __m128i mask) + /// VMASKMOVPS xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(float* address, Vector128 mask) => MaskLoad(address, mask); /// /// __m128d _mm_maskload_pd (double const * mem_addr, __m128i mask) + /// VMASKMOVPD xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(double* address, Vector128 mask) => MaskLoad(address, mask); /// /// __m256 _mm256_maskload_ps (float const * mem_addr, __m256i mask) + /// VMASKMOVPS ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(float* address, Vector256 mask) => MaskLoad(address, mask); /// /// __m256d _mm256_maskload_pd (double const * mem_addr, __m256i mask) + /// VMASKMOVPD ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(double* address, Vector256 mask) => MaskLoad(address, mask); - + /// /// void _mm_maskstore_ps (float * mem_addr, __m128i mask, __m128 a) + /// VMASKMOVPS m128, xmm, xmm /// public static unsafe void MaskStore(float* address, Vector128 mask, Vector128 source) => MaskStore(address, mask, source); /// /// void _mm_maskstore_pd (double * mem_addr, __m128i mask, __m128d a) + /// VMASKMOVPD m128, xmm, xmm /// public static unsafe void MaskStore(double* address, Vector128 mask, Vector128 source) => MaskStore(address, mask, source); /// /// void _mm256_maskstore_ps (float * mem_addr, __m256i mask, __m256 a) + /// VMASKMOVPS m256, ymm, ymm /// public static unsafe void MaskStore(float* address, Vector256 mask, Vector256 source) => MaskStore(address, mask, source); /// /// void _mm256_maskstore_pd (double * mem_addr, __m256i mask, __m256d a) + /// VMASKMOVPD m256, ymm, ymm /// public static unsafe void MaskStore(double* address, Vector256 mask, Vector256 source) => MaskStore(address, mask, source); /// /// __m256 _mm256_max_ps (__m256 a, __m256 b) + /// VMAXPS ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); /// /// __m256d _mm256_max_pd (__m256d a, __m256d b) + /// VMAXPD ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); /// /// __m256 _mm256_min_ps (__m256 a, __m256 b) + /// VMINPS ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) => Min(left, right); /// /// __m256d _mm256_min_pd (__m256d a, __m256d b) + /// VMINPD ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) => Min(left, right); /// /// int _mm256_movemask_ps (__m256 a) + /// VMOVMSKPS reg, ymm /// public static int MoveMask(Vector256 value) => MoveMask(value); /// /// int _mm256_movemask_pd (__m256d a) + /// VMOVMSKPD reg, ymm /// public static int MoveMask(Vector256 value) => MoveMask(value); /// /// __m256 _mm256_mul_ps (__m256 a, __m256 b) + /// VMULPS ymm, ymm, ymm/m256 /// public static Vector256 Multiply(Vector256 left, Vector256 right) => Multiply(left, right); /// /// __m256d _mm256_mul_pd (__m256d a, __m256d b) + /// VMULPD ymm, ymm, ymm/m256 /// public static Vector256 Multiply(Vector256 left, Vector256 right) => Multiply(left, right); /// /// __m256 _mm256_or_ps (__m256 a, __m256 b) + /// VORPS ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256d _mm256_or_pd (__m256d a, __m256d b) + /// VORPD ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m128 _mm_permute_ps (__m128 a, int imm8) + /// VPERMILPS xmm, xmm, imm8 /// public static Vector128 Permute(Vector128 value, byte control) => Permute(value, control); /// /// __m128d _mm_permute_pd (__m128d a, int imm8) + /// VPERMILPD xmm, xmm, imm8 /// public static Vector128 Permute(Vector128 value, byte control) => Permute(value, control); - + /// /// __m256 _mm256_permute_ps (__m256 a, int imm8) + /// VPERMILPS ymm, ymm, imm8 /// public static Vector256 Permute(Vector256 value, byte control) => Permute(value, control); /// /// __m256d _mm256_permute_pd (__m256d a, int imm8) + /// VPERMILPD ymm, ymm, imm8 /// public static Vector256 Permute(Vector256 value, byte control) => Permute(value, control); - + /// /// __m256 _mm256_permute2f128_ps (__m256 a, __m256 b, int imm8) + /// VPERM2F128 ymm, ymm, ymm/m256, imm8 /// __m256d _mm256_permute2f128_pd (__m256d a, __m256d b, int imm8) + /// VPERM2F128 ymm, ymm, ymm/m256, imm8 /// __m256i _mm256_permute2f128_si256 (__m256i a, __m256i b, int imm8) + /// VPERM2F128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) where T : struct { ThrowHelper.ThrowNotSupportedExceptionIfNonNumericType(); return Permute2x128(left, right, control); } - + /// /// __m128 _mm_permutevar_ps (__m128 a, __m128i b) + /// VPERMILPS xmm, xmm, xmm/m128 /// public static Vector128 PermuteVar(Vector128 left, Vector128 mask) => PermuteVar(left, mask); /// /// __m128d _mm_permutevar_pd (__m128d a, __m128i b) + /// VPERMILPD xmm, xmm, xmm/m128 /// public static Vector128 PermuteVar(Vector128 left, Vector128 mask) => PermuteVar(left, mask); /// /// __m256 _mm256_permutevar_ps (__m256 a, __m256i b) + /// VPERMILPS ymm, ymm, ymm/m256 /// public static Vector256 PermuteVar(Vector256 left, Vector256 mask) => PermuteVar(left, mask); /// /// __m256d _mm256_permutevar_pd (__m256d a, __m256i b) + /// VPERMILPD ymm, ymm, ymm/m256 /// public static Vector256 PermuteVar(Vector256 left, Vector256 mask) => PermuteVar(left, mask); /// /// __m256 _mm256_rcp_ps (__m256 a) + /// VRCPPS ymm, ymm/m256 /// public static Vector256 Reciprocal(Vector256 value) => Reciprocal(value); /// /// __m256 _mm256_rsqrt_ps (__m256 a) + /// VRSQRTPS ymm, ymm/m256 /// public static Vector256 ReciprocalSqrt(Vector256 value) => ReciprocalSqrt(value); /// - /// __m256 _mm256_round_ps (__m256 a, int rounding) - /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) + /// VROUNDPS ymm, ymm/m256, imm8(8) /// public static Vector256 RoundToNearestInteger(Vector256 value) => RoundToNearestInteger(value); /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) + /// VROUNDPS ymm, ymm/m256, imm8(9) /// public static Vector256 RoundToNegativeInfinity(Vector256 value) => RoundToNegativeInfinity(value); /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) + /// VROUNDPS ymm, ymm/m256, imm8(10) /// public static Vector256 RoundToPositiveInfinity(Vector256 value) => RoundToPositiveInfinity(value); /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC) + /// VROUNDPS ymm, ymm/m256, imm8(11) /// public static Vector256 RoundToZero(Vector256 value) => RoundToZero(value); /// - /// _MM_FROUND_CUR_DIRECTION + /// __m256 _mm256_round_ps (__m256 a, _MM_FROUND_CUR_DIRECTION) + /// VROUNDPS ymm, ymm/m256, imm8(4) /// public static Vector256 RoundCurrentDirection(Vector256 value) => RoundCurrentDirection(value); /// - /// __m256d _mm256_round_pd (__m256d a, int rounding) - /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) + /// VROUNDPD ymm, ymm/m256, imm8(8) /// public static Vector256 RoundToNearestInteger(Vector256 value) => RoundToNearestInteger(value); /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) + /// VROUNDPD ymm, ymm/m256, imm8(9) /// public static Vector256 RoundToNegativeInfinity(Vector256 value) => RoundToNegativeInfinity(value); /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) + /// VROUNDPD ymm, ymm/m256, imm8(10) /// public static Vector256 RoundToPositiveInfinity(Vector256 value) => RoundToPositiveInfinity(value); /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC) + /// VROUNDPD ymm, ymm/m256, imm8(11) /// public static Vector256 RoundToZero(Vector256 value) => RoundToZero(value); /// - /// _MM_FROUND_CUR_DIRECTION + /// __m256d _mm256_round_pd (__m256d a, _MM_FROUND_CUR_DIRECTION) + /// VROUNDPD ymm, ymm/m256, imm8(4) /// public static Vector256 RoundCurrentDirection(Vector256 value) => RoundCurrentDirection(value); /// /// __m256i _mm256_set_epi8 (char e31, char e30, char e29, char e28, char e27, char e26, char e25, char e24, char e23, char e22, char e21, char e20, char e19, char e18, char e17, char e16, char e15, char e14, char e13, char e12, char e11, char e10, char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2, char e1, char e0) + /// HELPER /// public static Vector256 SetVector256(sbyte e31, sbyte e30, sbyte e29, sbyte e28, sbyte e27, sbyte e26, sbyte e25, sbyte e24, sbyte e23, sbyte e22, sbyte e21, sbyte e20, sbyte e19, sbyte e18, sbyte e17, sbyte e16, sbyte e15, sbyte e14, sbyte e13, sbyte e12, sbyte e11, sbyte e10, sbyte e9, sbyte e8, sbyte e7, sbyte e6, sbyte e5, sbyte e4, sbyte e3, sbyte e2, sbyte e1, sbyte e0) => SetVector256(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m256i _mm256_set_epi8 (char e31, char e30, char e29, char e28, char e27, char e26, char e25, char e24, char e23, char e22, char e21, char e20, char e19, char e18, char e17, char e16, char e15, char e14, char e13, char e12, char e11, char e10, char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2, char e1, char e0) + /// HELPER /// public static Vector256 SetVector256(byte e31, byte e30, byte e29, byte e28, byte e27, byte e26, byte e25, byte e24, byte e23, byte e22, byte e21, byte e20, byte e19, byte e18, byte e17, byte e16, byte e15, byte e14, byte e13, byte e12, byte e11, byte e10, byte e9, byte e8, byte e7, byte e6, byte e5, byte e4, byte e3, byte e2, byte e1, byte e0) => SetVector256(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m256i _mm256_set_epi16 (short e15, short e14, short e13, short e12, short e11, short e10, short e9, short e8, short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) + /// HELPER /// public static Vector256 SetVector256(short e15, short e14, short e13, short e12, short e11, short e10, short e9, short e8, short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) => SetVector256(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m256i _mm256_set_epi16 (short e15, short e14, short e13, short e12, short e11, short e10, short e9, short e8, short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) + /// HELPER /// public static Vector256 SetVector256(ushort e15, ushort e14, ushort e13, ushort e12, ushort e11, ushort e10, ushort e9, ushort e8, ushort e7, ushort e6, ushort e5, ushort e4, ushort e3, ushort e2, ushort e1, ushort e0) => SetVector256(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m256i _mm256_set_epi32 (int e7, int e6, int e5, int e4, int e3, int e2, int e1, int e0) + /// HELPER /// public static Vector256 SetVector256(int e7, int e6, int e5, int e4, int e3, int e2, int e1, int e0) => SetVector256(e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m256i _mm256_set_epi32 (int e7, int e6, int e5, int e4, int e3, int e2, int e1, int e0) + /// HELPER /// public static Vector256 SetVector256(uint e7, uint e6, uint e5, uint e4, uint e3, uint e2, uint e1, uint e0) => SetVector256(e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m256i _mm256_set_epi64x (__int64 e3, __int64 e2, __int64 e1, __int64 e0) + /// HELPER /// public static Vector256 SetVector256(long e3, long e2, long e1, long e0) => SetVector256(e3, e2, e1, e0); /// /// __m256i _mm256_set_epi64x (__int64 e3, __int64 e2, __int64 e1, __int64 e0) + /// HELPER /// public static Vector256 SetVector256(ulong e3, ulong e2, ulong e1, ulong e0) => SetVector256(e3, e2, e1, e0); /// /// __m256 _mm256_set_ps (float e7, float e6, float e5, float e4, float e3, float e2, float e1, float e0) + /// HELPER /// public static Vector256 SetVector256(float e7, float e6, float e5, float e4, float e3, float e2, float e1, float e0) => SetVector256(e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m256d _mm256_set_pd (double e3, double e2, double e1, double e0) + /// HELPER /// public static Vector256 SetVector256(double e3, double e2, double e1, double e0) => SetVector256(e3, e2, e1, e0); - + /// /// __m256i _mm256_set1_epi8 (char a) + /// HELPER /// __m256i _mm256_set1_epi16 (short a) + /// HELPER /// __m256i _mm256_set1_epi32 (int a) + /// HELPER /// __m256i _mm256_set1_epi64x (long long a) + /// HELPER /// __m256 _mm256_set1_ps (float a) + /// HELPER /// __m256d _mm256_set1_pd (double a) + /// HELPER /// public static Vector256 SetAllVector256(T value) where T : struct { @@ -766,8 +943,11 @@ public static Vector256 SetAllVector256(T value) where T : struct /// /// __m256 _mm256_set_m128 (__m128 hi, __m128 lo) + /// HELPER /// __m256d _mm256_set_m128d (__m128d hi, __m128d lo) + /// HELPER /// __m256i _mm256_set_m128i (__m128i hi, __m128i lo) + /// HELPER /// public static Vector256 SetHighLow(Vector128 hi, Vector128 lo) where T : struct { @@ -777,8 +957,11 @@ public static Vector256 SetHighLow(Vector128 hi, Vector128 lo) where /// /// __m256i _mm256_setzero_si256 (void) + /// HELPER /// __m256 _mm256_setzero_ps (void) + /// HELPER /// __m256d _mm256_setzero_pd (void) + /// HELPER /// public static Vector256 SetZeroVector256() where T : struct { @@ -788,29 +971,39 @@ public static Vector256 SetZeroVector256() where T : struct /// /// __m256 _mm256_shuffle_ps (__m256 a, __m256 b, const int imm8) + /// VSHUFPS ymm, ymm, ymm/m256, imm8 /// public static Vector256 Shuffle(Vector256 value, Vector256 right, byte control) => Shuffle(value, right, control); /// /// __m256d _mm256_shuffle_pd (__m256d a, __m256d b, const int imm8) + /// VSHUFPD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Shuffle(Vector256 value, Vector256 right, byte control) => Shuffle(value, right, control); - + /// /// __m256 _mm256_sqrt_ps (__m256 a) + /// VSQRTPS ymm, ymm/m256 /// public static Vector256 Sqrt(Vector256 value) => Sqrt(value); /// /// __m256d _mm256_sqrt_pd (__m256d a) + /// VSQRTPD ymm, ymm/m256 /// public static Vector256 Sqrt(Vector256 value) => Sqrt(value); /// /// __m256 _mm256_castpd_ps (__m256d a) + /// HELPER - No Codegen /// __m256i _mm256_castpd_si256 (__m256d a) + /// HELPER - No Codegen /// __m256d _mm256_castps_pd (__m256 a) + /// HELPER - No Codegen /// __m256i _mm256_castps_si256 (__m256 a) + /// HELPER - No Codegen /// __m256d _mm256_castsi256_pd (__m256i a) + /// HELPER - No Codegen /// __m256 _mm256_castsi256_ps (__m256i a) + /// HELPER - No Codegen /// public static Vector256 StaticCast(Vector256 value) where T : struct where U : struct { @@ -821,149 +1014,186 @@ public static Vector256 StaticCast(Vector256 value) where T : struct /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(sbyte* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(byte* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(short* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(ushort* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(int* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(uint* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(long* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQA m256, ymm /// public static unsafe void StoreAligned(ulong* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_ps (float * mem_addr, __m256 a) + /// VMOVAPS m256, ymm /// public static unsafe void StoreAligned(float* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_store_pd (double * mem_addr, __m256d a) + /// VMOVAPD m256, ymm /// public static unsafe void StoreAligned(double* address, Vector256 source) => StoreAligned(address, source); /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(sbyte* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(byte* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(short* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(ushort* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(int* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(uint* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(long* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_si256 (__m256i * mem_addr, __m256i a) + /// VMOVNTDQ m256, ymm /// public static unsafe void StoreAlignedNonTemporal(ulong* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_ps (float * mem_addr, __m256 a) + /// MOVNTPS m256, ymm /// public static unsafe void StoreAlignedNonTemporal(float* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_stream_pd (double * mem_addr, __m256d a) + /// MOVNTPD m256, ymm /// public static unsafe void StoreAlignedNonTemporal(double* address, Vector256 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(sbyte* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(byte* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(short* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(ushort* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(int* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(uint* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(long* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_si256 (__m256i * mem_addr, __m256i a) + /// MOVDQU m256, ymm /// public static unsafe void Store(ulong* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_ps (float * mem_addr, __m256 a) + /// MOVUPS m256, ymm /// public static unsafe void Store(float* address, Vector256 source) => Store(address, source); /// /// void _mm256_storeu_pd (double * mem_addr, __m256d a) + /// MOVUPD m256, ymm /// public static unsafe void Store(double* address, Vector256 source) => Store(address, source); /// /// __m256 _mm256_sub_ps (__m256 a, __m256 b) + /// VSUBPS ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256d _mm256_sub_pd (__m256d a, __m256d b) + /// VSUBPD ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// int _mm_testc_ps (__m128 a, __m128 b) + /// VTESTPS xmm, xmm/m128 /// - public static bool TestC(Vector128 left, Vector128 right) => TestC(left, right); + public static bool TestC(Vector128 left, Vector128 right) => TestC(left, right); /// /// int _mm_testc_pd (__m128d a, __m128d b) + /// VTESTPD xmm, xmm/m128 /// public static bool TestC(Vector128 left, Vector128 right) => TestC(left, right); /// /// int _mm256_testc_si256 (__m256i a, __m256i b) + /// VPTEST ymm, ymm/m256 /// int _mm256_testc_ps (__m256 a, __m256 b) + /// VTESTPS ymm, ymm/m256 /// int _mm256_testc_pd (__m256d a, __m256d b) + /// VTESTPS ymm, ymm/m256 /// public static bool TestC(Vector256 left, Vector256 right) where T : struct { @@ -973,17 +1203,22 @@ public static bool TestC(Vector256 left, Vector256 right) where T : str /// /// int _mm_testnzc_ps (__m128 a, __m128 b) + /// VTESTPS xmm, xmm/m128 /// - public static bool TestNotZAndNotC(Vector128 left, Vector128 right) => TestNotZAndNotC(left, right); + public static bool TestNotZAndNotC(Vector128 left, Vector128 right) => TestNotZAndNotC(left, right); /// /// int _mm_testnzc_pd (__m128d a, __m128d b) + /// VTESTPD xmm, xmm/m128 /// public static bool TestNotZAndNotC(Vector128 left, Vector128 right) => TestNotZAndNotC(left, right); /// /// int _mm256_testnzc_si256 (__m256i a, __m256i b) + /// VPTEST ymm, ymm/m256 /// int _mm256_testnzc_ps (__m256 a, __m256 b) + /// VTESTPS ymm, ymm/m256 /// int _mm256_testnzc_pd (__m256d a, __m256d b) + /// VTESTPD ymm, ymm/m256 /// public static bool TestNotZAndNotC(Vector256 left, Vector256 right) where T : struct { @@ -993,17 +1228,22 @@ public static bool TestNotZAndNotC(Vector256 left, Vector256 right) whe /// /// int _mm_testz_ps (__m128 a, __m128 b) + /// VTESTPS xmm, xmm/m128 /// public static bool TestZ(Vector128 left, Vector128 right) => TestZ(left, right); /// /// int _mm_testz_pd (__m128d a, __m128d b) + /// VTESTPD xmm, xmm/m128 /// public static bool TestZ(Vector128 left, Vector128 right) => TestZ(left, right); /// /// int _mm256_testz_si256 (__m256i a, __m256i b) + /// VPTEST ymm, ymm/m256 /// int _mm256_testz_ps (__m256 a, __m256 b) + /// VTESTPS ymm, ymm/m256 /// int _mm256_testz_pd (__m256d a, __m256d b) + /// VTESTPD ymm, ymm/m256 /// public static bool TestZ(Vector256 left, Vector256 right) where T : struct { @@ -1013,44 +1253,55 @@ public static bool TestZ(Vector256 left, Vector256 right) where T : str /// /// __m256 _mm256_unpackhi_ps (__m256 a, __m256 b) + /// VUNPCKHPS ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256d _mm256_unpackhi_pd (__m256d a, __m256d b) + /// VUNPCKHPD ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256 _mm256_unpacklo_ps (__m256 a, __m256 b) + /// VUNPCKLPS ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256d _mm256_unpacklo_pd (__m256d a, __m256d b) + /// VUNPCKLPD ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256 _mm256_xor_ps (__m256 a, __m256 b) + /// VXORPS ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// __m256d _mm256_xor_pd (__m256d a, __m256d b) + /// VXORPS ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// void _mm256_zeroall (void) + /// VZEROALL /// public static void ZeroAll() => ZeroAll(); /// /// void _mm256_zeroupper (void) + /// VZEROUPPER /// public static void ZeroUpper() => ZeroUpper(); /// /// __m256d _mm256_zextpd128_pd256 (__m128d a) + /// HELPER - No Codegen /// __m256 _mm256_zextps128_ps256 (__m128 a) + /// HELPER - No Codegen /// __m256i _mm256_zextsi128_si256 (__m128i a) + /// HELPER - No Codegen /// public static Vector256 ZeroExtendToVector256(Vector128 value) where T : struct { diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx2.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx2.PlatformNotSupported.cs index f7b8e0185274..a67f6c8b5e7b 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx2.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx2.PlatformNotSupported.cs @@ -14,1491 +14,1851 @@ namespace System.Runtime.Intrinsics.X86 public static class Avx2 { public static bool IsSupported { get { return false; } } - + /// /// __m256i _mm256_abs_epi8 (__m256i a) + /// VPABSB ymm, ymm/m256 /// public static Vector256 Abs(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_abs_epi16 (__m256i a) + /// VPABSW ymm, ymm/m256 /// public static Vector256 Abs(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_abs_epi32 (__m256i a) + /// VPABSD ymm, ymm/m256 /// public static Vector256 Abs(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_add_epi8 (__m256i a, __m256i b) + /// VPADDB ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_add_epi8 (__m256i a, __m256i b) + /// VPADDB ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_add_epi16 (__m256i a, __m256i b) + /// VPADDW ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_add_epi16 (__m256i a, __m256i b) + /// VPADDW ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_add_epi32 (__m256i a, __m256i b) + /// VPADDD ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_add_epi32 (__m256i a, __m256i b) + /// VPADDD ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_add_epi64 (__m256i a, __m256i b) + /// VPADDQ ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_add_epi64 (__m256i a, __m256i b) + /// VPADDQ ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_adds_epi8 (__m256i a, __m256i b) + /// VPADDSB ymm, ymm, ymm/m256 /// public static Vector256 AddSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_adds_epu8 (__m256i a, __m256i b) + /// VPADDUSB ymm, ymm, ymm/m256 /// public static Vector256 AddSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_adds_epi16 (__m256i a, __m256i b) + /// VPADDSW ymm, ymm, ymm/m256 /// public static Vector256 AddSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_adds_epu16 (__m256i a, __m256i b) + /// VPADDUSW ymm, ymm, ymm/m256 /// public static Vector256 AddSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_alignr_epi8 (__m256i a, __m256i b, const int count) + /// VPALIGNR ymm, ymm, ymm/m256, imm8 /// public static Vector256 AlignRight(Vector256 left, Vector256 right, byte mask) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_avg_epu8 (__m256i a, __m256i b) + /// VPAVGB ymm, ymm, ymm/m256 /// public static Vector256 Average(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_avg_epu16 (__m256i a, __m256i b) + /// VPAVGW ymm, ymm, ymm/m256 /// public static Vector256 Average(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_blend_epi32 (__m128i a, __m128i b, const int imm8) + /// VPBLENDD xmm, xmm, xmm/m128, imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_blend_epi32 (__m128i a, __m128i b, const int imm8) + /// VPBLENDD xmm, xmm, xmm/m128, imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_blend_epi16 (__m256i a, __m256i b, const int imm8) + /// VPBLENDW ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_blend_epi16 (__m256i a, __m256i b, const int imm8) + /// VPBLENDW ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_blend_epi32 (__m256i a, __m256i b, const int imm8) + /// VPBLENDD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_blend_epi32 (__m256i a, __m256i b, const int imm8) + /// VPBLENDD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// PBLENDVB ymm, ymm, ymm/m256, ymm /// public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// PBLENDVB ymm, ymm, ymm/m256, ymm /// public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_broadcastb_epi8 (__m128i a) + /// VPBROADCASTB xmm, xmm /// __m128i _mm_broadcastw_epi16 (__m128i a) + /// VPBROADCASTW xmm, xmm /// __m128i _mm_broadcastd_epi32 (__m128i a) + /// VPBROADCASTD xmm, xmm /// __m128i _mm_broadcastq_epi64 (__m128i a) + /// VPBROADCASTQ xmm, xmm /// __m128 _mm_broadcastss_ps (__m128 a) + /// VBROADCASTSS xmm, xmm /// __m128d _mm_broadcastsd_pd (__m128d a) + /// VBROADCASTSD xmm, xmm /// - public static Vector128 BroadcastElementToVector128(Vector128 value) where T : struct { throw new PlatformNotSupportedException(); } + public static Vector128 BroadcastScalarToVector128(Vector128 value) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastb_epi8 (__m128i a) + /// VPBROADCASTB ymm, xmm /// __m256i _mm256_broadcastw_epi16 (__m128i a) + /// VPBROADCASTW ymm, xmm /// __m256i _mm256_broadcastd_epi32 (__m128i a) + /// VPBROADCASTD ymm, xmm /// __m256i _mm256_broadcastq_epi64 (__m128i a) + /// VPBROADCASTQ ymm, xmm /// __m256 _mm256_broadcastss_ps (__m128 a) + /// VBROADCASTSS ymm, xmm /// __m256d _mm256_broadcastsd_pd (__m128d a) + /// VBROADCASTSD ymm, xmm /// - public static Vector256 BroadcastElementToVector256(Vector128 value) where T : struct { throw new PlatformNotSupportedException(); } + public static Vector256 BroadcastScalarToVector256(Vector128 value) where T : struct { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m8 /// public static unsafe Vector256 BroadcastVector128ToVector256(sbyte* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m8 /// public static unsafe Vector256 BroadcastVector128ToVector256(byte* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m16 /// public static unsafe Vector256 BroadcastVector128ToVector256(short* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m16 /// public static unsafe Vector256 BroadcastVector128ToVector256(ushort* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m32 /// public static unsafe Vector256 BroadcastVector128ToVector256(int* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m32 /// public static unsafe Vector256 BroadcastVector128ToVector256(uint* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m64 /// public static unsafe Vector256 BroadcastVector128ToVector256(long* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m64 /// public static unsafe Vector256 BroadcastVector128ToVector256(ulong* address) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpeq_epi8 (__m256i a, __m256i b) + /// VPCMPEQB ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpeq_epi8 (__m256i a, __m256i b) + /// VPCMPEQB ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpeq_epi16 (__m256i a, __m256i b) + /// VPCMPEQW ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpeq_epi16 (__m256i a, __m256i b) + /// VPCMPEQW ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpeq_epi32 (__m256i a, __m256i b) + /// VPCMPEQD ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpeq_epi32 (__m256i a, __m256i b) + /// VPCMPEQD ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpeq_epi64 (__m256i a, __m256i b) + /// VPCMPEQQ ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpeq_epi64 (__m256i a, __m256i b) + /// VPCMPEQQ ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_cmpgt_epi8 (__m256i a, __m256i b) + /// VPCMPGTB ymm, ymm, ymm/m256 /// public static Vector256 CompareGreaterThan(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpgt_epi16 (__m256i a, __m256i b) + /// VPCMPGTW ymm, ymm, ymm/m256 /// public static Vector256 CompareGreaterThan(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpgt_epi32 (__m256i a, __m256i b) + /// VPCMPGTD ymm, ymm, ymm/m256 /// public static Vector256 CompareGreaterThan(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cmpgt_epi64 (__m256i a, __m256i b) + /// VPCMPGTQ ymm, ymm, ymm/m256 /// public static Vector256 CompareGreaterThan(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// double _mm256_cvtsd_f64 (__m256d a) + /// HELPER: MOVSD /// public static double ConvertToDouble(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// int _mm256_cvtsi256_si32 (__m256i a) + /// MOVD reg/m32, xmm /// public static int ConvertToInt32(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// int _mm256_cvtsi256_si32 (__m256i a) + /// MOVD reg/m32, xmm /// public static uint ConvertToUInt32(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepi8_epi16 (__m128i a) + /// VPMOVSXBW ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int16(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepu8_epi16 (__m128i a) + /// VPMOVZXBW ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt16(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepi8_epi32 (__m128i a) + /// VPMOVSXBD ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepi16_epi32 (__m128i a) + /// VPMOVSXWD ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepu8_epi32 (__m128i a) + /// VPMOVZXBD ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepu16_epi32 (__m128i a) + /// VPMOVZXWD ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepi8_epi64 (__m128i a) + /// VPMOVSXBQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepi16_epi64 (__m128i a) + /// VPMOVSXWQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepi32_epi64 (__m128i a) + /// VPMOVSXDQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepu8_epi64 (__m128i a) + /// VPMOVZXBQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepu16_epi64 (__m128i a) + /// VPMOVZXWQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_cvtepu32_epi64 (__m128i a) + /// VPMOVZXDQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } // /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(sbyte* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(byte* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(short* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(ushort* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(int* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(uint* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(long* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(ulong* address, Vector256 value, byte index) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_i32gather_epi32 (int const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDD xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(int* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_i32gather_epi32 (int const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDD xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(uint* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_i32gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDQ xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(long* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_i32gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDQ xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(ulong* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_i32gather_ps (float const* base_addr, __m128i vindex, const int scale) + /// VGATHERDPS xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(float* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_i32gather_pd (double const* base_addr, __m128i vindex, const int scale) + /// VGATHERDPD xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(double* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_i64gather_epi32 (int const* base_addr, __m128i vindex, const int scale) + /// VPGATHERQD xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(int* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_i64gather_epi32 (int const* base_addr, __m128i vindex, const int scale) + /// VPGATHERQD xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(uint* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_i64gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERQQ xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(long* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_i64gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERQQ xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(ulong* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_i64gather_ps (float const* base_addr, __m128i vindex, const int scale) + /// VGATHERQPS xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(float* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_i64gather_pd (double const* base_addr, __m128i vindex, const int scale) + /// VGATHERQPD xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(double* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_i32gather_epi32 (int const* base_addr, __m256i vindex, const int scale) + /// VPGATHERDD ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(int* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_i32gather_epi32 (int const* base_addr, __m256i vindex, const int scale) + /// VPGATHERDD ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(uint* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_i32gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(long* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_i32gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(ulong* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_i32gather_ps (float const* base_addr, __m256i vindex, const int scale) + /// VGATHERDPS ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(float* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_i32gather_pd (double const* base_addr, __m128i vindex, const int scale) + /// VGATHERDPD ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(double* baseAddress, Vector128 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_i64gather_epi32 (int const* base_addr, __m256i vindex, const int scale) + /// VPGATHERQD ymm, vm64y, ymm /// public static unsafe Vector128 GatherVector128(int* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_i64gather_epi32 (int const* base_addr, __m256i vindex, const int scale) + /// VPGATHERQD ymm, vm64y, ymm /// public static unsafe Vector128 GatherVector128(uint* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_i64gather_epi64 (__int64 const* base_addr, __m256i vindex, const int scale) + /// VPGATHERQQ ymm, vm64y, ymm /// public static unsafe Vector256 GatherVector256(long* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_i64gather_epi64 (__int64 const* base_addr, __m256i vindex, const int scale) + /// VPGATHERQQ ymm, vm64y, ymm /// public static unsafe Vector256 GatherVector256(ulong* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm256_i64gather_ps (float const* base_addr, __m256i vindex, const int scale) + /// VGATHERQPS ymm, vm64y, ymm /// public static unsafe Vector128 GatherVector128(float* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_i64gather_pd (double const* base_addr, __m256i vindex, const int scale) + /// VGATHERQPD ymm, vm64y, ymm /// public static unsafe Vector256 GatherVector256(double* baseAddress, Vector256 index, byte scale) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_mask_i32gather_epi32 (__m128i src, int const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERDD xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, int* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mask_i32gather_epi32 (__m128i src, int const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERDD xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, uint* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mask_i32gather_epi64 (__m128i src, __int64 const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERDQ xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, long* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mask_i32gather_epi64 (__m128i src, __int64 const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERDQ xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, ulong* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_mask_i32gather_ps (__m128 src, float const* base_addr, __m128i vindex, __m128 mask, const int scale) + /// VGATHERDPS xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, float* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_mask_i32gather_pd (__m128d src, double const* base_addr, __m128i vindex, __m128d mask, const int scale) + /// VGATHERDPD xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, double* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mask_i64gather_epi32 (__m128i src, int const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERQD xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, int* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mask_i64gather_epi32 (__m128i src, int const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERQD xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, uint* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mask_i64gather_epi64 (__m128i src, __int64 const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERQQ xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, long* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mask_i64gather_epi64 (__m128i src, __int64 const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERQQ xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, ulong* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_mask_i64gather_ps (__m128 src, float const* base_addr, __m128i vindex, __m128 mask, const int scale) + /// VPGATHERQPS xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, float* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_mask_i64gather_pd (__m128d src, double const* base_addr, __m128i vindex, __m128d mask, const int scale) + /// VPGATHERQPD xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, double* baseAddress, Vector128 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mask_i32gather_epi32 (__m256i src, int const* base_addr, __m256i vindex, __m256i mask, const int scale) + /// VPGATHERDD ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, int* baseAddress, Vector256 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mask_i32gather_epi32 (__m256i src, int const* base_addr, __m256i vindex, __m256i mask, const int scale) + /// VPGATHERDD ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, uint* baseAddress, Vector256 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mask_i32gather_epi64 (__m256i src, __int64 const* base_addr, __m128i vindex, __m256i mask, const int scale) + /// VPGATHERDQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, long* baseAddress, Vector128 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mask_i32gather_epi64 (__m256i src, __int64 const* base_addr, __m128i vindex, __m256i mask, const int scale) + /// VPGATHERDQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, ulong* baseAddress, Vector128 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_mask_i32gather_ps (__m256 src, float const* base_addr, __m256i vindex, __m256 mask, const int scale) + /// VPGATHERDPS ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, float* baseAddress, Vector256 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_mask_i32gather_pd (__m256d src, double const* base_addr, __m128i vindex, __m256d mask, const int scale) + /// VPGATHERDPD ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, double* baseAddress, Vector128 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_mask_i64gather_epi32 (__m128i src, int const* base_addr, __m256i vindex, __m128i mask, const int scale) + /// VPGATHERQD ymm, vm32y, ymm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, int* baseAddress, Vector256 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm256_mask_i64gather_epi32 (__m128i src, int const* base_addr, __m256i vindex, __m128i mask, const int scale) + /// VPGATHERQD ymm, vm32y, ymm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, uint* baseAddress, Vector256 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mask_i64gather_epi64 (__m256i src, __int64 const* base_addr, __m256i vindex, __m256i mask, const int scale) + /// VPGATHERQQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, long* baseAddress, Vector256 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mask_i64gather_epi64 (__m256i src, __int64 const* base_addr, __m256i vindex, __m256i mask, const int scale) + /// VPGATHERQQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, ulong* baseAddress, Vector256 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm256_mask_i64gather_ps (__m128 src, float const* base_addr, __m256i vindex, __m128 mask, const int scale) + /// VPGATHERQPS ymm, vm32y, ymm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, float* baseAddress, Vector256 index, Vector128 mask, byte scale) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_mask_i64gather_pd (__m256d src, double const* base_addr, __m256i vindex, __m256d mask, const int scale) + /// VPGATHERQPD ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, double* baseAddress, Vector256 index, Vector256 mask, byte scale) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_hadd_epi16 (__m256i a, __m256i b) + /// VPHADDW ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_hadd_epi32 (__m256i a, __m256i b) + /// VPHADDD ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_hadds_epi16 (__m256i a, __m256i b) + /// VPHADDSW ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAddSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_hsub_epi16 (__m256i a, __m256i b) + /// VPHSUBW ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_hsub_epi32 (__m256i a, __m256i b) + /// VPHSUBD ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_hsubs_epi16 (__m256i a, __m256i b) + /// VPHSUBSW ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtractSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xm128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, sbyte* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, byte* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, short* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, ushort* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, int* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, uint* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, long* address, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, ulong* address, byte index) { throw new PlatformNotSupportedException(); } /// - /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(sbyte* address) { throw new PlatformNotSupportedException(); } /// - /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(byte* address) { throw new PlatformNotSupportedException(); } /// - /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(short* address) { throw new PlatformNotSupportedException(); } /// - /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(ushort* address) { throw new PlatformNotSupportedException(); } /// - /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(int* address) { throw new PlatformNotSupportedException(); } /// - /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(uint* address) { throw new PlatformNotSupportedException(); } /// - /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(long* address) { throw new PlatformNotSupportedException(); } /// - /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(ulong* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_maskload_epi32 (int const* mem_addr, __m128i mask) + /// VPMASKMOVD xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(int* address, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_maskload_epi32 (int const* mem_addr, __m128i mask) + /// VPMASKMOVD xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(uint* address, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_maskload_epi64 (__int64 const* mem_addr, __m128i mask) + /// VPMASKMOVQ xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(long* address, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_maskload_epi64 (__int64 const* mem_addr, __m128i mask) + /// VPMASKMOVQ xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(ulong* address, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_maskload_epi32 (int const* mem_addr, __m256i mask) + /// VPMASKMOVD ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(int* address, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_maskload_epi32 (int const* mem_addr, __m256i mask) + /// VPMASKMOVD ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(uint* address, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_maskload_epi64 (__int64 const* mem_addr, __m256i mask) + /// VPMASKMOVQ ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(long* address, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_maskload_epi64 (__int64 const* mem_addr, __m256i mask) + /// VPMASKMOVQ ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(ulong* address, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// void _mm_maskstore_epi32 (int* mem_addr, __m128i mask, __m128i a) + /// VPMASKMOVD m128, xmm, xmm /// public static unsafe void MaskStore(int* address, Vector128 mask, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_maskstore_epi32 (int* mem_addr, __m128i mask, __m128i a) + /// VPMASKMOVD m128, xmm, xmm /// public static unsafe void MaskStore(uint* address, Vector128 mask, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_maskstore_epi64 (__int64* mem_addr, __m128i mask, __m128i a) + /// VPMASKMOVQ m128, xmm, xmm /// public static unsafe void MaskStore(long* address, Vector128 mask, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_maskstore_epi64 (__int64* mem_addr, __m128i mask, __m128i a) + /// VPMASKMOVQ m128, xmm, xmm /// public static unsafe void MaskStore(ulong* address, Vector128 mask, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_maskstore_epi32 (int* mem_addr, __m256i mask, __m256i a) + /// VPMASKMOVD m256, ymm, ymm /// public static unsafe void MaskStore(int* address, Vector256 mask, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_maskstore_epi32 (int* mem_addr, __m256i mask, __m256i a) + /// VPMASKMOVD m256, ymm, ymm /// public static unsafe void MaskStore(uint* address, Vector256 mask, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_maskstore_epi64 (__int64* mem_addr, __m256i mask, __m256i a) + /// VPMASKMOVQ m256, ymm, ymm /// public static unsafe void MaskStore(long* address, Vector256 mask, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// void _mm256_maskstore_epi64 (__int64* mem_addr, __m256i mask, __m256i a) + /// VPMASKMOVQ m256, ymm, ymm /// public static unsafe void MaskStore(ulong* address, Vector256 mask, Vector256 source) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_madd_epi16 (__m256i a, __m256i b) + /// VPMADDWD ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddAdjacent(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_maddubs_epi16 (__m256i a, __m256i b) + /// VPMADDUBSW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddAdjacent(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_max_epi8 (__m256i a, __m256i b) + /// VPMAXSB ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_max_epu8 (__m256i a, __m256i b) + /// VPMAXUB ymm, ymm, ymm/m256 /// - public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } + public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_max_epi16 (__m256i a, __m256i b) + /// VPMAXSW ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_max_epu16 (__m256i a, __m256i b) + /// VPMAXUW ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_max_epi32 (__m256i a, __m256i b) + /// VPMAXSD ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_max_epu32 (__m256i a, __m256i b) + /// VPMAXUD ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_min_epi8 (__m256i a, __m256i b) + /// VPMINSB ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_min_epu8 (__m256i a, __m256i b) + /// VPMINUB ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_min_epi16 (__m256i a, __m256i b) + /// VPMINSW ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_min_epu16 (__m256i a, __m256i b) + /// VPMINUW ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_min_epi32 (__m256i a, __m256i b) + /// VPMINSD ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_min_epu32 (__m256i a, __m256i b) + /// VPMINUD ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } - + /// /// int _mm256_movemask_epi8 (__m256i a) + /// VPMOVMSKB reg, ymm /// public static int MoveMask(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// int _mm256_movemask_epi8 (__m256i a) + /// VPMOVMSKB reg, ymm /// public static int MoveMask(Vector256 value) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mpsadbw_epu8 (__m256i a, __m256i b, const int imm8) + /// VMPSADBW ymm, ymm, ymm/m256, imm8 /// public static Vector256 MultipleSumAbsoluteDifferences(Vector256 left, Vector256 right, byte mask) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_mul_epi32 (__m256i a, __m256i b) + /// VPMULDQ ymm, ymm, ymm/m256 /// public static Vector256 Multiply(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mul_epu32 (__m256i a, __m256i b) + /// VPMULUDQ ymm, ymm, ymm/m256 /// public static Vector256 Multiply(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mulhi_epi16 (__m256i a, __m256i b) + /// VPMULHW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mulhi_epu16 (__m256i a, __m256i b) + /// VPMULHUW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mulhrs_epi16 (__m256i a, __m256i b) + /// VPMULHRSW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyHighRoundScale(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mullo_epi16 (__m256i a, __m256i b) + /// VPMULLW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_mullo_epi32 (__m256i a, __m256i b) + /// VPMULLD ymm, ymm, ymm/m256 /// public static Vector256 MultiplyLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_packs_epi16 (__m256i a, __m256i b) + /// VPACKSSWB ymm, ymm, ymm/m256 /// public static Vector256 PackSignedSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_packs_epi32 (__m256i a, __m256i b) + /// VPACKSSDW ymm, ymm, ymm/m256 /// public static Vector256 PackSignedSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_packus_epi16 (__m256i a, __m256i b) + /// VPACKUSWB ymm, ymm, ymm/m256 /// public static Vector256 PackUnsignedSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_packus_epi32 (__m256i a, __m256i b) + /// VPACKUSDW ymm, ymm, ymm/m256 /// public static Vector256 PackUnsignedSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_permute4x64_epi64 (__m256i a, const int imm8) + /// VPERMQ ymm, ymm/m256, imm8 /// public static Vector256 Permute4x64(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permute4x64_epi64 (__m256i a, const int imm8) + /// VPERMQ ymm, ymm/m256, imm8 /// public static Vector256 Permute4x64(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_permute4x64_pd (__m256d a, const int imm8) + /// VPERMPD ymm, ymm/m256, imm8 /// public static Vector256 Permute4x64(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_permutevar8x32_epi32 (__m256i a, __m256i idx) + /// VPERMD ymm, ymm/m256, imm8 /// public static Vector256 PermuteVar8x32(Vector256 left, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_permutevar8x32_epi32 (__m256i a, __m256i idx) + /// VPERMD ymm, ymm/m256, imm8 /// public static Vector256 PermuteVar8x32(Vector256 left, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_permutevar8x32_ps (__m256 a, __m256i idx) + /// VPERMPS ymm, ymm/m256, imm8 /// public static Vector256 PermuteVar8x32(Vector256 left, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sll_epi16 (__m256i a, __m128i count) + /// VPSLLW ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sll_epi16 (__m256i a, __m128i count) + /// VPSLLW ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sll_epi32 (__m256i a, __m128i count) + /// VPSLLD ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sll_epi32 (__m256i a, __m128i count) + /// VPSLLD ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sll_epi64 (__m256i a, __m128i count) + /// VPSLLQ ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sll_epi64 (__m256i a, __m128i count) + /// VPSLLQ ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_slli_epi16 (__m256i a, int imm8) + /// VPSLLW ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_slli_epi16 (__m256i a, int imm8) + /// VPSLLW ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_slli_epi32 (__m256i a, int imm8) + /// VPSLLD ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_slli_epi32 (__m256i a, int imm8) + /// VPSLLD ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_slli_epi64 (__m256i a, int imm8) + /// VPSLLQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_slli_epi64 (__m256i a, int imm8) + /// VPSLLQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_sllv_epi32 (__m256i a, __m256i count) + /// VPSLLVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftLeftLogicalVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sllv_epi32 (__m256i a, __m256i count) + /// VPSLLVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftLeftLogicalVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sllv_epi64 (__m256i a, __m256i count) + /// VPSLLVQ ymm, ymm, ymm/m256 /// public static Vector256 ShiftLeftLogicalVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sllv_epi64 (__m256i a, __m256i count) + /// VPSLLVQ ymm, ymm, ymm/m256 /// public static Vector256 ShiftLeftLogicalVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } - + + /// /// __m128i _mm_sllv_epi32 (__m128i a, __m128i count) + /// VPSLLVD xmm, ymm, xmm/m128 /// public static Vector128 ShiftLeftLogicalVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sllv_epi32 (__m128i a, __m128i count) + /// VPSLLVD xmm, ymm, xmm/m128 /// public static Vector128 ShiftLeftLogicalVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sllv_epi64 (__m128i a, __m128i count) + /// VPSLLVQ xmm, ymm, xmm/m128 /// public static Vector128 ShiftLeftLogicalVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sllv_epi64 (__m128i a, __m128i count) + /// VPSLLVQ xmm, ymm, xmm/m128 /// public static Vector128 ShiftLeftLogicalVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// _mm256_sra_epi16 (__m256i a, __m128i count) + /// VPSRAW ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightArithmetic(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// _mm256_sra_epi32 (__m256i a, __m128i count) + /// VPSRAD ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightArithmetic(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srai_epi16 (__m256i a, int imm8) + /// VPSRAW ymm, ymm, imm8 /// public static Vector256 ShiftRightArithmetic(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srai_epi32 (__m256i a, int imm8) + /// VPSRAD ymm, ymm, imm8 /// public static Vector256 ShiftRightArithmetic(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_srav_epi32 (__m256i a, __m256i count) + /// VPSRAVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightArithmeticVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_srav_epi32 (__m128i a, __m128i count) + /// VPSRAVD xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightArithmeticVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srl_epi16 (__m256i a, __m128i count) + /// VPSRLW ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srl_epi16 (__m256i a, __m128i count) + /// VPSRLW ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srl_epi32 (__m256i a, __m128i count) + /// VPSRLD ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srl_epi32 (__m256i a, __m128i count) + /// VPSRLD ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srl_epi64 (__m256i a, __m128i count) + /// VPSRLQ ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srl_epi64 (__m256i a, __m128i count) + /// VPSRLQ ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srli_epi16 (__m256i a, int imm8) + /// VPSRLW ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srli_epi16 (__m256i a, int imm8) + /// VPSRLW ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srli_epi32 (__m256i a, int imm8) + /// VPSRLD ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srli_epi32 (__m256i a, int imm8) + /// VPSRLD ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srli_epi64 (__m256i a, int imm8) + /// VPSRLQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srli_epi64 (__m256i a, int imm8) + /// VPSRLQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_srlv_epi32 (__m256i a, __m256i count) + /// VPSRLVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightLogicalVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srlv_epi32 (__m256i a, __m256i count) + /// VPSRLVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightLogicalVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srlv_epi64 (__m256i a, __m256i count) + /// VPSRLVQ ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightLogicalVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_srlv_epi64 (__m256i a, __m256i count) + /// VPSRLVQ ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightLogicalVariable(Vector256 value, Vector256 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srlv_epi32 (__m128i a, __m128i count) + /// VPSRLVD xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightLogicalVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srlv_epi32 (__m128i a, __m128i count) + /// VPSRLVD xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightLogicalVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srlv_epi64 (__m128i a, __m128i count) + /// VPSRLVQ xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightLogicalVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srlv_epi64 (__m128i a, __m128i count) + /// VPSRLVQ xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightLogicalVariable(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_shuffle_epi8 (__m256i a, __m256i b) + /// VPSHUFB ymm, ymm, ymm/m256 /// public static Vector256 Shuffle(Vector256 value, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_shuffle_epi8 (__m256i a, __m256i b) + /// VPSHUFB ymm, ymm, ymm/m256 /// public static Vector256 Shuffle(Vector256 value, Vector256 mask) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_shuffle_epi32 (__m256i a, const int imm8) + /// VPSHUFD ymm, ymm, ymm/m256 /// public static Vector256 Shuffle(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_shuffle_epi32 (__m256i a, const int imm8) + /// VPSHUFD ymm, ymm, ymm/m256 /// public static Vector256 Shuffle(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_shufflehi_epi16 (__m256i a, const int imm8) + /// VPSHUFHW ymm, ymm/m256, imm8 /// public static Vector256 ShuffleHigh(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_shufflehi_epi16 (__m256i a, const int imm8) + /// VPSHUFHW ymm, ymm/m256, imm8 /// public static Vector256 ShuffleHigh(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_shufflelo_epi16 (__m256i a, const int imm8) + /// VPSHUFLW ymm, ymm/m256, imm8 /// public static Vector256 ShuffleLow(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_shufflelo_epi16 (__m256i a, const int imm8) + /// VPSHUFLW ymm, ymm/m256, imm8 /// public static Vector256 ShuffleLow(Vector256 value, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_sign_epi8 (__m256i a, __m256i b) + /// VPSIGNB ymm, ymm, ymm/m256 /// public static Vector256 Sign(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sign_epi16 (__m256i a, __m256i b) + /// VPSIGNW ymm, ymm, ymm/m256 /// public static Vector256 Sign(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sign_epi32 (__m256i a, __m256i b) + /// VPSIGND ymm, ymm, ymm/m256 /// public static Vector256 Sign(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_sub_epi8 (__m256i a, __m256i b) + /// VPSUBB ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sub_epi8 (__m256i a, __m256i b) + /// VPSUBB ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sub_epi16 (__m256i a, __m256i b) + /// VPSUBW ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sub_epi16 (__m256i a, __m256i b) + /// VPSUBW ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sub_epi32 (__m256i a, __m256i b) + /// VPSUBD ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sub_epi32 (__m256i a, __m256i b) + /// VPSUBD ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sub_epi64 (__m256i a, __m256i b) + /// VPSUBQ ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sub_epi64 (__m256i a, __m256i b) + /// VPSUBQ ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_subs_epi8 (__m256i a, __m256i b) + /// VPSUBSB ymm, ymm, ymm/m256 /// public static Vector256 SubtractSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_subs_epi16 (__m256i a, __m256i b) + /// VPSUBSW ymm, ymm, ymm/m256 /// public static Vector256 SubtractSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_subs_epu8 (__m256i a, __m256i b) + /// VPSUBUSB ymm, ymm, ymm/m256 /// public static Vector256 SubtractSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_subs_epu16 (__m256i a, __m256i b) + /// VPSUBUSW ymm, ymm, ymm/m256 /// public static Vector256 SubtractSaturate(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_sad_epu8 (__m256i a, __m256i b) + /// VPSADBW ymm, ymm, ymm/m256 /// public static Vector256 SumAbsoluteDifferences(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpackhi_epi8 (__m256i a, __m256i b) + /// VPUNPCKHBW ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpackhi_epi8 (__m256i a, __m256i b) + /// VPUNPCKHBW ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpackhi_epi16 (__m256i a, __m256i b) + /// VPUNPCKHWD ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpackhi_epi16 (__m256i a, __m256i b) + /// VPUNPCKHWD ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpackhi_epi32 (__m256i a, __m256i b) + /// VPUNPCKHDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpackhi_epi32 (__m256i a, __m256i b) + /// VPUNPCKHDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpackhi_epi64 (__m256i a, __m256i b) + /// VPUNPCKHQDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpackhi_epi64 (__m256i a, __m256i b) + /// VPUNPCKHQDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_unpacklo_epi8 (__m256i a, __m256i b) + /// VPUNPCKLBW ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpacklo_epi8 (__m256i a, __m256i b) + /// VPUNPCKLBW ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpacklo_epi16 (__m256i a, __m256i b) + /// VPUNPCKLWD ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpacklo_epi16 (__m256i a, __m256i b) + /// VPUNPCKLWD ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpacklo_epi32 (__m256i a, __m256i b) + /// VPUNPCKLDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpacklo_epi32 (__m256i a, __m256i b) + /// VPUNPCKLDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpacklo_epi64 (__m256i a, __m256i b) + /// VPUNPCKLQDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_unpacklo_epi64 (__m256i a, __m256i b) + /// VPUNPCKLQDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } - + /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx2.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx2.cs index 0e98d21a9aac..0745fac05de1 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx2.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Avx2.cs @@ -14,1500 +14,1859 @@ namespace System.Runtime.Intrinsics.X86 public static class Avx2 { public static bool IsSupported { get => IsSupported; } - + /// /// __m256i _mm256_abs_epi8 (__m256i a) + /// VPABSB ymm, ymm/m256 /// public static Vector256 Abs(Vector256 value) => Abs(value); /// /// __m256i _mm256_abs_epi16 (__m256i a) + /// VPABSW ymm, ymm/m256 /// public static Vector256 Abs(Vector256 value) => Abs(value); /// /// __m256i _mm256_abs_epi32 (__m256i a) + /// VPABSD ymm, ymm/m256 /// public static Vector256 Abs(Vector256 value) => Abs(value); /// /// __m256i _mm256_add_epi8 (__m256i a, __m256i b) + /// VPADDB ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256i _mm256_add_epi8 (__m256i a, __m256i b) + /// VPADDB ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256i _mm256_add_epi16 (__m256i a, __m256i b) + /// VPADDW ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256i _mm256_add_epi16 (__m256i a, __m256i b) + /// VPADDW ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256i _mm256_add_epi32 (__m256i a, __m256i b) + /// VPADDD ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256i _mm256_add_epi32 (__m256i a, __m256i b) + /// VPADDD ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256i _mm256_add_epi64 (__m256i a, __m256i b) + /// VPADDQ ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256i _mm256_add_epi64 (__m256i a, __m256i b) + /// VPADDQ ymm, ymm, ymm/m256 /// public static Vector256 Add(Vector256 left, Vector256 right) => Add(left, right); /// /// __m256i _mm256_adds_epi8 (__m256i a, __m256i b) + /// VPADDSB ymm, ymm, ymm/m256 /// public static Vector256 AddSaturate(Vector256 left, Vector256 right) => AddSaturate(left, right); /// /// __m256i _mm256_adds_epu8 (__m256i a, __m256i b) + /// VPADDUSB ymm, ymm, ymm/m256 /// public static Vector256 AddSaturate(Vector256 left, Vector256 right) => AddSaturate(left, right); /// /// __m256i _mm256_adds_epi16 (__m256i a, __m256i b) + /// VPADDSW ymm, ymm, ymm/m256 /// public static Vector256 AddSaturate(Vector256 left, Vector256 right) => AddSaturate(left, right); /// /// __m256i _mm256_adds_epu16 (__m256i a, __m256i b) + /// VPADDUSW ymm, ymm, ymm/m256 /// public static Vector256 AddSaturate(Vector256 left, Vector256 right) => AddSaturate(left, right); /// /// __m256i _mm256_alignr_epi8 (__m256i a, __m256i b, const int count) + /// VPALIGNR ymm, ymm, ymm/m256, imm8 /// public static Vector256 AlignRight(Vector256 left, Vector256 right, byte mask) => AlignRight(left, right, mask); - + /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256i _mm256_and_si256 (__m256i a, __m256i b) + /// VPAND ymm, ymm, ymm/m256 /// public static Vector256 And(Vector256 left, Vector256 right) => And(left, right); /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256i _mm256_andnot_si256 (__m256i a, __m256i b) + /// VPANDN ymm, ymm, ymm/m256 /// public static Vector256 AndNot(Vector256 left, Vector256 right) => AndNot(left, right); /// /// __m256i _mm256_avg_epu8 (__m256i a, __m256i b) + /// VPAVGB ymm, ymm, ymm/m256 /// public static Vector256 Average(Vector256 left, Vector256 right) => Average(left, right); /// /// __m256i _mm256_avg_epu16 (__m256i a, __m256i b) + /// VPAVGW ymm, ymm, ymm/m256 /// public static Vector256 Average(Vector256 left, Vector256 right) => Average(left, right); /// /// __m128i _mm_blend_epi32 (__m128i a, __m128i b, const int imm8) + /// VPBLENDD xmm, xmm, xmm/m128, imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) => Blend(left, right, control); /// /// __m128i _mm_blend_epi32 (__m128i a, __m128i b, const int imm8) + /// VPBLENDD xmm, xmm, xmm/m128, imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) => Blend(left, right, control); /// /// __m256i _mm256_blend_epi16 (__m256i a, __m256i b, const int imm8) + /// VPBLENDW ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) => Blend(left, right, control); /// /// __m256i _mm256_blend_epi16 (__m256i a, __m256i b, const int imm8) + /// VPBLENDW ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) => Blend(left, right, control); /// /// __m256i _mm256_blend_epi32 (__m256i a, __m256i b, const int imm8) + /// VPBLENDD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) => Blend(left, right, control); /// /// __m256i _mm256_blend_epi32 (__m256i a, __m256i b, const int imm8) + /// VPBLENDD ymm, ymm, ymm/m256, imm8 /// public static Vector256 Blend(Vector256 left, Vector256 right, byte control) => Blend(left, right, control); - + /// /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// PBLENDVB ymm, ymm, ymm/m256, ymm /// public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); /// /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// PBLENDVB ymm, ymm, ymm/m256, ymm /// public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); /// /// __m128i _mm_broadcastb_epi8 (__m128i a) + /// VPBROADCASTB xmm, xmm /// __m128i _mm_broadcastw_epi16 (__m128i a) + /// VPBROADCASTW xmm, xmm /// __m128i _mm_broadcastd_epi32 (__m128i a) + /// VPBROADCASTD xmm, xmm /// __m128i _mm_broadcastq_epi64 (__m128i a) + /// VPBROADCASTQ xmm, xmm /// __m128 _mm_broadcastss_ps (__m128 a) + /// VBROADCASTSS xmm, xmm /// __m128d _mm_broadcastsd_pd (__m128d a) + /// VBROADCASTSD xmm, xmm /// - public static Vector128 BroadcastElementToVector128(Vector128 value) where T : struct + public static Vector128 BroadcastScalarToVector128(Vector128 value) where T : struct { ThrowHelper.ThrowNotSupportedExceptionIfNonNumericType(); - return BroadcastElementToVector128(value); + return BroadcastScalarToVector128(value); } /// /// __m256i _mm256_broadcastb_epi8 (__m128i a) + /// VPBROADCASTB ymm, xmm /// __m256i _mm256_broadcastw_epi16 (__m128i a) + /// VPBROADCASTW ymm, xmm /// __m256i _mm256_broadcastd_epi32 (__m128i a) + /// VPBROADCASTD ymm, xmm /// __m256i _mm256_broadcastq_epi64 (__m128i a) + /// VPBROADCASTQ ymm, xmm /// __m256 _mm256_broadcastss_ps (__m128 a) + /// VBROADCASTSS ymm, xmm /// __m256d _mm256_broadcastsd_pd (__m128d a) + /// VBROADCASTSD ymm, xmm /// - public static Vector256 BroadcastElementToVector256(Vector128 value) where T : struct + public static Vector256 BroadcastScalarToVector256(Vector128 value) where T : struct { ThrowHelper.ThrowNotSupportedExceptionIfNonNumericType(); - return BroadcastElementToVector256(value); + return BroadcastScalarToVector256(value); } /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m8 /// public static unsafe Vector256 BroadcastVector128ToVector256(sbyte* address) => BroadcastVector128ToVector256(address); /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m8 /// public static unsafe Vector256 BroadcastVector128ToVector256(byte* address) => BroadcastVector128ToVector256(address); /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m16 /// public static unsafe Vector256 BroadcastVector128ToVector256(short* address) => BroadcastVector128ToVector256(address); /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m16 /// public static unsafe Vector256 BroadcastVector128ToVector256(ushort* address) => BroadcastVector128ToVector256(address); /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m32 /// public static unsafe Vector256 BroadcastVector128ToVector256(int* address) => BroadcastVector128ToVector256(address); /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m32 /// public static unsafe Vector256 BroadcastVector128ToVector256(uint* address) => BroadcastVector128ToVector256(address); /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m64 /// public static unsafe Vector256 BroadcastVector128ToVector256(long* address) => BroadcastVector128ToVector256(address); /// /// __m256i _mm256_broadcastsi128_si256 (__m128i a) + /// VBROADCASTI128 xmm, m64 /// public static unsafe Vector256 BroadcastVector128ToVector256(ulong* address) => BroadcastVector128ToVector256(address); /// /// __m256i _mm256_cmpeq_epi8 (__m256i a, __m256i b) + /// VPCMPEQB ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) => CompareEqual(left, right); /// /// __m256i _mm256_cmpeq_epi8 (__m256i a, __m256i b) + /// VPCMPEQB ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) => CompareEqual(left, right); /// /// __m256i _mm256_cmpeq_epi16 (__m256i a, __m256i b) + /// VPCMPEQW ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) => CompareEqual(left, right); /// /// __m256i _mm256_cmpeq_epi16 (__m256i a, __m256i b) + /// VPCMPEQW ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) => CompareEqual(left, right); /// /// __m256i _mm256_cmpeq_epi32 (__m256i a, __m256i b) + /// VPCMPEQD ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) => CompareEqual(left, right); /// /// __m256i _mm256_cmpeq_epi32 (__m256i a, __m256i b) + /// VPCMPEQD ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) => CompareEqual(left, right); /// /// __m256i _mm256_cmpeq_epi64 (__m256i a, __m256i b) + /// VPCMPEQQ ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) => CompareEqual(left, right); /// /// __m256i _mm256_cmpeq_epi64 (__m256i a, __m256i b) + /// VPCMPEQQ ymm, ymm, ymm/m256 /// public static Vector256 CompareEqual(Vector256 left, Vector256 right) => CompareEqual(left, right); - + /// /// __m256i _mm256_cmpgt_epi8 (__m256i a, __m256i b) + /// VPCMPGTB ymm, ymm, ymm/m256 /// public static Vector256 CompareGreaterThan(Vector256 left, Vector256 right) => CompareGreaterThan(left, right); /// /// __m256i _mm256_cmpgt_epi16 (__m256i a, __m256i b) + /// VPCMPGTW ymm, ymm, ymm/m256 /// public static Vector256 CompareGreaterThan(Vector256 left, Vector256 right) => CompareGreaterThan(left, right); /// /// __m256i _mm256_cmpgt_epi32 (__m256i a, __m256i b) + /// VPCMPGTD ymm, ymm, ymm/m256 /// public static Vector256 CompareGreaterThan(Vector256 left, Vector256 right) => CompareGreaterThan(left, right); /// /// __m256i _mm256_cmpgt_epi64 (__m256i a, __m256i b) + /// VPCMPGTQ ymm, ymm, ymm/m256 /// public static Vector256 CompareGreaterThan(Vector256 left, Vector256 right) => CompareGreaterThan(left, right); /// /// double _mm256_cvtsd_f64 (__m256d a) + /// HELPER: MOVSD /// public static double ConvertToDouble(Vector256 value) => ConvertToDouble(value); /// /// int _mm256_cvtsi256_si32 (__m256i a) + /// MOVD reg/m32, xmm /// public static int ConvertToInt32(Vector256 value) => ConvertToInt32(value); /// /// int _mm256_cvtsi256_si32 (__m256i a) + /// MOVD reg/m32, xmm /// public static uint ConvertToUInt32(Vector256 value) => ConvertToUInt32(value); /// /// __m256i _mm256_cvtepi8_epi16 (__m128i a) + /// VPMOVSXBW ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int16(Vector128 value) => ConvertToVector256Int16(value); /// /// __m256i _mm256_cvtepu8_epi16 (__m128i a) + /// VPMOVZXBW ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt16(Vector128 value) => ConvertToVector256UInt16(value); /// /// __m256i _mm256_cvtepi8_epi32 (__m128i a) + /// VPMOVSXBD ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int32(Vector128 value) => ConvertToVector256Int32(value); /// /// __m256i _mm256_cvtepi16_epi32 (__m128i a) + /// VPMOVSXWD ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int32(Vector128 value) => ConvertToVector256Int32(value); /// /// __m256i _mm256_cvtepu8_epi32 (__m128i a) + /// VPMOVZXBD ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt32(Vector128 value) => ConvertToVector256UInt32(value); /// /// __m256i _mm256_cvtepu16_epi32 (__m128i a) + /// VPMOVZXWD ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt32(Vector128 value) => ConvertToVector256UInt32(value); /// /// __m256i _mm256_cvtepi8_epi64 (__m128i a) + /// VPMOVSXBQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int64(Vector128 value) => ConvertToVector256Int64(value); /// /// __m256i _mm256_cvtepi16_epi64 (__m128i a) + /// VPMOVSXWQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int64(Vector128 value) => ConvertToVector256Int64(value); /// /// __m256i _mm256_cvtepi32_epi64 (__m128i a) + /// VPMOVSXDQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256Int64(Vector128 value) => ConvertToVector256Int64(value); /// /// __m256i _mm256_cvtepu8_epi64 (__m128i a) + /// VPMOVZXBQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt64(Vector128 value) => ConvertToVector256UInt64(value); /// /// __m256i _mm256_cvtepu16_epi64 (__m128i a) + /// VPMOVZXWQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt64(Vector128 value) => ConvertToVector256UInt64(value); /// /// __m256i _mm256_cvtepu32_epi64 (__m128i a) + /// VPMOVZXDQ ymm, xmm/m128 /// public static Vector256 ConvertToVector256UInt64(Vector128 value) => ConvertToVector256UInt64(value); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) => ExtractVector128(value, index); // /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(sbyte* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) => ExtractVector128(value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(byte* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) => ExtractVector128(value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(short* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) => ExtractVector128(value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(ushort* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) => ExtractVector128(value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(int* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) => ExtractVector128(value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(uint* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) => ExtractVector128(value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(long* address, Vector256 value, byte index) => ExtractVector128(address, value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 xmm, ymm, imm8 /// public static Vector128 ExtractVector128(Vector256 value, byte index) => ExtractVector128(value, index); /// /// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8) + /// VEXTRACTI128 m128, ymm, imm8 /// public static unsafe void ExtractVector128(ulong* address, Vector256 value, byte index) => ExtractVector128(address, value, index); - + /// /// __m128i _mm_i32gather_epi32 (int const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDD xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(int* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128i _mm_i32gather_epi32 (int const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDD xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(uint* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128i _mm_i32gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDQ xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(long* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128i _mm_i32gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDQ xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(ulong* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128 _mm_i32gather_ps (float const* base_addr, __m128i vindex, const int scale) + /// VGATHERDPS xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(float* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128d _mm_i32gather_pd (double const* base_addr, __m128i vindex, const int scale) + /// VGATHERDPD xmm, vm32x, xmm /// public static unsafe Vector128 GatherVector128(double* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128i _mm_i64gather_epi32 (int const* base_addr, __m128i vindex, const int scale) + /// VPGATHERQD xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(int* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128i _mm_i64gather_epi32 (int const* base_addr, __m128i vindex, const int scale) + /// VPGATHERQD xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(uint* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128i _mm_i64gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERQQ xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(long* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128i _mm_i64gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERQQ xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(ulong* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128 _mm_i64gather_ps (float const* base_addr, __m128i vindex, const int scale) + /// VGATHERQPS xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(float* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128d _mm_i64gather_pd (double const* base_addr, __m128i vindex, const int scale) + /// VGATHERQPD xmm, vm64x, xmm /// public static unsafe Vector128 GatherVector128(double* baseAddress, Vector128 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m256i _mm256_i32gather_epi32 (int const* base_addr, __m256i vindex, const int scale) + /// VPGATHERDD ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(int* baseAddress, Vector256 index, byte scale) => GatherVector256(baseAddress, index, scale); /// /// __m256i _mm256_i32gather_epi32 (int const* base_addr, __m256i vindex, const int scale) + /// VPGATHERDD ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(uint* baseAddress, Vector256 index, byte scale) => GatherVector256(baseAddress, index, scale); /// /// __m256i _mm256_i32gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(long* baseAddress, Vector128 index, byte scale) => GatherVector256(baseAddress, index, scale); /// /// __m256i _mm256_i32gather_epi64 (__int64 const* base_addr, __m128i vindex, const int scale) + /// VPGATHERDQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(ulong* baseAddress, Vector128 index, byte scale) => GatherVector256(baseAddress, index, scale); /// /// __m256 _mm256_i32gather_ps (float const* base_addr, __m256i vindex, const int scale) + /// VGATHERDPS ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(float* baseAddress, Vector256 index, byte scale) => GatherVector256(baseAddress, index, scale); /// /// __m256d _mm256_i32gather_pd (double const* base_addr, __m128i vindex, const int scale) + /// VGATHERDPD ymm, vm32y, ymm /// public static unsafe Vector256 GatherVector256(double* baseAddress, Vector128 index, byte scale) => GatherVector256(baseAddress, index, scale); /// /// __m128i _mm256_i64gather_epi32 (int const* base_addr, __m256i vindex, const int scale) + /// VPGATHERQD ymm, vm64y, ymm /// public static unsafe Vector128 GatherVector128(int* baseAddress, Vector256 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m128i _mm256_i64gather_epi32 (int const* base_addr, __m256i vindex, const int scale) + /// VPGATHERQD ymm, vm64y, ymm /// public static unsafe Vector128 GatherVector128(uint* baseAddress, Vector256 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m256i _mm256_i64gather_epi64 (__int64 const* base_addr, __m256i vindex, const int scale) + /// VPGATHERQQ ymm, vm64y, ymm /// public static unsafe Vector256 GatherVector256(long* baseAddress, Vector256 index, byte scale) => GatherVector256(baseAddress, index, scale); /// /// __m256i _mm256_i64gather_epi64 (__int64 const* base_addr, __m256i vindex, const int scale) + /// VPGATHERQQ ymm, vm64y, ymm /// public static unsafe Vector256 GatherVector256(ulong* baseAddress, Vector256 index, byte scale) => GatherVector256(baseAddress, index, scale); /// /// __m128 _mm256_i64gather_ps (float const* base_addr, __m256i vindex, const int scale) + /// VGATHERQPS ymm, vm64y, ymm /// public static unsafe Vector128 GatherVector128(float* baseAddress, Vector256 index, byte scale) => GatherVector128(baseAddress, index, scale); /// /// __m256d _mm256_i64gather_pd (double const* base_addr, __m256i vindex, const int scale) + /// VGATHERQPD ymm, vm64y, ymm /// public static unsafe Vector256 GatherVector256(double* baseAddress, Vector256 index, byte scale) => GatherVector256(baseAddress, index, scale); - + /// /// __m128i _mm_mask_i32gather_epi32 (__m128i src, int const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERDD xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, int* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128i _mm_mask_i32gather_epi32 (__m128i src, int const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERDD xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, uint* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128i _mm_mask_i32gather_epi64 (__m128i src, __int64 const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERDQ xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, long* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128i _mm_mask_i32gather_epi64 (__m128i src, __int64 const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERDQ xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, ulong* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128 _mm_mask_i32gather_ps (__m128 src, float const* base_addr, __m128i vindex, __m128 mask, const int scale) + /// VGATHERDPS xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, float* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128d _mm_mask_i32gather_pd (__m128d src, double const* base_addr, __m128i vindex, __m128d mask, const int scale) + /// VGATHERDPD xmm, vm32x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, double* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128i _mm_mask_i64gather_epi32 (__m128i src, int const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERQD xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, int* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128i _mm_mask_i64gather_epi32 (__m128i src, int const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERQD xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, uint* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128i _mm_mask_i64gather_epi64 (__m128i src, __int64 const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERQQ xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, long* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128i _mm_mask_i64gather_epi64 (__m128i src, __int64 const* base_addr, __m128i vindex, __m128i mask, const int scale) + /// VPGATHERQQ xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, ulong* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128 _mm_mask_i64gather_ps (__m128 src, float const* base_addr, __m128i vindex, __m128 mask, const int scale) + /// VPGATHERQPS xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, float* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128d _mm_mask_i64gather_pd (__m128d src, double const* base_addr, __m128i vindex, __m128d mask, const int scale) + /// VPGATHERQPD xmm, vm64x, xmm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, double* baseAddress, Vector128 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m256i _mm256_mask_i32gather_epi32 (__m256i src, int const* base_addr, __m256i vindex, __m256i mask, const int scale) + /// VPGATHERDD ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, int* baseAddress, Vector256 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); /// /// __m256i _mm256_mask_i32gather_epi32 (__m256i src, int const* base_addr, __m256i vindex, __m256i mask, const int scale) + /// VPGATHERDD ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, uint* baseAddress, Vector256 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); /// /// __m256i _mm256_mask_i32gather_epi64 (__m256i src, __int64 const* base_addr, __m128i vindex, __m256i mask, const int scale) + /// VPGATHERDQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, long* baseAddress, Vector128 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); /// /// __m256i _mm256_mask_i32gather_epi64 (__m256i src, __int64 const* base_addr, __m128i vindex, __m256i mask, const int scale) + /// VPGATHERDQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, ulong* baseAddress, Vector128 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); /// /// __m256 _mm256_mask_i32gather_ps (__m256 src, float const* base_addr, __m256i vindex, __m256 mask, const int scale) + /// VPGATHERDPS ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, float* baseAddress, Vector256 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); /// /// __m256d _mm256_mask_i32gather_pd (__m256d src, double const* base_addr, __m128i vindex, __m256d mask, const int scale) + /// VPGATHERDPD ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, double* baseAddress, Vector128 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); /// /// __m128i _mm256_mask_i64gather_epi32 (__m128i src, int const* base_addr, __m256i vindex, __m128i mask, const int scale) + /// VPGATHERQD ymm, vm32y, ymm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, int* baseAddress, Vector256 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m128i _mm256_mask_i64gather_epi32 (__m128i src, int const* base_addr, __m256i vindex, __m128i mask, const int scale) + /// VPGATHERQD ymm, vm32y, ymm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, uint* baseAddress, Vector256 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m256i _mm256_mask_i64gather_epi64 (__m256i src, __int64 const* base_addr, __m256i vindex, __m256i mask, const int scale) + /// VPGATHERQQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, long* baseAddress, Vector256 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); /// /// __m256i _mm256_mask_i64gather_epi64 (__m256i src, __int64 const* base_addr, __m256i vindex, __m256i mask, const int scale) + /// VPGATHERQQ ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, ulong* baseAddress, Vector256 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); /// /// __m128 _mm256_mask_i64gather_ps (__m128 src, float const* base_addr, __m256i vindex, __m128 mask, const int scale) + /// VPGATHERQPS ymm, vm32y, ymm /// public static unsafe Vector128 GatherMaskVector128(Vector128 source, float* baseAddress, Vector256 index, Vector128 mask, byte scale) => GatherMaskVector128(source, baseAddress, index, mask, scale); /// /// __m256d _mm256_mask_i64gather_pd (__m256d src, double const* base_addr, __m256i vindex, __m256d mask, const int scale) + /// VPGATHERQPD ymm, vm32y, ymm /// public static unsafe Vector256 GatherMaskVector256(Vector256 source, double* baseAddress, Vector256 index, Vector256 mask, byte scale) => GatherMaskVector256(source, baseAddress, index, mask, scale); - + /// /// __m256i _mm256_hadd_epi16 (__m256i a, __m256i b) + /// VPHADDW ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) => HorizontalAdd(left, right); /// /// __m256i _mm256_hadd_epi32 (__m256i a, __m256i b) + /// VPHADDD ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAdd(Vector256 left, Vector256 right) => HorizontalAdd(left, right); /// /// __m256i _mm256_hadds_epi16 (__m256i a, __m256i b) + /// VPHADDSW ymm, ymm, ymm/m256 /// public static Vector256 HorizontalAddSaturate(Vector256 left, Vector256 right) => HorizontalAddSaturate(left, right); /// /// __m256i _mm256_hsub_epi16 (__m256i a, __m256i b) + /// VPHSUBW ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) => HorizontalSubtract(left, right); /// /// __m256i _mm256_hsub_epi32 (__m256i a, __m256i b) + /// VPHSUBD ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtract(Vector256 left, Vector256 right) => HorizontalSubtract(left, right); /// /// __m256i _mm256_hsubs_epi16 (__m256i a, __m256i b) + /// VPHSUBSW ymm, ymm, ymm/m256 /// public static Vector256 HorizontalSubtractSaturate(Vector256 left, Vector256 right) => HorizontalSubtractSaturate(left, right); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xm128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, sbyte* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, byte* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, short* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, ushort* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, int* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, uint* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, long* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, xmm, imm8 /// public static Vector256 Insert(Vector256 value, Vector128 data, byte index) => Insert(value, data, index); /// /// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8) + /// VINSERTI128 ymm, ymm, m128, imm8 /// public static unsafe Vector256 Insert(Vector256 value, ulong* address, byte index) => Insert(value, address, index); /// /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(sbyte* address) => LoadAlignedVector256NonTemporal(address); /// /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(byte* address) => LoadAlignedVector256NonTemporal(address); /// /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(short* address) => LoadAlignedVector256NonTemporal(address); /// /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(ushort* address) => LoadAlignedVector256NonTemporal(address); /// /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(int* address) => LoadAlignedVector256NonTemporal(address); /// /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(uint* address) => LoadAlignedVector256NonTemporal(address); /// /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(long* address) => LoadAlignedVector256NonTemporal(address); /// /// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr) + /// VMOVNTDQA ymm, m256 /// public static unsafe Vector256 LoadAlignedVector256NonTemporal(ulong* address) => LoadAlignedVector256NonTemporal(address); /// /// __m128i _mm_maskload_epi32 (int const* mem_addr, __m128i mask) + /// VPMASKMOVD xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(int* address, Vector128 mask) => MaskLoad(address, mask); /// /// __m128i _mm_maskload_epi32 (int const* mem_addr, __m128i mask) + /// VPMASKMOVD xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(uint* address, Vector128 mask) => MaskLoad(address, mask); /// /// __m128i _mm_maskload_epi64 (__int64 const* mem_addr, __m128i mask) + /// VPMASKMOVQ xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(long* address, Vector128 mask) => MaskLoad(address, mask); /// /// __m128i _mm_maskload_epi64 (__int64 const* mem_addr, __m128i mask) + /// VPMASKMOVQ xmm, xmm, m128 /// public static unsafe Vector128 MaskLoad(ulong* address, Vector128 mask) => MaskLoad(address, mask); /// /// __m256i _mm256_maskload_epi32 (int const* mem_addr, __m256i mask) + /// VPMASKMOVD ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(int* address, Vector256 mask) => MaskLoad(address, mask); /// /// __m256i _mm256_maskload_epi32 (int const* mem_addr, __m256i mask) + /// VPMASKMOVD ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(uint* address, Vector256 mask) => MaskLoad(address, mask); /// /// __m256i _mm256_maskload_epi64 (__int64 const* mem_addr, __m256i mask) + /// VPMASKMOVQ ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(long* address, Vector256 mask) => MaskLoad(address, mask); /// /// __m256i _mm256_maskload_epi64 (__int64 const* mem_addr, __m256i mask) + /// VPMASKMOVQ ymm, ymm, m256 /// public static unsafe Vector256 MaskLoad(ulong* address, Vector256 mask) => MaskLoad(address, mask); /// /// void _mm_maskstore_epi32 (int* mem_addr, __m128i mask, __m128i a) + /// VPMASKMOVD m128, xmm, xmm /// public static unsafe void MaskStore(int* address, Vector128 mask, Vector128 source) => MaskStore(address, mask, source); /// /// void _mm_maskstore_epi32 (int* mem_addr, __m128i mask, __m128i a) + /// VPMASKMOVD m128, xmm, xmm /// public static unsafe void MaskStore(uint* address, Vector128 mask, Vector128 source) => MaskStore(address, mask, source); /// /// void _mm_maskstore_epi64 (__int64* mem_addr, __m128i mask, __m128i a) + /// VPMASKMOVQ m128, xmm, xmm /// public static unsafe void MaskStore(long* address, Vector128 mask, Vector128 source) => MaskStore(address, mask, source); /// /// void _mm_maskstore_epi64 (__int64* mem_addr, __m128i mask, __m128i a) + /// VPMASKMOVQ m128, xmm, xmm /// public static unsafe void MaskStore(ulong* address, Vector128 mask, Vector128 source) => MaskStore(address, mask, source); /// /// void _mm256_maskstore_epi32 (int* mem_addr, __m256i mask, __m256i a) + /// VPMASKMOVD m256, ymm, ymm /// public static unsafe void MaskStore(int* address, Vector256 mask, Vector256 source) => MaskStore(address, mask, source); /// /// void _mm256_maskstore_epi32 (int* mem_addr, __m256i mask, __m256i a) + /// VPMASKMOVD m256, ymm, ymm /// public static unsafe void MaskStore(uint* address, Vector256 mask, Vector256 source) => MaskStore(address, mask, source); /// /// void _mm256_maskstore_epi64 (__int64* mem_addr, __m256i mask, __m256i a) + /// VPMASKMOVQ m256, ymm, ymm /// public static unsafe void MaskStore(long* address, Vector256 mask, Vector256 source) => MaskStore(address, mask, source); /// /// void _mm256_maskstore_epi64 (__int64* mem_addr, __m256i mask, __m256i a) + /// VPMASKMOVQ m256, ymm, ymm /// public static unsafe void MaskStore(ulong* address, Vector256 mask, Vector256 source) => MaskStore(address, mask, source); /// /// __m256i _mm256_madd_epi16 (__m256i a, __m256i b) + /// VPMADDWD ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddAdjacent(Vector256 left, Vector256 right) => MultiplyAddAdjacent(left, right); /// /// __m256i _mm256_maddubs_epi16 (__m256i a, __m256i b) + /// VPMADDUBSW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddAdjacent(Vector256 left, Vector256 right) => MultiplyAddAdjacent(left, right); /// /// __m256i _mm256_max_epi8 (__m256i a, __m256i b) + /// VPMAXSB ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); /// /// __m256i _mm256_max_epu8 (__m256i a, __m256i b) + /// VPMAXUB ymm, ymm, ymm/m256 /// - public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); + public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); /// /// __m256i _mm256_max_epi16 (__m256i a, __m256i b) + /// VPMAXSW ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); /// /// __m256i _mm256_max_epu16 (__m256i a, __m256i b) + /// VPMAXUW ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); /// /// __m256i _mm256_max_epi32 (__m256i a, __m256i b) + /// VPMAXSD ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); /// /// __m256i _mm256_max_epu32 (__m256i a, __m256i b) + /// VPMAXUD ymm, ymm, ymm/m256 /// public static Vector256 Max(Vector256 left, Vector256 right) => Max(left, right); - + /// /// __m256i _mm256_min_epi8 (__m256i a, __m256i b) + /// VPMINSB ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) => Min(left, right); /// /// __m256i _mm256_min_epu8 (__m256i a, __m256i b) + /// VPMINUB ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) => Min(left, right); /// /// __m256i _mm256_min_epi16 (__m256i a, __m256i b) + /// VPMINSW ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) => Min(left, right); /// /// __m256i _mm256_min_epu16 (__m256i a, __m256i b) + /// VPMINUW ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) => Min(left, right); /// /// __m256i _mm256_min_epi32 (__m256i a, __m256i b) + /// VPMINSD ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) => Min(left, right); /// /// __m256i _mm256_min_epu32 (__m256i a, __m256i b) + /// VPMINUD ymm, ymm, ymm/m256 /// public static Vector256 Min(Vector256 left, Vector256 right) => Min(left, right); - + /// /// int _mm256_movemask_epi8 (__m256i a) + /// VPMOVMSKB reg, ymm /// public static int MoveMask(Vector256 value) => MoveMask(value); /// /// int _mm256_movemask_epi8 (__m256i a) + /// VPMOVMSKB reg, ymm /// public static int MoveMask(Vector256 value) => MoveMask(value); /// /// __m256i _mm256_mpsadbw_epu8 (__m256i a, __m256i b, const int imm8) + /// VMPSADBW ymm, ymm, ymm/m256, imm8 /// public static Vector256 MultipleSumAbsoluteDifferences(Vector256 left, Vector256 right, byte mask) => MultipleSumAbsoluteDifferences(left, right, mask); - + /// /// __m256i _mm256_mul_epi32 (__m256i a, __m256i b) + /// VPMULDQ ymm, ymm, ymm/m256 /// public static Vector256 Multiply(Vector256 left, Vector256 right) => Multiply(left, right); /// /// __m256i _mm256_mul_epu32 (__m256i a, __m256i b) + /// VPMULUDQ ymm, ymm, ymm/m256 /// public static Vector256 Multiply(Vector256 left, Vector256 right) => Multiply(left, right); /// /// __m256i _mm256_mulhi_epi16 (__m256i a, __m256i b) + /// VPMULHW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyHigh(Vector256 left, Vector256 right) => MultiplyHigh(left, right); /// /// __m256i _mm256_mulhi_epu16 (__m256i a, __m256i b) + /// VPMULHUW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyHigh(Vector256 left, Vector256 right) => MultiplyHigh(left, right); /// /// __m256i _mm256_mulhrs_epi16 (__m256i a, __m256i b) + /// VPMULHRSW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyHighRoundScale(Vector256 left, Vector256 right) => MultiplyHighRoundScale(left, right); /// /// __m256i _mm256_mullo_epi16 (__m256i a, __m256i b) + /// VPMULLW ymm, ymm, ymm/m256 /// public static Vector256 MultiplyLow(Vector256 left, Vector256 right) => MultiplyLow(left, right); /// /// __m256i _mm256_mullo_epi32 (__m256i a, __m256i b) + /// VPMULLD ymm, ymm, ymm/m256 /// public static Vector256 MultiplyLow(Vector256 left, Vector256 right) => MultiplyLow(left, right); /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256i _mm256_or_si256 (__m256i a, __m256i b) + /// VPOR ymm, ymm, ymm/m256 /// public static Vector256 Or(Vector256 left, Vector256 right) => Or(left, right); /// /// __m256i _mm256_packs_epi16 (__m256i a, __m256i b) + /// VPACKSSWB ymm, ymm, ymm/m256 /// public static Vector256 PackSignedSaturate(Vector256 left, Vector256 right) => PackSignedSaturate(left, right); /// /// __m256i _mm256_packs_epi32 (__m256i a, __m256i b) + /// VPACKSSDW ymm, ymm, ymm/m256 /// public static Vector256 PackSignedSaturate(Vector256 left, Vector256 right) => PackSignedSaturate(left, right); /// /// __m256i _mm256_packus_epi16 (__m256i a, __m256i b) + /// VPACKUSWB ymm, ymm, ymm/m256 /// public static Vector256 PackUnsignedSaturate(Vector256 left, Vector256 right) => PackUnsignedSaturate(left, right); /// /// __m256i _mm256_packus_epi32 (__m256i a, __m256i b) + /// VPACKUSDW ymm, ymm, ymm/m256 /// public static Vector256 PackUnsignedSaturate(Vector256 left, Vector256 right) => PackUnsignedSaturate(left, right); /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) => Permute2x128(left, right, control); /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) => Permute2x128(left, right, control); /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) => Permute2x128(left, right, control); /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) => Permute2x128(left, right, control); /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) => Permute2x128(left, right, control); /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) => Permute2x128(left, right, control); /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) => Permute2x128(left, right, control); /// /// __m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8) + /// VPERM2I128 ymm, ymm, ymm/m256, imm8 /// public static Vector256 Permute2x128(Vector256 left, Vector256 right, byte control) => Permute2x128(left, right, control); - + /// /// __m256i _mm256_permute4x64_epi64 (__m256i a, const int imm8) + /// VPERMQ ymm, ymm/m256, imm8 /// public static Vector256 Permute4x64(Vector256 value, byte control) => Permute4x64(value, control); /// /// __m256i _mm256_permute4x64_epi64 (__m256i a, const int imm8) + /// VPERMQ ymm, ymm/m256, imm8 /// public static Vector256 Permute4x64(Vector256 value, byte control) => Permute4x64(value, control); /// /// __m256d _mm256_permute4x64_pd (__m256d a, const int imm8) + /// VPERMPD ymm, ymm/m256, imm8 /// public static Vector256 Permute4x64(Vector256 value, byte control) => Permute4x64(value, control); - + /// /// __m256i _mm256_permutevar8x32_epi32 (__m256i a, __m256i idx) + /// VPERMD ymm, ymm/m256, imm8 /// public static Vector256 PermuteVar8x32(Vector256 left, Vector256 mask) => PermuteVar8x32(left, mask); /// /// __m256i _mm256_permutevar8x32_epi32 (__m256i a, __m256i idx) + /// VPERMD ymm, ymm/m256, imm8 /// public static Vector256 PermuteVar8x32(Vector256 left, Vector256 mask) => PermuteVar8x32(left, mask); /// /// __m256 _mm256_permutevar8x32_ps (__m256 a, __m256i idx) + /// VPERMPS ymm, ymm/m256, imm8 /// public static Vector256 PermuteVar8x32(Vector256 left, Vector256 mask) => PermuteVar8x32(left, mask); /// /// __m256i _mm256_sll_epi16 (__m256i a, __m128i count) + /// VPSLLW ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_sll_epi16 (__m256i a, __m128i count) + /// VPSLLW ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_sll_epi32 (__m256i a, __m128i count) + /// VPSLLD ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_sll_epi32 (__m256i a, __m128i count) + /// VPSLLD ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_sll_epi64 (__m256i a, __m128i count) + /// VPSLLQ ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_sll_epi64 (__m256i a, __m128i count) + /// VPSLLQ ymm, ymm, xmm/m128 /// public static Vector256 ShiftLeftLogical(Vector256 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_slli_epi16 (__m256i a, int imm8) + /// VPSLLW ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_slli_epi16 (__m256i a, int imm8) + /// VPSLLW ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_slli_epi32 (__m256i a, int imm8) + /// VPSLLD ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_slli_epi32 (__m256i a, int imm8) + /// VPSLLD ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_slli_epi64 (__m256i a, int imm8) + /// VPSLLQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) => ShiftLeftLogical(value, count); /// /// __m256i _mm256_slli_epi64 (__m256i a, int imm8) + /// VPSLLQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical(Vector256 value, byte count) => ShiftLeftLogical(value, count); - + /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bslli_epi128 (__m256i a, const int imm8) + /// VPSLLDQ ymm, ymm, imm8 /// public static Vector256 ShiftLeftLogical128BitLane(Vector256 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); - + /// /// __m256i _mm256_sllv_epi32 (__m256i a, __m256i count) + /// VPSLLVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftLeftLogicalVariable(Vector256 value, Vector256 count) => ShiftLeftLogicalVariable(value, count); /// /// __m256i _mm256_sllv_epi32 (__m256i a, __m256i count) + /// VPSLLVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftLeftLogicalVariable(Vector256 value, Vector256 count) => ShiftLeftLogicalVariable(value, count); /// /// __m256i _mm256_sllv_epi64 (__m256i a, __m256i count) + /// VPSLLVQ ymm, ymm, ymm/m256 /// public static Vector256 ShiftLeftLogicalVariable(Vector256 value, Vector256 count) => ShiftLeftLogicalVariable(value, count); /// /// __m256i _mm256_sllv_epi64 (__m256i a, __m256i count) + /// VPSLLVQ ymm, ymm, ymm/m256 /// public static Vector256 ShiftLeftLogicalVariable(Vector256 value, Vector256 count) => ShiftLeftLogicalVariable(value, count); /// /// __m128i _mm_sllv_epi32 (__m128i a, __m128i count) + /// VPSLLVD xmm, ymm, xmm/m128 /// public static Vector128 ShiftLeftLogicalVariable(Vector128 value, Vector128 count) => ShiftLeftLogicalVariable(value, count); /// /// __m128i _mm_sllv_epi32 (__m128i a, __m128i count) + /// VPSLLVD xmm, ymm, xmm/m128 /// public static Vector128 ShiftLeftLogicalVariable(Vector128 value, Vector128 count) => ShiftLeftLogicalVariable(value, count); /// /// __m128i _mm_sllv_epi64 (__m128i a, __m128i count) + /// VPSLLVQ xmm, ymm, xmm/m128 /// public static Vector128 ShiftLeftLogicalVariable(Vector128 value, Vector128 count) => ShiftLeftLogicalVariable(value, count); /// /// __m128i _mm_sllv_epi64 (__m128i a, __m128i count) + /// VPSLLVQ xmm, ymm, xmm/m128 /// public static Vector128 ShiftLeftLogicalVariable(Vector128 value, Vector128 count) => ShiftLeftLogicalVariable(value, count); /// /// _mm256_sra_epi16 (__m256i a, __m128i count) + /// VPSRAW ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightArithmetic(Vector256 value, Vector128 count) => ShiftRightArithmetic(value, count); /// /// _mm256_sra_epi32 (__m256i a, __m128i count) + /// VPSRAD ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightArithmetic(Vector256 value, Vector128 count) => ShiftRightArithmetic(value, count); /// /// __m256i _mm256_srai_epi16 (__m256i a, int imm8) + /// VPSRAW ymm, ymm, imm8 /// public static Vector256 ShiftRightArithmetic(Vector256 value, byte count) => ShiftRightArithmetic(value, count); /// /// __m256i _mm256_srai_epi32 (__m256i a, int imm8) + /// VPSRAD ymm, ymm, imm8 /// public static Vector256 ShiftRightArithmetic(Vector256 value, byte count) => ShiftRightArithmetic(value, count); /// /// __m256i _mm256_srav_epi32 (__m256i a, __m256i count) + /// VPSRAVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightArithmeticVariable(Vector256 value, Vector256 count) => ShiftRightArithmeticVariable(value, count); /// /// __m128i _mm_srav_epi32 (__m128i a, __m128i count) + /// VPSRAVD xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightArithmeticVariable(Vector128 value, Vector128 count) => ShiftRightArithmeticVariable(value, count); /// /// __m256i _mm256_srl_epi16 (__m256i a, __m128i count) + /// VPSRLW ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srl_epi16 (__m256i a, __m128i count) + /// VPSRLW ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srl_epi32 (__m256i a, __m128i count) + /// VPSRLD ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srl_epi32 (__m256i a, __m128i count) + /// VPSRLD ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srl_epi64 (__m256i a, __m128i count) + /// VPSRLQ ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srl_epi64 (__m256i a, __m128i count) + /// VPSRLQ ymm, ymm, xmm/m128 /// public static Vector256 ShiftRightLogical(Vector256 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srli_epi16 (__m256i a, int imm8) + /// VPSRLW ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srli_epi16 (__m256i a, int imm8) + /// VPSRLW ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srli_epi32 (__m256i a, int imm8) + /// VPSRLD ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srli_epi32 (__m256i a, int imm8) + /// VPSRLD ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srli_epi64 (__m256i a, int imm8) + /// VPSRLQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) => ShiftRightLogical(value, count); /// /// __m256i _mm256_srli_epi64 (__m256i a, int imm8) + /// VPSRLQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical(Vector256 value, byte count) => ShiftRightLogical(value, count); - + /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8) + /// VPSRLDQ ymm, ymm, imm8 /// public static Vector256 ShiftRightLogical128BitLane(Vector256 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); - + /// /// __m256i _mm256_srlv_epi32 (__m256i a, __m256i count) + /// VPSRLVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightLogicalVariable(Vector256 value, Vector256 count) => ShiftRightLogicalVariable(value, count); /// /// __m256i _mm256_srlv_epi32 (__m256i a, __m256i count) + /// VPSRLVD ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightLogicalVariable(Vector256 value, Vector256 count) => ShiftRightLogicalVariable(value, count); /// /// __m256i _mm256_srlv_epi64 (__m256i a, __m256i count) + /// VPSRLVQ ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightLogicalVariable(Vector256 value, Vector256 count) => ShiftRightLogicalVariable(value, count); /// /// __m256i _mm256_srlv_epi64 (__m256i a, __m256i count) + /// VPSRLVQ ymm, ymm, ymm/m256 /// public static Vector256 ShiftRightLogicalVariable(Vector256 value, Vector256 count) => ShiftRightLogicalVariable(value, count); /// /// __m128i _mm_srlv_epi32 (__m128i a, __m128i count) + /// VPSRLVD xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightLogicalVariable(Vector128 value, Vector128 count) => ShiftRightLogicalVariable(value, count); /// /// __m128i _mm_srlv_epi32 (__m128i a, __m128i count) + /// VPSRLVD xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightLogicalVariable(Vector128 value, Vector128 count) => ShiftRightLogicalVariable(value, count); /// /// __m128i _mm_srlv_epi64 (__m128i a, __m128i count) + /// VPSRLVQ xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightLogicalVariable(Vector128 value, Vector128 count) => ShiftRightLogicalVariable(value, count); /// /// __m128i _mm_srlv_epi64 (__m128i a, __m128i count) + /// VPSRLVQ xmm, xmm, xmm/m128 /// public static Vector128 ShiftRightLogicalVariable(Vector128 value, Vector128 count) => ShiftRightLogicalVariable(value, count); /// /// __m256i _mm256_shuffle_epi8 (__m256i a, __m256i b) + /// VPSHUFB ymm, ymm, ymm/m256 /// public static Vector256 Shuffle(Vector256 value, Vector256 mask) => Shuffle(value, mask); /// /// __m256i _mm256_shuffle_epi8 (__m256i a, __m256i b) + /// VPSHUFB ymm, ymm, ymm/m256 /// public static Vector256 Shuffle(Vector256 value, Vector256 mask) => Shuffle(value, mask); /// /// __m256i _mm256_shuffle_epi32 (__m256i a, const int imm8) + /// VPSHUFD ymm, ymm, ymm/m256 /// public static Vector256 Shuffle(Vector256 value, byte control) => Shuffle(value, control); /// /// __m256i _mm256_shuffle_epi32 (__m256i a, const int imm8) + /// VPSHUFD ymm, ymm, ymm/m256 /// public static Vector256 Shuffle(Vector256 value, byte control) => Shuffle(value, control); - + /// /// __m256i _mm256_shufflehi_epi16 (__m256i a, const int imm8) + /// VPSHUFHW ymm, ymm/m256, imm8 /// public static Vector256 ShuffleHigh(Vector256 value, byte control) => ShuffleHigh(value, control); /// /// __m256i _mm256_shufflehi_epi16 (__m256i a, const int imm8) + /// VPSHUFHW ymm, ymm/m256, imm8 /// public static Vector256 ShuffleHigh(Vector256 value, byte control) => ShuffleHigh(value, control); - + /// /// __m256i _mm256_shufflelo_epi16 (__m256i a, const int imm8) + /// VPSHUFLW ymm, ymm/m256, imm8 /// public static Vector256 ShuffleLow(Vector256 value, byte control) => ShuffleLow(value, control); /// /// __m256i _mm256_shufflelo_epi16 (__m256i a, const int imm8) + /// VPSHUFLW ymm, ymm/m256, imm8 /// public static Vector256 ShuffleLow(Vector256 value, byte control) => ShuffleLow(value, control); - + /// /// __m256i _mm256_sign_epi8 (__m256i a, __m256i b) + /// VPSIGNB ymm, ymm, ymm/m256 /// public static Vector256 Sign(Vector256 left, Vector256 right) => Sign(left, right); /// /// __m256i _mm256_sign_epi16 (__m256i a, __m256i b) + /// VPSIGNW ymm, ymm, ymm/m256 /// public static Vector256 Sign(Vector256 left, Vector256 right) => Sign(left, right); /// /// __m256i _mm256_sign_epi32 (__m256i a, __m256i b) + /// VPSIGND ymm, ymm, ymm/m256 /// public static Vector256 Sign(Vector256 left, Vector256 right) => Sign(left, right); - + /// /// __m256i _mm256_sub_epi8 (__m256i a, __m256i b) + /// VPSUBB ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256i _mm256_sub_epi8 (__m256i a, __m256i b) + /// VPSUBB ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256i _mm256_sub_epi16 (__m256i a, __m256i b) + /// VPSUBW ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256i _mm256_sub_epi16 (__m256i a, __m256i b) + /// VPSUBW ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256i _mm256_sub_epi32 (__m256i a, __m256i b) + /// VPSUBD ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256i _mm256_sub_epi32 (__m256i a, __m256i b) + /// VPSUBD ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256i _mm256_sub_epi64 (__m256i a, __m256i b) + /// VPSUBQ ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256i _mm256_sub_epi64 (__m256i a, __m256i b) + /// VPSUBQ ymm, ymm, ymm/m256 /// public static Vector256 Subtract(Vector256 left, Vector256 right) => Subtract(left, right); /// /// __m256i _mm256_subs_epi8 (__m256i a, __m256i b) + /// VPSUBSB ymm, ymm, ymm/m256 /// public static Vector256 SubtractSaturate(Vector256 left, Vector256 right) => SubtractSaturate(left, right); /// /// __m256i _mm256_subs_epi16 (__m256i a, __m256i b) + /// VPSUBSW ymm, ymm, ymm/m256 /// public static Vector256 SubtractSaturate(Vector256 left, Vector256 right) => SubtractSaturate(left, right); /// /// __m256i _mm256_subs_epu8 (__m256i a, __m256i b) + /// VPSUBUSB ymm, ymm, ymm/m256 /// public static Vector256 SubtractSaturate(Vector256 left, Vector256 right) => SubtractSaturate(left, right); /// /// __m256i _mm256_subs_epu16 (__m256i a, __m256i b) + /// VPSUBUSW ymm, ymm, ymm/m256 /// public static Vector256 SubtractSaturate(Vector256 left, Vector256 right) => SubtractSaturate(left, right); /// /// __m256i _mm256_sad_epu8 (__m256i a, __m256i b) + /// VPSADBW ymm, ymm, ymm/m256 /// public static Vector256 SumAbsoluteDifferences(Vector256 left, Vector256 right) => SumAbsoluteDifferences(left, right); /// /// __m256i _mm256_unpackhi_epi8 (__m256i a, __m256i b) + /// VPUNPCKHBW ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256i _mm256_unpackhi_epi8 (__m256i a, __m256i b) + /// VPUNPCKHBW ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256i _mm256_unpackhi_epi16 (__m256i a, __m256i b) + /// VPUNPCKHWD ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256i _mm256_unpackhi_epi16 (__m256i a, __m256i b) + /// VPUNPCKHWD ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256i _mm256_unpackhi_epi32 (__m256i a, __m256i b) + /// VPUNPCKHDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256i _mm256_unpackhi_epi32 (__m256i a, __m256i b) + /// VPUNPCKHDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256i _mm256_unpackhi_epi64 (__m256i a, __m256i b) + /// VPUNPCKHQDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); /// /// __m256i _mm256_unpackhi_epi64 (__m256i a, __m256i b) + /// VPUNPCKHQDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackHigh(Vector256 left, Vector256 right) => UnpackHigh(left, right); - + /// /// __m256i _mm256_unpacklo_epi8 (__m256i a, __m256i b) + /// VPUNPCKLBW ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256i _mm256_unpacklo_epi8 (__m256i a, __m256i b) + /// VPUNPCKLBW ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256i _mm256_unpacklo_epi16 (__m256i a, __m256i b) + /// VPUNPCKLWD ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256i _mm256_unpacklo_epi16 (__m256i a, __m256i b) + /// VPUNPCKLWD ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256i _mm256_unpacklo_epi32 (__m256i a, __m256i b) + /// VPUNPCKLDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256i _mm256_unpacklo_epi32 (__m256i a, __m256i b) + /// VPUNPCKLDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256i _mm256_unpacklo_epi64 (__m256i a, __m256i b) + /// VPUNPCKLQDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); /// /// __m256i _mm256_unpacklo_epi64 (__m256i a, __m256i b) + /// VPUNPCKLQDQ ymm, ymm, ymm/m256 /// public static Vector256 UnpackLow(Vector256 left, Vector256 right) => UnpackLow(left, right); - + /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); /// /// __m256i _mm256_xor_si256 (__m256i a, __m256i b) + /// VPXOR ymm, ymm, ymm/m256 /// public static Vector256 Xor(Vector256 left, Vector256 right) => Xor(left, right); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi1.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi1.PlatformNotSupported.cs index eb2e30a2c143..f74cc7b84f82 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi1.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi1.PlatformNotSupported.cs @@ -17,63 +17,77 @@ public static class Bmi1 /// /// unsigned int _andn_u32 (unsigned int a, unsigned int b) + /// ANDN r32a, r32b, reg/m32 /// public static uint AndNot(uint left, uint right) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _andn_u64 (unsigned __int64 a, unsigned __int64 b) + /// ANDN r64a, r64b, reg/m64 /// public static ulong AndNot(ulong left, ulong right) { throw new PlatformNotSupportedException(); } /// /// unsigned int _bextr_u32 (unsigned int a, unsigned int start, unsigned int len) + /// BEXTR r32a, reg/m32, r32b /// public static uint BitFieldExtract(uint value, uint start, uint length) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _bextr_u64 (unsigned __int64 a, unsigned int start, unsigned int len) + /// BEXTR r64a, reg/m64, r64b /// public static ulong BitFieldExtract(ulong value, ulong start, ulong length) { throw new PlatformNotSupportedException(); } /// /// unsigned int _bextr2_u32 (unsigned int a, unsigned int control) + /// BEXTR r32a, reg/m32, r32b /// public static uint BitFieldExtract(uint value, uint control) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _bextr2_u64 (unsigned __int64 a, unsigned __int64 control) + /// BEXTR r64a, reg/m64, r64b /// public static ulong BitFieldExtract(ulong value, ulong control) { throw new PlatformNotSupportedException(); } /// /// unsigned int _blsi_u32 (unsigned int a) + /// BLSI reg, reg/m32 /// public static uint ExtractLowestSetBit(uint value) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _blsi_u64 (unsigned __int64 a) + /// BLSI reg, reg/m64 /// public static ulong ExtractLowestSetBit(ulong value) { throw new PlatformNotSupportedException(); } /// /// unsigned int _blsmsk_u32 (unsigned int a) + /// BLSMSK reg, reg/m32 /// public static uint GetMaskUptoLowestSetBit(uint value) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _blsmsk_u64 (unsigned __int64 a) + /// BLSMSK reg, reg/m64 /// public static ulong GetMaskUptoLowestSetBit(ulong value) { throw new PlatformNotSupportedException(); } /// /// unsigned int _blsr_u32 (unsigned int a) + /// BLSR reg, reg/m32 /// public static uint ResetLowestSetBit(uint value) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _blsr_u64 (unsigned __int64 a) + /// BLSR reg, reg/m64 /// public static ulong ResetLowestSetBit(ulong value) { throw new PlatformNotSupportedException(); } /// /// int _mm_tzcnt_32 (unsigned int a) + /// TZCNT reg, reg/m32 /// public static uint TrailingZeroCount(uint value) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_tzcnt_64 (unsigned __int64 a) + /// TZCNT reg, reg/m64 /// public static ulong TrailingZeroCount(ulong value) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi1.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi1.cs index 628c83b6cd8c..d8e41ea0a2c9 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi1.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi1.cs @@ -17,63 +17,77 @@ public static class Bmi1 /// /// unsigned int _andn_u32 (unsigned int a, unsigned int b) + /// ANDN r32a, r32b, reg/m32 /// public static uint AndNot(uint left, uint right) => AndNot(left, right); /// /// unsigned __int64 _andn_u64 (unsigned __int64 a, unsigned __int64 b) + /// ANDN r64a, r64b, reg/m64 /// public static ulong AndNot(ulong left, ulong right) => AndNot(left, right); /// /// unsigned int _bextr_u32 (unsigned int a, unsigned int start, unsigned int len) + /// BEXTR r32a, reg/m32, r32b /// public static uint BitFieldExtract(uint value, uint start, uint length) => BitFieldExtract(value, start, length); /// /// unsigned __int64 _bextr_u64 (unsigned __int64 a, unsigned int start, unsigned int len) + /// BEXTR r64a, reg/m64, r64b /// public static ulong BitFieldExtract(ulong value, ulong start, ulong length) => BitFieldExtract(value, start, length); /// /// unsigned int _bextr2_u32 (unsigned int a, unsigned int control) + /// BEXTR r32a, reg/m32, r32b /// public static uint BitFieldExtract(uint value, uint control) => BitFieldExtract(value, control); /// /// unsigned __int64 _bextr2_u64 (unsigned __int64 a, unsigned __int64 control) + /// BEXTR r64a, reg/m64, r64b /// public static ulong BitFieldExtract(ulong value, ulong control) => BitFieldExtract(value, control); /// /// unsigned int _blsi_u32 (unsigned int a) + /// BLSI reg, reg/m32 /// public static uint ExtractLowestSetBit(uint value) => ExtractLowestSetBit(value); /// /// unsigned __int64 _blsi_u64 (unsigned __int64 a) + /// BLSI reg, reg/m64 /// public static ulong ExtractLowestSetBit(ulong value) => ExtractLowestSetBit(value); /// /// unsigned int _blsmsk_u32 (unsigned int a) + /// BLSMSK reg, reg/m32 /// public static uint GetMaskUptoLowestSetBit(uint value) => GetMaskUptoLowestSetBit(value); /// /// unsigned __int64 _blsmsk_u64 (unsigned __int64 a) + /// BLSMSK reg, reg/m64 /// public static ulong GetMaskUptoLowestSetBit(ulong value) => GetMaskUptoLowestSetBit(value); /// /// unsigned int _blsr_u32 (unsigned int a) + /// BLSR reg, reg/m32 /// public static uint ResetLowestSetBit(uint value) => ResetLowestSetBit(value); /// /// unsigned __int64 _blsr_u64 (unsigned __int64 a) + /// BLSR reg, reg/m64 /// public static ulong ResetLowestSetBit(ulong value) => ResetLowestSetBit(value); /// /// int _mm_tzcnt_32 (unsigned int a) + /// TZCNT reg, reg/m32 /// public static uint TrailingZeroCount(uint value) => TrailingZeroCount(value); /// /// __int64 _mm_tzcnt_64 (unsigned __int64 a) + /// TZCNT reg, reg/m64 /// public static ulong TrailingZeroCount(ulong value) => TrailingZeroCount(value); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi2.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi2.PlatformNotSupported.cs index 510186a2d1db..85082c7305c1 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi2.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi2.PlatformNotSupported.cs @@ -17,37 +17,45 @@ public static class Bmi2 /// /// unsigned int _bzhi_u32 (unsigned int a, unsigned int index) + /// BZHI r32a, reg/m32, r32b /// public static uint ZeroHighBits(uint value, uint index) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _bzhi_u64 (unsigned __int64 a, unsigned int index) + /// BZHI r64a, reg/m32, r64b /// public static ulong ZeroHighBits(ulong value, ulong index) { throw new PlatformNotSupportedException(); } /// /// unsigned int _mulx_u32 (unsigned int a, unsigned int b, unsigned int* hi) + /// MULX r32a, r32b, reg/m32 /// public static unsafe uint MultiplyNoFlags(uint left, uint right, uint* high) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _mulx_u64 (unsigned __int64 a, unsigned __int64 b, unsigned __int64* hi) + /// MULX r64a, r64b, reg/m64 /// public static unsafe ulong MultiplyNoFlags(ulong left, ulong right, ulong* high) { throw new PlatformNotSupportedException(); } /// /// unsigned int _pdep_u32 (unsigned int a, unsigned int mask) + /// PDEP r32a, r32b, reg/m32 /// public static uint ParallelBitDeposit(uint value, uint mask) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _pdep_u64 (unsigned __int64 a, unsigned __int64 mask) + /// PDEP r64a, r64b, reg/m64 /// public static ulong ParallelBitDeposit(ulong value, ulong mask) { throw new PlatformNotSupportedException(); } /// /// unsigned int _pext_u32 (unsigned int a, unsigned int mask) + /// PEXT r32a, r32b, reg/m32 /// public static uint ParallelBitExtract(uint value, uint mask) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _pext_u64 (unsigned __int64 a, unsigned __int64 mask) + /// PEXT r64a, r64b, reg/m64 /// public static ulong ParallelBitExtract(ulong value, ulong mask) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi2.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi2.cs index c6dfa72f4488..fd09704a2c6b 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi2.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Bmi2.cs @@ -17,38 +17,46 @@ public static class Bmi2 /// /// unsigned int _bzhi_u32 (unsigned int a, unsigned int index) + /// BZHI r32a, reg/m32, r32b /// public static uint ZeroHighBits(uint value, uint index) => ZeroHighBits(value, index); /// /// unsigned __int64 _bzhi_u64 (unsigned __int64 a, unsigned int index) + /// BZHI r64a, reg/m32, r64b /// public static ulong ZeroHighBits(ulong value, ulong index) => ZeroHighBits(value, index); /// /// unsigned int _mulx_u32 (unsigned int a, unsigned int b, unsigned int* hi) + /// MULX r32a, r32b, reg/m32 /// public static unsafe uint MultiplyNoFlags(uint left, uint right, uint* high) => MultiplyNoFlags(left, right, high); /// /// unsigned __int64 _mulx_u64 (unsigned __int64 a, unsigned __int64 b, unsigned __int64* hi) + /// MULX r64a, r64b, reg/m64 /// public static unsafe ulong MultiplyNoFlags(ulong left, ulong right, ulong* high) => MultiplyNoFlags(left, right, high); /// /// unsigned int _pdep_u32 (unsigned int a, unsigned int mask) + /// PDEP r32a, r32b, reg/m32 /// public static uint ParallelBitDeposit(uint value, uint mask) => ParallelBitDeposit(value, mask); /// /// unsigned __int64 _pdep_u64 (unsigned __int64 a, unsigned __int64 mask) + /// PDEP r64a, r64b, reg/m64 /// public static ulong ParallelBitDeposit(ulong value, ulong mask) => ParallelBitDeposit(value, mask); /// /// unsigned int _pext_u32 (unsigned int a, unsigned int mask) + /// PEXT r32a, r32b, reg/m32 /// public static uint ParallelBitExtract(uint value, uint mask) => ParallelBitExtract(value, mask); /// /// unsigned __int64 _pext_u64 (unsigned __int64 a, unsigned __int64 mask) + /// PEXT r64a, r64b, reg/m64 /// - public static ulong ParallelBitExtract(ulong value, ulong mask) => ParallelBitExtract(value, mask); + public static ulong ParallelBitExtract(ulong value, ulong mask) => ParallelBitExtract(value, mask); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Fma.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Fma.PlatformNotSupported.cs index 2a6c3c976295..dbeaf8fa8432 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Fma.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Fma.PlatformNotSupported.cs @@ -16,139 +16,171 @@ public static class Fma /// /// __m128 _mm_fmadd_ps (__m128 a, __m128 b, __m128 c) + /// VFMADDPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAdd(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fmadd_pd (__m128d a, __m128d b, __m128d c) + /// VFMADDPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAdd(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_fmadd_ps (__m256 a, __m256 b, __m256 c) + /// VFMADDPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAdd(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_fmadd_pd (__m256d a, __m256d b, __m256d c) + /// VFMADDPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAdd(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_fmadd_ss (__m128 a, __m128 b, __m128 c) + /// VFMADDSS xmm, xmm, xmm/m32 /// public static Vector128 MultiplyAddScalar(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fmadd_sd (__m128d a, __m128d b, __m128d c) + /// VFMADDSS xmm, xmm, xmm/m64 /// public static Vector128 MultiplyAddScalar(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_fmaddsub_ps (__m128 a, __m128 b, __m128 c) + /// VFMADDSUBPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAddSubtract(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fmaddsub_pd (__m128d a, __m128d b, __m128d c) + /// VFMADDSUBPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAddSubtract(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_fmaddsub_ps (__m256 a, __m256 b, __m256 c) + /// VFMADDSUBPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddSubtract(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_fmaddsub_pd (__m256d a, __m256d b, __m256d c) + /// VFMADDSUBPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddSubtract(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_fmsub_ps (__m128 a, __m128 b, __m128 c) + /// VFMSUBPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtract(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fmsub_pd (__m128d a, __m128d b, __m128d c) + /// VFMSUBPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtract(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_fmsub_ps (__m256 a, __m256 b, __m256 c) + /// VFMSUBPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtract(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_fmsub_pd (__m256d a, __m256d b, __m256d c) + /// VFMSUBPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtract(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_fmsub_ss (__m128 a, __m128 b, __m128 c) + /// VFMSUBSS xmm, xmm, xmm/m32 /// public static Vector128 MultiplySubtractScalar(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fmsub_sd (__m128d a, __m128d b, __m128d c) + /// VFMSUBSD xmm, xmm, xmm/m64 /// public static Vector128 MultiplySubtractScalar(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_fmsubadd_ps (__m128 a, __m128 b, __m128 c) + /// VFMSUBADDPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtractAdd(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fmsubadd_pd (__m128d a, __m128d b, __m128d c) + /// VFMSUBADDPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtractAdd(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_fmsubadd_ps (__m256 a, __m256 b, __m256 c) + /// VFMSUBADDPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtractAdd(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_fmsubadd_pd (__m256d a, __m256d b, __m256d c) + /// VFMSUBADDPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtractAdd(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_fnmadd_ps (__m128 a, __m128 b, __m128 c) + /// VFNMADDPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAddNegated(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fnmadd_pd (__m128d a, __m128d b, __m128d c) + /// VFNMADDPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAddNegated(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_fnmadd_ps (__m256 a, __m256 b, __m256 c) + /// VFNMADDPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddNegated(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_fnmadd_pd (__m256d a, __m256d b, __m256d c) + /// VFNMADDPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddNegated(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } - /// + /// /// __m128 _mm_fnmadd_ss (__m128 a, __m128 b, __m128 c) + /// VFNMADDSS xmm, xmm, xmm/m32 /// public static Vector128 MultiplyAddNegatedScalar(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fnmadd_sd (__m128d a, __m128d b, __m128d c) + /// VFNMADDSD xmm, xmm, xmm/m64 /// public static Vector128 MultiplyAddNegatedScalar(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_fnmsub_ps (__m128 a, __m128 b, __m128 c) + /// VFNMSUBPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtractNegated(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fnmsub_pd (__m128d a, __m128d b, __m128d c) + /// VFNMSUBPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtractNegated(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m256 _mm256_fnmsub_ps (__m256 a, __m256 b, __m256 c) + /// VFNMSUBPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtractNegated(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m256d _mm256_fnmsub_pd (__m256d a, __m256d b, __m256d c) + /// VFNMSUBPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtractNegated(Vector256 a, Vector256 b, Vector256 c) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_fnmsub_ss (__m128 a, __m128 b, __m128 c) + /// VFNMSUBSS xmm, xmm, xmm/m32 /// public static Vector128 MultiplySubtractNegatedScalar(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_fnmsub_sd (__m128d a, __m128d b, __m128d c) + /// VFNMSUBSD xmm, xmm, xmm/m64 /// public static Vector128 MultiplySubtractNegatedScalar(Vector128 a, Vector128 b, Vector128 c) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Fma.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Fma.cs index 25561bdb15c7..a18a4f577381 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Fma.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Fma.cs @@ -16,139 +16,171 @@ public static class Fma /// /// __m128 _mm_fmadd_ps (__m128 a, __m128 b, __m128 c) + /// VFMADDPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAdd(Vector128 a, Vector128 b, Vector128 c) => MultiplyAdd(a, b, c); /// /// __m128d _mm_fmadd_pd (__m128d a, __m128d b, __m128d c) + /// VFMADDPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAdd(Vector128 a, Vector128 b, Vector128 c) => MultiplyAdd(a, b, c); /// /// __m256 _mm256_fmadd_ps (__m256 a, __m256 b, __m256 c) + /// VFMADDPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAdd(Vector256 a, Vector256 b, Vector256 c) => MultiplyAdd(a, b, c); /// /// __m256d _mm256_fmadd_pd (__m256d a, __m256d b, __m256d c) + /// VFMADDPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAdd(Vector256 a, Vector256 b, Vector256 c) => MultiplyAdd(a, b, c); /// /// __m128 _mm_fmadd_ss (__m128 a, __m128 b, __m128 c) + /// VFMADDSS xmm, xmm, xmm/m32 /// public static Vector128 MultiplyAddScalar(Vector128 a, Vector128 b, Vector128 c) => MultiplyAddScalar(a, b, c); /// /// __m128d _mm_fmadd_sd (__m128d a, __m128d b, __m128d c) + /// VFMADDSS xmm, xmm, xmm/m64 /// public static Vector128 MultiplyAddScalar(Vector128 a, Vector128 b, Vector128 c) => MultiplyAddScalar(a, b, c); /// /// __m128 _mm_fmaddsub_ps (__m128 a, __m128 b, __m128 c) + /// VFMADDSUBPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAddSubtract(Vector128 a, Vector128 b, Vector128 c) => MultiplyAddSubtract(a, b, c); /// /// __m128d _mm_fmaddsub_pd (__m128d a, __m128d b, __m128d c) + /// VFMADDSUBPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAddSubtract(Vector128 a, Vector128 b, Vector128 c) => MultiplyAddSubtract(a, b, c); /// /// __m256 _mm256_fmaddsub_ps (__m256 a, __m256 b, __m256 c) + /// VFMADDSUBPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddSubtract(Vector256 a, Vector256 b, Vector256 c) => MultiplyAddSubtract(a, b, c); /// /// __m256d _mm256_fmaddsub_pd (__m256d a, __m256d b, __m256d c) + /// VFMADDSUBPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddSubtract(Vector256 a, Vector256 b, Vector256 c) => MultiplyAddSubtract(a, b, c); /// /// __m128 _mm_fmsub_ps (__m128 a, __m128 b, __m128 c) + /// VFMSUBPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtract(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtract(a, b, c); /// /// __m128d _mm_fmsub_pd (__m128d a, __m128d b, __m128d c) + /// VFMSUBPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtract(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtract(a, b, c); /// /// __m256 _mm256_fmsub_ps (__m256 a, __m256 b, __m256 c) + /// VFMSUBPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtract(Vector256 a, Vector256 b, Vector256 c) => MultiplySubtract(a, b, c); /// /// __m256d _mm256_fmsub_pd (__m256d a, __m256d b, __m256d c) + /// VFMSUBPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtract(Vector256 a, Vector256 b, Vector256 c) => MultiplySubtract(a, b, c); /// /// __m128 _mm_fmsub_ss (__m128 a, __m128 b, __m128 c) + /// VFMSUBSS xmm, xmm, xmm/m32 /// public static Vector128 MultiplySubtractScalar(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtractScalar(a, b, c); /// /// __m128d _mm_fmsub_sd (__m128d a, __m128d b, __m128d c) + /// VFMSUBSD xmm, xmm, xmm/m64 /// public static Vector128 MultiplySubtractScalar(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtractScalar(a, b, c); /// /// __m128 _mm_fmsubadd_ps (__m128 a, __m128 b, __m128 c) + /// VFMSUBADDPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtractAdd(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtractAdd(a, b, c); /// /// __m128d _mm_fmsubadd_pd (__m128d a, __m128d b, __m128d c) + /// VFMSUBADDPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtractAdd(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtractAdd(a, b, c); /// /// __m256 _mm256_fmsubadd_ps (__m256 a, __m256 b, __m256 c) + /// VFMSUBADDPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtractAdd(Vector256 a, Vector256 b, Vector256 c) => MultiplySubtractAdd(a, b, c); /// /// __m256d _mm256_fmsubadd_pd (__m256d a, __m256d b, __m256d c) + /// VFMSUBADDPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtractAdd(Vector256 a, Vector256 b, Vector256 c) => MultiplySubtractAdd(a, b, c); /// /// __m128 _mm_fnmadd_ps (__m128 a, __m128 b, __m128 c) + /// VFNMADDPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAddNegated(Vector128 a, Vector128 b, Vector128 c) => MultiplyAddNegated(a, b, c); /// /// __m128d _mm_fnmadd_pd (__m128d a, __m128d b, __m128d c) + /// VFNMADDPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplyAddNegated(Vector128 a, Vector128 b, Vector128 c) => MultiplyAddNegated(a, b, c); /// /// __m256 _mm256_fnmadd_ps (__m256 a, __m256 b, __m256 c) + /// VFNMADDPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddNegated(Vector256 a, Vector256 b, Vector256 c) => MultiplyAddNegated(a, b, c); /// /// __m256d _mm256_fnmadd_pd (__m256d a, __m256d b, __m256d c) + /// VFNMADDPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplyAddNegated(Vector256 a, Vector256 b, Vector256 c) => MultiplyAddNegated(a, b, c); /// /// __m128 _mm_fnmadd_ss (__m128 a, __m128 b, __m128 c) + /// VFNMADDSS xmm, xmm, xmm/m32 /// public static Vector128 MultiplyAddNegatedScalar(Vector128 a, Vector128 b, Vector128 c) => MultiplyAddNegatedScalar(a, b, c); /// /// __m128d _mm_fnmadd_sd (__m128d a, __m128d b, __m128d c) + /// VFNMADDSD xmm, xmm, xmm/m64 /// public static Vector128 MultiplyAddNegatedScalar(Vector128 a, Vector128 b, Vector128 c) => MultiplyAddNegatedScalar(a, b, c); /// /// __m128 _mm_fnmsub_ps (__m128 a, __m128 b, __m128 c) + /// VFNMSUBPS xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtractNegated(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtractNegated(a, b, c); /// /// __m128d _mm_fnmsub_pd (__m128d a, __m128d b, __m128d c) + /// VFNMSUBPD xmm, xmm, xmm/m128 /// public static Vector128 MultiplySubtractNegated(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtractNegated(a, b, c); /// /// __m256 _mm256_fnmsub_ps (__m256 a, __m256 b, __m256 c) + /// VFNMSUBPS ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtractNegated(Vector256 a, Vector256 b, Vector256 c) => MultiplySubtractNegated(a, b, c); /// /// __m256d _mm256_fnmsub_pd (__m256d a, __m256d b, __m256d c) + /// VFNMSUBPD ymm, ymm, ymm/m256 /// public static Vector256 MultiplySubtractNegated(Vector256 a, Vector256 b, Vector256 c) => MultiplySubtractNegated(a, b, c); /// /// __m128 _mm_fnmsub_ss (__m128 a, __m128 b, __m128 c) + /// VFNMSUBSS xmm, xmm, xmm/m32 /// public static Vector128 MultiplySubtractNegatedScalar(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtractNegatedScalar(a, b, c); /// /// __m128d _mm_fnmsub_sd (__m128d a, __m128d b, __m128d c) + /// VFNMSUBSD xmm, xmm, xmm/m64 /// public static Vector128 MultiplySubtractNegatedScalar(Vector128 a, Vector128 b, Vector128 c) => MultiplySubtractNegatedScalar(a, b, c); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Lzcnt.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Lzcnt.PlatformNotSupported.cs index a305c806491e..155ec63ffa46 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Lzcnt.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Lzcnt.PlatformNotSupported.cs @@ -16,10 +16,12 @@ public static class Lzcnt /// /// unsigned int _lzcnt_u32 (unsigned int a) + /// LZCNT reg, reg/m32 /// public static uint LeadingZeroCount(uint value) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _lzcnt_u64 (unsigned __int64 a) + /// LZCNT reg, reg/m64 /// public static ulong LeadingZeroCount(ulong value) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Lzcnt.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Lzcnt.cs index 6bdc8cc3a09c..67a31050e258 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Lzcnt.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Lzcnt.cs @@ -17,10 +17,12 @@ public static class Lzcnt /// /// unsigned int _lzcnt_u32 (unsigned int a) + /// LZCNT reg, reg/m32 /// public static uint LeadingZeroCount(uint value) => LeadingZeroCount(value); /// /// unsigned __int64 _lzcnt_u64 (unsigned __int64 a) + /// LZCNT reg, reg/m64 /// public static ulong LeadingZeroCount(ulong value) => LeadingZeroCount(value); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Pclmulqdq.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Pclmulqdq.PlatformNotSupported.cs index d2ee7f0bc63b..32e8519d2288 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Pclmulqdq.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Pclmulqdq.PlatformNotSupported.cs @@ -17,10 +17,12 @@ public static class Pclmulqdq /// /// __m128i _mm_clmulepi64_si128 (__m128i a, __m128i b, const int imm8) + /// PCLMULQDQ xmm, xmm/m128, imm8 /// public static Vector128 CarryLessMultiply(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_clmulepi64_si128 (__m128i a, __m128i b, const int imm8) + /// PCLMULQDQ xmm, xmm/m128, imm8 /// public static Vector128 CarryLessMultiply(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Pclmulqdq.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Pclmulqdq.cs index 03cb3786539d..0e009da71505 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Pclmulqdq.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Pclmulqdq.cs @@ -17,10 +17,12 @@ public static class Pclmulqdq /// /// __m128i _mm_clmulepi64_si128 (__m128i a, __m128i b, const int imm8) + /// PCLMULQDQ xmm, xmm/m128, imm8 /// public static Vector128 CarryLessMultiply(Vector128 left, Vector128 right, byte control) => CarryLessMultiply(left, right, control); /// /// __m128i _mm_clmulepi64_si128 (__m128i a, __m128i b, const int imm8) + /// PCLMULQDQ xmm, xmm/m128, imm8 /// public static Vector128 CarryLessMultiply(Vector128 left, Vector128 right, byte control) => CarryLessMultiply(left, right, control); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Popcnt.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Popcnt.PlatformNotSupported.cs index f02db7a279ca..1e153f69564b 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Popcnt.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Popcnt.PlatformNotSupported.cs @@ -16,10 +16,12 @@ public static class Popcnt /// /// int _mm_popcnt_u32 (unsigned int a) + /// POPCNT reg, reg/m32 /// public static int PopCount(uint value) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_popcnt_u64 (unsigned __int64 a) + /// POPCNT reg64, reg/m64 /// public static long PopCount(ulong value) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Popcnt.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Popcnt.cs index 21cae3170c8f..79f24c9fd99e 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Popcnt.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Popcnt.cs @@ -17,10 +17,12 @@ public static class Popcnt /// /// int _mm_popcnt_u32 (unsigned int a) + /// POPCNT reg, reg/m32 /// public static int PopCount(uint value) => PopCount(value); /// /// __int64 _mm_popcnt_u64 (unsigned __int64 a) + /// POPCNT reg, reg/m64 /// public static long PopCount(ulong value) => PopCount(value); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse.PlatformNotSupported.cs index 8e5c7b267b8e..b6671784903d 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse.PlatformNotSupported.cs @@ -17,345 +17,453 @@ public static class Sse /// /// __m128 _mm_add_ps (__m128 a, __m128 b) + /// ADDPS xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_add_ss (__m128 a, __m128 b) + /// ADDSS xmm, xmm/m32 /// public static Vector128 AddScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_and_ps (__m128 a, __m128 b) + /// ANDPS xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_andnot_ps (__m128 a, __m128 b) + /// ANDNPS xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpeq_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(0) /// - public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comieq_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareEqualOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomieq_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareEqualUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpeq_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(0) /// public static Vector128 CompareEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpgt_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(6) /// - public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comigt_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareGreaterThanOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomigt_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareGreaterThanUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpgt_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(6) /// public static Vector128 CompareGreaterThanScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpge_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(5) /// - public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comige_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareGreaterThanOrEqualOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomige_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareGreaterThanOrEqualUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpge_ss (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m32, imm8(5) /// public static Vector128 CompareGreaterThanOrEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmplt_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(1) /// - public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comilt_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareLessThanOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomilt_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareLessThanUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmplt_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(1) /// public static Vector128 CompareLessThanScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmple_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(2) /// - public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comile_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareLessThanOrEqualOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomile_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareLessThanOrEqualUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmple_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(2) /// public static Vector128 CompareLessThanOrEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpneq_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(4) /// - public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } - - /// - /// __m128 _mm_cmpneq_ss (__m128 a, __m128 b) - /// - public static Vector128 CompareNotEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comineq_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareNotEqualOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomineq_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareNotEqualUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_cmpneq_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(4) + /// + public static Vector128 CompareNotEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// /// __m128 _mm_cmpngt_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(2) /// - public static Vector128 CompareNotGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpngt_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(2) /// public static Vector128 CompareNotGreaterThanScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpnge_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(1) /// - public static Vector128 CompareNotGreaterThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotGreaterThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpnge_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(1) /// public static Vector128 CompareNotGreaterThanOrEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpnlt_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(5) /// - public static Vector128 CompareNotLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpnlt_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(5) /// public static Vector128 CompareNotLessThanScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpnle_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(6) /// - public static Vector128 CompareNotLessThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotLessThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpnle_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(6) /// public static Vector128 CompareNotLessThanOrEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpord_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(7) /// - public static Vector128 CompareOrdered(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareOrdered(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpord_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(7) /// public static Vector128 CompareOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpunord_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(3) /// - public static Vector128 CompareUnordered(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareUnordered(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cmpunord_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(3) /// public static Vector128 CompareUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_cvtss_si32 (__m128 a) + /// CVTSS2SI r32, xmm/m32 /// public static int ConvertToInt32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_cvtss_si64 (__m128 a) + /// CVTSS2SI r64, xmm/m32 /// public static long ConvertToInt64(Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// float _mm_cvtss_f32 (__m128 a) + /// HELPER: MOVSS /// public static float ConvertToSingle(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cvtsi32_ss (__m128 a, int b) + /// CVTSI2SS xmm, reg/m32 /// - public static Vector128 ConvertToVector128SingleScalar(Vector128 upper, int value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128Single(Vector128 upper, int value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cvtsi64_ss (__m128 a, __int64 b) + /// CVTSI2SS xmm, reg/m64 /// - public static Vector128 ConvertToVector128SingleScalar(Vector128 upper, long value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128Single(Vector128 upper, long value) { throw new PlatformNotSupportedException(); } /// /// int _mm_cvttss_si32 (__m128 a) + /// CVTTSS2SI r32, xmm/m32 /// public static int ConvertToInt32WithTruncation(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_cvttss_si64 (__m128 a) + /// CVTTSS2SI r64, xmm/m32 /// public static long ConvertToInt64WithTruncation(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_div_ps (__m128 a, __m128 b) + /// DIVPS xmm, xmm/m128 /// - public static Vector128 Divide(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Divide(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_div_ss (__m128 a, __m128 b) + /// DIVSS xmm, xmm/m32 /// public static Vector128 DivideScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_loadu_ps (float const* mem_address) + /// MOVUPS xmm, m128 /// public static unsafe Vector128 LoadVector128(float* address) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_load_ss (float const* mem_address) + /// MOVSS xmm, m32 /// - public static unsafe Vector128 LoadScalar(float* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(float* address) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_load_ps (float const* mem_address) + /// MOVAPS xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(float* address) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_loadh_pi (__m128 a, __m64 const* mem_addr) + /// MOVHPS xmm, m64 /// - public static unsafe Vector128 LoadHigh(Vector128 value, float* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadHigh(Vector128 lower, float* address) { throw new PlatformNotSupportedException(); } /// - /// __m128 _mm_loadh_pi (__m128 a, __m64 const* mem_addr) + /// __m128 _mm_loadl_pi (__m128 a, __m64 const* mem_addr) + /// MOVLPS xmm, m64 /// - public static unsafe Vector128 LoadLow(Vector128 value, float* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadLow(Vector128 upper, float* address) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_max_ps (__m128 a, __m128 b) + /// MAXPS xmm, xmm/m128 /// - public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_max_ss (__m128 a, __m128 b) + /// MAXSS xmm, xmm/m32 /// public static Vector128 MaxScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_min_ps (__m128 a, __m128 b) + /// MINPS xmm, xmm/m128 /// - public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_min_ss (__m128 a, __m128 b) + /// MINSS xmm, xmm/m32 /// public static Vector128 MinScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_move_ss (__m128 a, __m128 b) + /// MOVSS xmm, xmm /// public static Vector128 MoveScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_movehl_ps (__m128 a, __m128 b) + /// MOVHLPS xmm, xmm /// - public static Vector128 MoveHighToLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 MoveHighToLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_movelh_ps (__m128 a, __m128 b) + /// MOVLHPS xmm, xmm /// - public static Vector128 MoveLowToHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 MoveLowToHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_movemask_ps (__m128 a) + /// MOVMSKPS reg, xmm /// public static int MoveMask(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_mul_ps (__m128 a, __m128 b) + /// MULPS xmm, xmm/m128 /// - public static Vector128 Multiply(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Multiply(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_mul_ss (__m128 a, __m128 b) + /// MULPS xmm, xmm/m32 /// public static Vector128 MultiplyScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// + /// void _mm_prefetch(char* p, int i) + /// PREFETCHT0 m8 + /// + public static unsafe void Prefetch0(void* address) { throw new PlatformNotSupportedException(); } + + /// + /// void _mm_prefetch(char* p, int i) + /// PREFETCHT1 m8 + /// + public static unsafe void Prefetch1(void* address) { throw new PlatformNotSupportedException(); } + + /// + /// void _mm_prefetch(char* p, int i) + /// PREFETCHT2 m8 + /// + public static unsafe void Prefetch2(void* address) { throw new PlatformNotSupportedException(); } + + /// + /// void _mm_prefetch(char* p, int i) + /// PREFETCHNTA m8 + /// + public static unsafe void PrefetchNonTemporal(void* address) { throw new PlatformNotSupportedException(); } + /// /// __m128 _mm_or_ps (__m128 a, __m128 b) + /// ORPS xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_rcp_ps (__m128 a) + /// RCPPS xmm, xmm/m128 /// public static Vector128 Reciprocal(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_rcp_ss (__m128 a) + /// RCPSS xmm, xmm/m32 /// public static Vector128 ReciprocalScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_rcp_ss (__m128 a, __m128 b) + /// RCPSS xmm, xmm/m32 + /// The above native signature does not exist. We provide this additional overload for consistency with the other scalar APIs. + /// + public static Vector128 ReciprocalScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// __m128 _mm_rsqrt_ps (__m128 a) + /// RSQRTPS xmm, xmm/m128 /// public static Vector128 ReciprocalSqrt(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_rsqrt_ss (__m128 a) + /// RSQRTSS xmm, xmm/m32 /// public static Vector128 ReciprocalSqrtScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_rsqrt_ss (__m128 a, __m128 b) + /// RSQRTSS xmm, xmm/m32 + /// The above native signature does not exist. We provide this additional overload for consistency with the other scalar APIs. + /// + public static Vector128 ReciprocalSqrtScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// __m128 _mm_set_ps (float e3, float e2, float e1, float e0) /// @@ -363,97 +471,134 @@ public static class Sse /// /// __m128 _mm_set_ss (float a) + /// HELPER /// - public static Vector128 SetScalar(float value) { throw new PlatformNotSupportedException(); } + public static Vector128 SetScalarVector128(float value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_set1_ps (float a) + /// HELPER /// public static Vector128 SetAllVector128(float value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_setzero_ps (void) + /// HELPER - XORPS /// public static Vector128 SetZeroVector128() { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_castpd_ps (__m128d a) + /// HELPER - No Codegen /// __m128i _mm_castpd_si128 (__m128d a) + /// HELPER - No Codegen /// __m128d _mm_castps_pd (__m128 a) + /// HELPER - No Codegen /// __m128i _mm_castps_si128 (__m128 a) + /// HELPER - No Codegen /// __m128d _mm_castsi128_pd (__m128i a) + /// HELPER - No Codegen /// __m128 _mm_castsi128_ps (__m128i a) + /// HELPER - No Codegen /// public static Vector128 StaticCast(Vector128 value) where T : struct where U : struct { throw new PlatformNotSupportedException(); } + /// /// __m128 _mm_shuffle_ps (__m128 a, __m128 b, unsigned int control) + /// SHUFPS xmm, xmm/m128, imm8 /// public static Vector128 Shuffle(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_sqrt_ps (__m128 a) + /// SQRTPS xmm, xmm/m128 /// public static Vector128 Sqrt(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_sqrt_ss (__m128 a) + /// SQRTSS xmm, xmm/m32 /// public static Vector128 SqrtScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_sqrt_ss (__m128 a, __m128 b) + /// SQRTSS xmm, xmm/m32 + /// The above native signature does not exist. We provide this additional overload for consistency with the other scalar APIs. + /// + public static Vector128 SqrtScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// void _mm_store_ps (float* mem_addr, __m128 a) + /// MOVAPS m128, xmm /// public static unsafe void StoreAligned(float* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_ps (float* mem_addr, __m128 a) + /// MOVNTPS m128, xmm /// public static unsafe void StoreAlignedNonTemporal(float* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_ps (float* mem_addr, __m128 a) + /// MOVUPS m128, xmm /// public static unsafe void Store(float* address, Vector128 source) { throw new PlatformNotSupportedException(); } + /// + /// void _mm_sfence(void) + /// SFENCE + /// + public static void StoreFence() { throw new PlatformNotSupportedException(); } + /// /// void _mm_store_ss (float* mem_addr, __m128 a) + /// MOVSS m32, xmm /// public static unsafe void StoreScalar(float* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeh_pi (__m64* mem_addr, __m128 a) + /// MOVHPS m64, xmm /// public static unsafe void StoreHigh(float* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storel_pi (__m64* mem_addr, __m128 a) + /// MOVLPS m64, xmm /// public static unsafe void StoreLow(float* address, Vector128 source) { throw new PlatformNotSupportedException(); } - + /// /// __m128d _mm_sub_ps (__m128d a, __m128d b) + /// SUBPS xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_sub_ss (__m128 a, __m128 b) + /// SUBSS xmm, xmm/m32 /// public static Vector128 SubtractScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_unpackhi_ps (__m128 a, __m128 b) + /// UNPCKHPS xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_unpacklo_ps (__m128 a, __m128 b) + /// UNPCKLPS xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_xor_ps (__m128 a, __m128 b) + /// XORPS xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse.cs index a39adc14bc13..8b089c83cfc3 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse.cs @@ -17,345 +17,453 @@ public static class Sse /// /// __m128 _mm_add_ps (__m128 a, __m128 b) + /// ADDPS xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128 _mm_add_ss (__m128 a, __m128 b) + /// ADDSS xmm, xmm/m32 /// public static Vector128 AddScalar(Vector128 left, Vector128 right) => AddScalar(left, right); /// /// __m128 _mm_and_ps (__m128 a, __m128 b) + /// ANDPS xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128 _mm_andnot_ps (__m128 a, __m128 b) + /// ANDNPS xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128 _mm_cmpeq_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(0) /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// int _mm_comieq_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareEqualOrderedScalar(Vector128 left, Vector128 right) => CompareEqualOrderedScalar(left, right); /// /// int _mm_ucomieq_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareEqualUnorderedScalar(Vector128 left, Vector128 right) => CompareEqualUnorderedScalar(left, right); /// /// __m128 _mm_cmpeq_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(0) /// public static Vector128 CompareEqualScalar(Vector128 left, Vector128 right) => CompareEqualScalar(left, right); /// /// __m128 _mm_cmpgt_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(6) /// public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); /// /// int _mm_comigt_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareGreaterThanOrderedScalar(Vector128 left, Vector128 right) => CompareGreaterThanOrderedScalar(left, right); /// /// int _mm_ucomigt_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareGreaterThanUnorderedScalar(Vector128 left, Vector128 right) => CompareGreaterThanUnorderedScalar(left, right); /// /// __m128 _mm_cmpgt_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(6) /// public static Vector128 CompareGreaterThanScalar(Vector128 left, Vector128 right) => CompareGreaterThanScalar(left, right); /// /// __m128 _mm_cmpge_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(5) /// public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); /// /// int _mm_comige_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareGreaterThanOrEqualOrderedScalar(Vector128 left, Vector128 right) => CompareGreaterThanOrEqualOrderedScalar(left, right); /// /// int _mm_ucomige_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareGreaterThanOrEqualUnorderedScalar(Vector128 left, Vector128 right) => CompareGreaterThanOrEqualUnorderedScalar(left, right); /// /// __m128 _mm_cmpge_ss (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m32, imm8(5) /// public static Vector128 CompareGreaterThanOrEqualScalar(Vector128 left, Vector128 right) => CompareGreaterThanOrEqualScalar(left, right); /// /// __m128 _mm_cmplt_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(1) /// public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); /// /// int _mm_comilt_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareLessThanOrderedScalar(Vector128 left, Vector128 right) => CompareLessThanOrderedScalar(left, right); /// /// int _mm_ucomilt_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareLessThanUnorderedScalar(Vector128 left, Vector128 right) => CompareLessThanUnorderedScalar(left, right); /// /// __m128 _mm_cmplt_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(1) /// public static Vector128 CompareLessThanScalar(Vector128 left, Vector128 right) => CompareLessThanScalar(left, right); /// /// __m128 _mm_cmple_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(2) /// public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); /// /// int _mm_comile_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareLessThanOrEqualOrderedScalar(Vector128 left, Vector128 right) => CompareLessThanOrEqualOrderedScalar(left, right); /// /// int _mm_ucomile_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareLessThanOrEqualUnorderedScalar(Vector128 left, Vector128 right) => CompareLessThanOrEqualUnorderedScalar(left, right); /// /// __m128 _mm_cmple_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(2) /// public static Vector128 CompareLessThanOrEqualScalar(Vector128 left, Vector128 right) => CompareLessThanOrEqualScalar(left, right); /// /// __m128 _mm_cmpneq_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(4) /// public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); /// /// int _mm_comineq_ss (__m128 a, __m128 b) + /// COMISS xmm, xmm/m32 /// public static bool CompareNotEqualOrderedScalar(Vector128 left, Vector128 right) => CompareNotEqualOrderedScalar(left, right); /// /// int _mm_ucomineq_ss (__m128 a, __m128 b) + /// UCOMISS xmm, xmm/m32 /// public static bool CompareNotEqualUnorderedScalar(Vector128 left, Vector128 right) => CompareNotEqualUnorderedScalar(left, right); /// /// __m128 _mm_cmpneq_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(4) /// public static Vector128 CompareNotEqualScalar(Vector128 left, Vector128 right) => CompareNotEqualScalar(left, right); /// /// __m128 _mm_cmpngt_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(2) /// public static Vector128 CompareNotGreaterThan(Vector128 left, Vector128 right) => CompareNotGreaterThan(left, right); /// /// __m128 _mm_cmpngt_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(2) /// public static Vector128 CompareNotGreaterThanScalar(Vector128 left, Vector128 right) => CompareNotGreaterThanScalar(left, right); /// /// __m128 _mm_cmpnge_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(1) /// public static Vector128 CompareNotGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareNotGreaterThanOrEqual(left, right); /// /// __m128 _mm_cmpnge_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(1) /// public static Vector128 CompareNotGreaterThanOrEqualScalar(Vector128 left, Vector128 right) => CompareNotGreaterThanOrEqualScalar(left, right); /// /// __m128 _mm_cmpnlt_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(5) /// public static Vector128 CompareNotLessThan(Vector128 left, Vector128 right) => CompareNotLessThan(left, right); /// /// __m128 _mm_cmpnlt_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(5) /// public static Vector128 CompareNotLessThanScalar(Vector128 left, Vector128 right) => CompareNotLessThanScalar(left, right); /// /// __m128 _mm_cmpnle_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(6) /// public static Vector128 CompareNotLessThanOrEqual(Vector128 left, Vector128 right) => CompareNotLessThanOrEqual(left, right); /// /// __m128 _mm_cmpnle_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(6) /// public static Vector128 CompareNotLessThanOrEqualScalar(Vector128 left, Vector128 right) => CompareNotLessThanOrEqualScalar(left, right); /// /// __m128 _mm_cmpord_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(7) /// public static Vector128 CompareOrdered(Vector128 left, Vector128 right) => CompareOrdered(left, right); /// /// __m128 _mm_cmpord_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(7) /// public static Vector128 CompareOrderedScalar(Vector128 left, Vector128 right) => CompareOrderedScalar(left, right); /// /// __m128 _mm_cmpunord_ps (__m128 a, __m128 b) + /// CMPPS xmm, xmm/m128, imm8(3) /// public static Vector128 CompareUnordered(Vector128 left, Vector128 right) => CompareUnordered(left, right); /// /// __m128 _mm_cmpunord_ss (__m128 a, __m128 b) + /// CMPSS xmm, xmm/m32, imm8(3) /// public static Vector128 CompareUnorderedScalar(Vector128 left, Vector128 right) => CompareUnorderedScalar(left, right); /// /// int _mm_cvtss_si32 (__m128 a) + /// CVTSS2SI r32, xmm/m32 /// public static int ConvertToInt32(Vector128 value) => ConvertToInt32(value); /// /// __int64 _mm_cvtss_si64 (__m128 a) + /// CVTSS2SI r64, xmm/m32 /// public static long ConvertToInt64(Vector128 value) => ConvertToInt64(value); + /// /// float _mm_cvtss_f32 (__m128 a) + /// HELPER: MOVSS /// public static float ConvertToSingle(Vector128 value) => ConvertToSingle(value); /// /// __m128 _mm_cvtsi32_ss (__m128 a, int b) + /// CVTSI2SS xmm, reg/m32 /// - public static Vector128 ConvertToVector128SingleScalar(Vector128 upper, int value) => ConvertToVector128SingleScalar(upper, value); + public static Vector128 ConvertScalarToVector128Single(Vector128 upper, int value) => ConvertScalarToVector128Single(upper, value); /// /// __m128 _mm_cvtsi64_ss (__m128 a, __int64 b) + /// CVTSI2SS xmm, reg/m64 /// - public static Vector128 ConvertToVector128SingleScalar(Vector128 upper, long value) => ConvertToVector128SingleScalar(upper, value); + public static Vector128 ConvertScalarToVector128Single(Vector128 upper, long value) => ConvertScalarToVector128Single(upper, value); /// /// int _mm_cvttss_si32 (__m128 a) + /// CVTTSS2SI r32, xmm/m32 /// public static int ConvertToInt32WithTruncation(Vector128 value) => ConvertToInt32WithTruncation(value); /// /// __int64 _mm_cvttss_si64 (__m128 a) + /// CVTTSS2SI r64, xmm/m32 /// public static long ConvertToInt64WithTruncation(Vector128 value) => ConvertToInt64WithTruncation(value); /// /// __m128 _mm_div_ps (__m128 a, __m128 b) + /// DIVPS xmm, xmm/m128 /// public static Vector128 Divide(Vector128 left, Vector128 right) => Divide(left, right); /// /// __m128 _mm_div_ss (__m128 a, __m128 b) + /// DIVSS xmm, xmm/m32 /// public static Vector128 DivideScalar(Vector128 left, Vector128 right) => DivideScalar(left, right); /// /// __m128 _mm_loadu_ps (float const* mem_address) + /// MOVUPS xmm, m128 /// public static unsafe Vector128 LoadVector128(float* address) => LoadVector128(address); /// /// __m128 _mm_load_ss (float const* mem_address) + /// MOVSS xmm, m32 /// - public static unsafe Vector128 LoadScalar(float* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(float* address) => LoadScalarVector128(address); /// /// __m128 _mm_load_ps (float const* mem_address) + /// MOVAPS xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(float* address) => LoadAlignedVector128(address); /// /// __m128 _mm_loadh_pi (__m128 a, __m64 const* mem_addr) + /// MOVHPS xmm, m64 /// - public static unsafe Vector128 LoadHigh(Vector128 value, float* address) => LoadHigh(value, address); + public static unsafe Vector128 LoadHigh(Vector128 lower, float* address) => LoadHigh(lower, address); /// /// __m128 _mm_loadl_pi (__m128 a, __m64 const* mem_addr) + /// MOVLPS xmm, m64 /// - public static unsafe Vector128 LoadLow(Vector128 value, float* address) => LoadLow(value, address); + public static unsafe Vector128 LoadLow(Vector128 upper, float* address) => LoadLow(upper, address); /// /// __m128 _mm_max_ps (__m128 a, __m128 b) + /// MAXPS xmm, xmm/m128 /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); /// /// __m128 _mm_max_ss (__m128 a, __m128 b) + /// MAXSS xmm, xmm/m32 /// public static Vector128 MaxScalar(Vector128 left, Vector128 right) => MaxScalar(left, right); /// /// __m128 _mm_min_ps (__m128 a, __m128 b) + /// MINPS xmm, xmm/m128 /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); /// /// __m128 _mm_min_ss (__m128 a, __m128 b) + /// MINSS xmm, xmm/m32 /// public static Vector128 MinScalar(Vector128 left, Vector128 right) => MinScalar(left, right); /// /// __m128 _mm_move_ss (__m128 a, __m128 b) + /// MOVSS xmm, xmm /// public static Vector128 MoveScalar(Vector128 upper, Vector128 value) => MoveScalar(upper, value); /// /// __m128 _mm_movehl_ps (__m128 a, __m128 b) + /// MOVHLPS xmm, xmm /// public static Vector128 MoveHighToLow(Vector128 left, Vector128 right) => MoveHighToLow(left, right); /// /// __m128 _mm_movelh_ps (__m128 a, __m128 b) + /// MOVLHPS xmm, xmm /// public static Vector128 MoveLowToHigh(Vector128 left, Vector128 right) => MoveLowToHigh(left, right); /// /// int _mm_movemask_ps (__m128 a) + /// MOVMSKPS reg, xmm /// public static int MoveMask(Vector128 value) => MoveMask(value); /// /// __m128 _mm_mul_ps (__m128 a, __m128 b) + /// MULPS xmm, xmm/m128 /// public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); /// /// __m128 _mm_mul_ss (__m128 a, __m128 b) + /// MULPS xmm, xmm/m32 /// public static Vector128 MultiplyScalar(Vector128 left, Vector128 right) => MultiplyScalar(left, right); /// /// __m128 _mm_or_ps (__m128 a, __m128 b) + /// ORPS xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); + /// + /// void _mm_prefetch(char* p, int i) + /// PREFETCHT0 m8 + /// + public static unsafe void Prefetch0(void* address) => Prefetch0(address); + + /// + /// void _mm_prefetch(char* p, int i) + /// PREFETCHT1 m8 + /// + public static unsafe void Prefetch1(void* address) => Prefetch1(address); + + /// + /// void _mm_prefetch(char* p, int i) + /// PREFETCHT2 m8 + /// + public static unsafe void Prefetch2(void* address) => Prefetch2(address); + + /// + /// void _mm_prefetch(char* p, int i) + /// PREFETCHNTA m8 + /// + public static unsafe void PrefetchNonTemporal(void* address) => PrefetchNonTemporal(address); + /// /// __m128 _mm_rcp_ps (__m128 a) + /// RCPPS xmm, xmm/m128 /// public static Vector128 Reciprocal(Vector128 value) => Reciprocal(value); /// /// __m128 _mm_rcp_ss (__m128 a) + /// RCPSS xmm, xmm/m32 /// public static Vector128 ReciprocalScalar(Vector128 value) => ReciprocalScalar(value); + /// + /// __m128 _mm_rcp_ss (__m128 a, __m128 b) + /// RCPSS xmm, xmm/m32 + /// The above native signature does not exist. We provide this additional overload for consistency with the other scalar APIs. + /// + public static Vector128 ReciprocalScalar(Vector128 upper, Vector128 value) => ReciprocalScalar(upper, value); + /// /// __m128 _mm_rsqrt_ps (__m128 a) + /// RSQRTPS xmm, xmm/m128 /// public static Vector128 ReciprocalSqrt(Vector128 value) => ReciprocalSqrt(value); /// /// __m128 _mm_rsqrt_ss (__m128 a) + /// RSQRTSS xmm, xmm/m32 /// public static Vector128 ReciprocalSqrtScalar(Vector128 value) => ReciprocalSqrtScalar(value); + /// + /// __m128 _mm_rsqrt_ss (__m128 a, __m128 b) + /// RSQRTSS xmm, xmm/m32 + /// The above native signature does not exist. We provide this additional overload for consistency with the other scalar APIs. + /// + public static Vector128 ReciprocalSqrtScalar(Vector128 upper, Vector128 value) => ReciprocalSqrtScalar(upper, value); + /// /// __m128 _mm_set_ps (float e3, float e2, float e1, float e0) /// @@ -363,26 +471,35 @@ public static class Sse /// /// __m128 _mm_set_ss (float a) + /// HELPER /// - public static Vector128 SetScalar(float value) => SetScalar(value); + public static Vector128 SetScalarVector128(float value) => SetScalarVector128(value); /// /// __m128 _mm_set1_ps (float a) + /// HELPER /// public static Vector128 SetAllVector128(float value) => SetAllVector128(value); /// /// __m128d _mm_setzero_ps (void) + /// HELPER - XORPS /// public static Vector128 SetZeroVector128() => SetZeroVector128(); /// /// __m128 _mm_castpd_ps (__m128d a) + /// HELPER - No Codegen /// __m128i _mm_castpd_si128 (__m128d a) + /// HELPER - No Codegen /// __m128d _mm_castps_pd (__m128 a) + /// HELPER - No Codegen /// __m128i _mm_castps_si128 (__m128 a) + /// HELPER - No Codegen /// __m128d _mm_castsi128_pd (__m128i a) + /// HELPER - No Codegen /// __m128 _mm_castsi128_ps (__m128i a) + /// HELPER - No Codegen /// public static Vector128 StaticCast(Vector128 value) where T : struct where U : struct { @@ -393,71 +510,98 @@ public static Vector128 StaticCast(Vector128 value) where T : struct /// /// __m128 _mm_shuffle_ps (__m128 a, __m128 b, unsigned int control) + /// SHUFPS xmm, xmm/m128, imm8 /// public static Vector128 Shuffle(Vector128 left, Vector128 right, byte control) => Shuffle(left, right, control); /// /// __m128 _mm_sqrt_ps (__m128 a) + /// SQRTPS xmm, xmm/m128 /// public static Vector128 Sqrt(Vector128 value) => Sqrt(value); /// /// __m128 _mm_sqrt_ss (__m128 a) + /// SQRTSS xmm, xmm/m32 /// public static Vector128 SqrtScalar(Vector128 value) => SqrtScalar(value); + /// + /// __m128 _mm_sqrt_ss (__m128 a, __m128 b) + /// SQRTSS xmm, xmm/m32 + /// The above native signature does not exist. We provide this additional overload for consistency with the other scalar APIs. + /// + public static Vector128 SqrtScalar(Vector128 upper, Vector128 value) => SqrtScalar(upper, value); + /// /// void _mm_store_ps (float* mem_addr, __m128 a) + /// MOVAPS m128, xmm /// public static unsafe void StoreAligned(float* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_stream_ps (float* mem_addr, __m128 a) + /// MOVNTPS m128, xmm /// public static unsafe void StoreAlignedNonTemporal(float* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_storeu_ps (float* mem_addr, __m128 a) + /// MOVUPS m128, xmm /// public static unsafe void Store(float* address, Vector128 source) => Store(address, source); + /// + /// void _mm_sfence(void) + /// SFENCE + /// + public static void StoreFence() => StoreFence(); + /// /// void _mm_store_ss (float* mem_addr, __m128 a) + /// MOVSS m32, xmm /// public static unsafe void StoreScalar(float* address, Vector128 source) => StoreScalar(address, source); /// /// void _mm_storeh_pi (__m64* mem_addr, __m128 a) + /// MOVHPS m64, xmm /// public static unsafe void StoreHigh(float* address, Vector128 source) => StoreHigh(address, source); /// /// void _mm_storel_pi (__m64* mem_addr, __m128 a) + /// MOVLPS m64, xmm /// public static unsafe void StoreLow(float* address, Vector128 source) => StoreLow(address, source); /// /// __m128d _mm_sub_ps (__m128d a, __m128d b) + /// SUBPS xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128 _mm_sub_ss (__m128 a, __m128 b) + /// SUBSS xmm, xmm/m32 /// public static Vector128 SubtractScalar(Vector128 left, Vector128 right) => SubtractScalar(left, right); /// /// __m128 _mm_unpackhi_ps (__m128 a, __m128 b) + /// UNPCKHPS xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128 _mm_unpacklo_ps (__m128 a, __m128 b) + /// UNPCKLPS xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128 _mm_xor_ps (__m128 a, __m128 b) + /// XORPS xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.PlatformNotSupported.cs index 100188ecebef..afa6a537efcc 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.PlatformNotSupported.cs @@ -15,1391 +15,1770 @@ public static class Sse2 { public static bool IsSupported { get { return false; } } - /// + /// /// __m128i _mm_add_epi8 (__m128i a, __m128i b) + /// PADDB xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_add_epi8 (__m128i a, __m128i b) + /// PADDB xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_add_epi16 (__m128i a, __m128i b) + /// PADDW xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_add_epi16 (__m128i a, __m128i b) + /// PADDW xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_add_epi32 (__m128i a, __m128i b) + /// PADDD xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_add_epi32 (__m128i a, __m128i b) + /// PADDD xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_add_epi64 (__m128i a, __m128i b) + /// PADDQ xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_add_epi64 (__m128i a, __m128i b) + /// PADDQ xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_add_pd (__m128d a, __m128d b) + /// ADDPD xmm, xmm/m128 /// - public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Add(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_add_sd (__m128d a, __m128d b) + /// ADDSD xmm, xmm/m64 /// public static Vector128 AddScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_adds_epi8 (__m128i a, __m128i b) + /// PADDSB xmm, xmm/m128 /// - public static Vector128 AddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_adds_epu8 (__m128i a, __m128i b) + /// PADDUSB xmm, xmm/m128 /// - public static Vector128 AddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_adds_epi16 (__m128i a, __m128i b) + /// PADDSW xmm, xmm/m128 /// - public static Vector128 AddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_adds_epu16 (__m128i a, __m128i b) + /// PADDUSW xmm, xmm/m128 /// - public static Vector128 AddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_and_pd (__m128d a, __m128d b) + /// ANDPD xmm, xmm/m128 /// - public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 And(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_andnot_pd (__m128d a, __m128d b) + /// ADDNPD xmm, xmm/m128 /// - public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_avg_epu8 (__m128i a, __m128i b) + /// PAVGB xmm, xmm/m128 /// - public static Vector128 Average(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Average(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_avg_epu16 (__m128i a, __m128i b) + /// PAVGW xmm, xmm/m128 /// - public static Vector128 Average(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Average(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpeq_epi8 (__m128i a, __m128i b) + /// PCMPEQB xmm, xmm/m128 /// - public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpeq_epi8 (__m128i a, __m128i b) + /// PCMPEQB xmm, xmm/m128 /// - public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpeq_epi16 (__m128i a, __m128i b) + /// PCMPEQW xmm, xmm/m128 /// - public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpeq_epi16 (__m128i a, __m128i b) + /// PCMPEQW xmm, xmm/m128 /// - public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpeq_epi32 (__m128i a, __m128i b) + /// PCMPEQD xmm, xmm/m128 /// - public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpeq_epi32 (__m128i a, __m128i b) + /// PCMPEQD xmm, xmm/m128 /// - public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpeq_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(0) /// - public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comieq_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareEqualOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomieq_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareEqualUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpeq_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(0) /// public static Vector128 CompareEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpgt_epi8 (__m128i a, __m128i b) + /// PCMPGTB xmm, xmm/m128 /// - public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpgt_epi16 (__m128i a, __m128i b) + /// PCMPGTW xmm, xmm/m128 /// - public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpgt_epi32 (__m128i a, __m128i b) + /// PCMPGTD xmm, xmm/m128 /// - public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpgt_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(6) /// - public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comigt_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareGreaterThanOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomigt_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareGreaterThanUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpgt_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(6) /// public static Vector128 CompareGreaterThanScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpge_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(5) /// - public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comige_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareGreaterThanOrEqualOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomige_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareGreaterThanOrEqualUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpge_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(5) /// public static Vector128 CompareGreaterThanOrEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmplt_epi8 (__m128i a, __m128i b) + /// PCMPGTB xmm, xmm/m128 /// - public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmplt_epi16 (__m128i a, __m128i b) + /// PCMPGTW xmm, xmm/m128 /// - public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmplt_epi32 (__m128i a, __m128i b) + /// PCMPGTD xmm, xmm/m128 /// - public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmplt_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(1) /// - public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comilt_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareLessThanOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomilt_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareLessThanUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmplt_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(1) /// public static Vector128 CompareLessThanScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmple_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(2) /// - public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comile_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareLessThanOrEqualOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomile_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareLessThanOrEqualUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmple_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(2) /// public static Vector128 CompareLessThanOrEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpneq_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(4) /// - public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_comineq_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareNotEqualOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_ucomineq_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareNotEqualUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpneq_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(4) /// public static Vector128 CompareNotEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpngt_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(2) /// - public static Vector128 CompareNotGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpngt_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(2) /// public static Vector128 CompareNotGreaterThanScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpnge_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(1) /// - public static Vector128 CompareNotGreaterThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotGreaterThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpnge_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(1) /// public static Vector128 CompareNotGreaterThanOrEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpnlt_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(5) /// - public static Vector128 CompareNotLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotLessThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpnlt_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(5) /// public static Vector128 CompareNotLessThanScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpnle_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(6) /// - public static Vector128 CompareNotLessThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareNotLessThanOrEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpnle_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(6) /// public static Vector128 CompareNotLessThanOrEqualScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpord_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(7) /// - public static Vector128 CompareOrdered(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareOrdered(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpord_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(7) /// public static Vector128 CompareOrderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpunord_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(3) /// - public static Vector128 CompareUnordered(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 CompareUnordered(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cmpunord_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(3) /// public static Vector128 CompareUnorderedScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtps_epi32 (__m128 a) + /// CVTPS2DQ xmm, xmm/m128 /// public static Vector128 ConvertToVector128Int32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtpd_epi32 (__m128d a) + /// CVTPD2DQ xmm, xmm/m128 /// public static Vector128 ConvertToVector128Int32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cvtepi32_ps (__m128i a) + /// CVTDQ2PS xmm, xmm/m128 /// public static Vector128 ConvertToVector128Single(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cvtpd_ps (__m128d a) + /// CVTPD2PS xmm, xmm/m128 /// public static Vector128 ConvertToVector128Single(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cvtepi32_pd (__m128i a) + /// CVTDQ2PD xmm, xmm/m128 /// public static Vector128 ConvertToVector128Double(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cvtps_pd (__m128 a) + /// CVTPS2PD xmm, xmm/m128 /// public static Vector128 ConvertToVector128Double(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// double _mm_cvtsd_f64(__m128d a) + /// HELPER: MOVSD /// public static double ConvertToDouble(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// int _mm_cvtsd_si32 (__m128d a) + /// CVTSD2SI r32, xmm/m64 /// public static int ConvertToInt32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// int _mm_cvtsi128_si32 (__m128i a) + /// MOVD reg/m32, xmm /// public static int ConvertToInt32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_cvtsd_si64 (__m128d a) + /// CVTSD2SI r64, xmm/m64 /// public static long ConvertToInt64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_cvtsi128_si64 (__m128i a) + /// MOVQ reg/m64, xmm /// public static long ConvertToInt64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// int _mm_cvtsi128_si32 (__m128i a) + /// MOVD reg/m32, xmm /// public static uint ConvertToUInt32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_cvtsi128_si64 (__m128i a) + /// MOVQ reg/m64, xmm /// public static ulong ConvertToUInt64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cvtsi32_sd (__m128d a, int b) + /// CVTSI2SD xmm, reg/m64 /// - public static Vector128 ConvertToVector128DoubleScalar(Vector128 upper, int value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128Double(Vector128 upper, int value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cvtsi64_sd (__m128d a, int b) + /// CVTSI2SD xmm, reg/m64 /// - public static Vector128 ConvertToVector128DoubleScalar(Vector128 upper, long value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128Double(Vector128 upper, long value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_cvtss_sd (__m128d a, __m128 b) + /// CVTSS2SD xmm, xmm/m32 /// - public static Vector128 ConvertToVector128DoubleScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128Double(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtsi32_si128 (int a) + /// MOVD xmm, reg/m32 /// - public static Vector128 ConvertToVector128Int32Scalar(int value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128Int32(int value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtsi64_si128 (__int64 a) + /// MOVQ xmm, reg/m64 /// - public static Vector128 ConvertToVector128Int64Scalar(long value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128Int64(long value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_cvtsd_ss (__m128 a, __m128d b) + /// CVTSD2SS xmm, xmm/m64 /// - public static Vector128 ConvertToVector128SingleScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128Single(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtsi32_si128 (int a) + /// MOVD xmm, reg/m32 /// - public static Vector128 ConvertToVector128UInt32Scalar(uint value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128UInt32Scalar(uint value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtsi64_si128 (__int64 a) + /// MOVQ xmm, reg/m64 /// - public static Vector128 ConvertToVector128UInt64Scalar(ulong value) { throw new PlatformNotSupportedException(); } + public static Vector128 ConvertScalarToVector128UInt64(ulong value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvttps_epi32 (__m128 a) + /// CVTTPS2DQ xmm, xmm/m128 /// public static Vector128 ConvertToVector128Int32WithTruncation(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvttpd_epi32 (__m128d a) + /// CVTTPD2DQ xmm, xmm/m128 /// public static Vector128 ConvertToVector128Int32WithTruncation(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// int _mm_cvttsd_si32 (__m128d a) + /// CVTTSD2SI reg, xmm/m64 /// public static int ConvertToInt32WithTruncation(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_cvttsd_si64 (__m128d a) + /// CVTTSD2SI reg, xmm/m64 /// public static long ConvertToInt64WithTruncation(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_div_pd (__m128d a, __m128d b) + /// DIVPD xmm, xmm/m128 /// - public static Vector128 Divide(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Divide(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_div_sd (__m128d a, __m128d b) + /// DIVSD xmm, xmm/m64 /// public static Vector128 DivideScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// int _mm_extract_epi16 (__m128i a, int immediate) + /// PEXTRW reg, xmm, imm8 /// public static short Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } /// /// int _mm_extract_epi16 (__m128i a, int immediate) + /// PEXTRW reg, xmm, imm8 /// public static ushort Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_insert_epi16 (__m128i a, int i, int immediate) + /// PINSRW xmm, reg/m16, imm8 /// - public static Vector128 Insert(Vector128 value, short data, byte index) => Insert(value, data, index); + public static Vector128 Insert(Vector128 value, short data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_insert_epi16 (__m128i a, int i, int immediate) + /// PINSRW xmm, reg/m16, imm8 /// - public static Vector128 Insert(Vector128 value, ushort data, byte index) => Insert(value, data, index); - + public static Vector128 Insert(Vector128 value, ushort data, byte index) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(sbyte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(byte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(short* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(ushort* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(int* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(uint* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(long* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(ulong* address) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_loadu_pd (double const* mem_address) + /// MOVUPD xmm, m128 /// public static unsafe Vector128 LoadVector128(double* address) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_load_sd (double const* mem_address) + /// MOVSD xmm, m64 /// - public static unsafe Vector128 LoadScalar(double* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(double* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(sbyte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(byte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(short* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(ushort* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(int* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(uint* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(long* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(ulong* address) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_load_pd (double const* mem_address) + /// MOVAPD xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(double* address) { throw new PlatformNotSupportedException(); } + /// + /// void _mm_lfence(void) + /// LFENCE + /// + public static void LoadFence() { throw new PlatformNotSupportedException(); } + /// /// __m128d _mm_loadh_pd (__m128d a, double const* mem_addr) + /// MOVHPD xmm, m64 /// - public static unsafe Vector128 LoadHigh(Vector128 value, double* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadHigh(Vector128 lower, double* address) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_loadl_pd (__m128d a, double const* mem_addr) + /// MOVLPD xmm, m64 /// - public static unsafe Vector128 LoadLow(Vector128 value, double* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadLow(Vector128 upper, double* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(sbyte* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(sbyte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(byte* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(byte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(short* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(short* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(ushort* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(ushort* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(int* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(int* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(uint* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(uint* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(long* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(long* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(ulong* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadScalarVector128(ulong* address) { throw new PlatformNotSupportedException(); } /// /// void _mm_maskmoveu_si128 (__m128i a, __m128i mask, char* mem_address) + /// MASKMOVDQU xmm, xmm /// - public static unsafe void MaskMove(Vector128 source, Vector128 mask, sbyte* address) { throw new PlatformNotSupportedException(); } + public static unsafe void MaskMove(Vector128 source, Vector128 mask, sbyte* address) { throw new PlatformNotSupportedException(); } /// /// void _mm_maskmoveu_si128 (__m128i a, __m128i mask, char* mem_address) + /// MASKMOVDQU xmm, xmm /// - public static unsafe void MaskMove(Vector128 source, Vector128 mask, byte* address) { throw new PlatformNotSupportedException(); } + public static unsafe void MaskMove(Vector128 source, Vector128 mask, byte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_max_epu8 (__m128i a, __m128i b) + /// PMAXUB xmm, xmm/m128 /// - public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_max_epi16 (__m128i a, __m128i b) + /// PMAXSW xmm, xmm/m128 /// - public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_max_pd (__m128d a, __m128d b) + /// MAXPD xmm, xmm/m128 /// - public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_max_sd (__m128d a, __m128d b) + /// MAXSD xmm, xmm/m64 /// public static Vector128 MaxScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// + /// void _mm_mfence(void) + /// MFENCE + /// + public static void MemoryFence() { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_min_epu8 (__m128i a, __m128i b) + /// PMINUB xmm, xmm/m128 /// - public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_min_epi16 (__m128i a, __m128i b) + /// PMINSW xmm, xmm/m128 /// - public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_min_pd (__m128d a, __m128d b) + /// MINPD xmm, xmm/m128 /// - public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_min_sd (__m128d a, __m128d b) + /// MINSD xmm, xmm/m64 /// public static Vector128 MinScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_move_sd (__m128d a, __m128d b) + /// MOVSD xmm, xmm /// public static Vector128 MoveScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } /// /// int _mm_movemask_epi8 (__m128i a) + /// PMOVMSKB reg, xmm /// public static int MoveMask(Vector128 value) { throw new PlatformNotSupportedException(); } /// + /// int _mm_movemask_epi8 (__m128i a) + /// PMOVMSKB reg, xmm + /// + public static int MoveMask(Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// int _mm_movemask_pd (__m128d a) + /// MOVMSKPD reg, xmm /// public static int MoveMask(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128i _mm_move_epi64 (__m128i a) + /// MOVQ xmm, xmm + /// + public static Vector128 MoveScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128i _mm_move_epi64 (__m128i a) + /// MOVQ xmm, xmm + /// + public static Vector128 MoveScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_mul_epu32 (__m128i a, __m128i b) + /// PMULUDQ xmm, xmm/m128 /// - public static Vector128 Multiply(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Multiply(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_mul_pd (__m128d a, __m128d b) + /// MULPD xmm, xmm/m128 /// - public static Vector128 Multiply(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Multiply(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_mul_sd (__m128d a, __m128d b) + /// MULSD xmm, xmm/m64 /// public static Vector128 MultiplyScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mulhi_epi16 (__m128i a, __m128i b) + /// PMULHW xmm, xmm/m128 /// - public static Vector128 MultiplyHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 MultiplyHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mulhi_epu16 (__m128i a, __m128i b) + /// PMULHUW xmm, xmm/m128 /// - public static Vector128 MultiplyHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 MultiplyHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_madd_epi16 (__m128i a, __m128i b) + /// PMADDWD xmm, xmm/m128 /// - public static Vector128 MultiplyHorizontalAdd(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 MultiplyHorizontalAdd(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mullo_epi16 (__m128i a, __m128i b) + /// PMULLW xmm, xmm/m128 /// - public static Vector128 MultiplyLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 MultiplyLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_or_pd (__m128d a, __m128d b) + /// ORPD xmm, xmm/m128 /// - public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Or(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_packs_epi16 (__m128i a, __m128i b) + /// PACKSSWB xmm, xmm/m128 /// - public static Vector128 PackSignedSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 PackSignedSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_packs_epi32 (__m128i a, __m128i b) + /// PACKSSDW xmm, xmm/m128 /// - public static Vector128 PackSignedSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 PackSignedSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_packus_epi16 (__m128i a, __m128i b) + /// PACKUSWB xmm, xmm/m128 /// - public static Vector128 PackUnsignedSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 PackUnsignedSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// ___m128i _mm_set_epi8 (char e15, char e14, char e13, char e12, char e11, char e10, char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2, char e1, char e0) + /// HELPER /// public static Vector128 SetVector128(sbyte e15, sbyte e14, sbyte e13, sbyte e12, sbyte e11, sbyte e10, sbyte e9, sbyte e8, sbyte e7, sbyte e6, sbyte e5, sbyte e4, sbyte e3, sbyte e2, sbyte e1, sbyte e0) { throw new PlatformNotSupportedException(); } /// /// ___m128i _mm_set_epi8 (char e15, char e14, char e13, char e12, char e11, char e10, char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2, char e1, char e0) + /// HELPER /// public static Vector128 SetVector128(byte e15, byte e14, byte e13, byte e12, byte e11, byte e10, byte e9, byte e8, byte e7, byte e6, byte e5, byte e4, byte e3, byte e2, byte e1, byte e0) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set_epi16 (short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) + /// HELPER /// public static Vector128 SetVector128(short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set_epi16 (short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) + /// HELPER /// public static Vector128 SetVector128(ushort e7, ushort e6, ushort e5, ushort e4, ushort e3, ushort e2, ushort e1, ushort e0) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set_epi32 (int e3, int e2, int e1, int e0) + /// HELPER /// public static Vector128 SetVector128(int e3, int e2, int e1, int e0) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set_epi32 (int e3, int e2, int e1, int e0) + /// HELPER /// public static Vector128 SetVector128(uint e3, uint e2, uint e1, uint e0) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set_epi64x (__int64 e1, __int64 e0) + /// HELPER /// public static Vector128 SetVector128(long e1, long e0) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set_epi64x (__int64 e1, __int64 e0) + /// HELPER /// public static Vector128 SetVector128(ulong e1, ulong e0) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_set_pd (double e1, double e0) + /// HELPER /// public static Vector128 SetVector128(double e1, double e0) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_set_sd (double a) + /// HELPER /// - public static Vector128 SetScalar(double value) { throw new PlatformNotSupportedException(); } + public static Vector128 SetScalarVector128(double value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set1_epi8 (char a) + /// HELPER /// public static Vector128 SetAllVector128(byte value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set1_epi8 (char a) + /// HELPER /// public static Vector128 SetAllVector128(sbyte value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set1_epi16 (short a) + /// HELPER /// public static Vector128 SetAllVector128(short value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set1_epi16 (short a) + /// HELPER /// public static Vector128 SetAllVector128(ushort value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set1_epi32 (int a) + /// HELPER /// public static Vector128 SetAllVector128(int value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set1_epi32 (int a) + /// HELPER /// public static Vector128 SetAllVector128(uint value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set1_epi64x (long long a) + /// HELPER /// public static Vector128 SetAllVector128(long value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_set1_epi64x (long long a) + /// HELPER /// public static Vector128 SetAllVector128(ulong value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_set1_pd (double a) + /// HELPER /// public static Vector128 SetAllVector128(double value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_setzero_si128 () + /// HELPER: PXOR /// __m128d _mm_setzero_pd (void) + /// HELPER: XORPD /// public static Vector128 SetZeroVector128() where T : struct { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sad_epu8 (__m128i a, __m128i b) + /// PSADBW xmm, xmm/m128 /// - public static Vector128 SumAbsoluteDifferences(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 SumAbsoluteDifferences(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_shuffle_epi32 (__m128i a, int immediate) + /// PSHUFD xmm, xmm/m128, imm8 /// public static Vector128 Shuffle(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_shuffle_epi32 (__m128i a, int immediate) + /// PSHUFD xmm, xmm/m128, imm8 /// - public static Vector128 Shuffle(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } + public static Vector128 Shuffle(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_shuffle_pd (__m128d a, __m128d b, int immediate) + /// SHUFPD xmm, xmm/m128, imm8 /// public static Vector128 Shuffle(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_shufflehi_epi16 (__m128i a, int immediate) + /// PSHUFHW xmm, xmm/m128, imm8 /// public static Vector128 ShuffleHigh(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_shufflehi_epi16 (__m128i a, int control) + /// PSHUFHW xmm, xmm/m128, imm8 /// public static Vector128 ShuffleHigh(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_shufflelo_epi16 (__m128i a, int control) + /// PSHUFLW xmm, xmm/m128, imm8 /// public static Vector128 ShuffleLow(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_shufflelo_epi16 (__m128i a, int control) + /// PSHUFLW xmm, xmm/m128, imm8 /// public static Vector128 ShuffleLow(Vector128 value, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_sll_epi16 (__m128i a, __m128i count) + /// PSLLW xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sll_epi16 (__m128i a, __m128i count) + /// PSLLW xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sll_epi32 (__m128i a, __m128i count) + /// PSLLD xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sll_epi32 (__m128i a, __m128i count) + /// PSLLD xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sll_epi64 (__m128i a, __m128i count) + /// PSLLQ xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sll_epi64 (__m128i a, __m128i count) + /// PSLLQ xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_slli_epi16 (__m128i a, int immediate) + /// PSLLW xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_slli_epi16 (__m128i a, int immediate) + /// PSLLW xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_slli_epi32 (__m128i a, int immediate) + /// PSLLD xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_slli_epi32 (__m128i a, int immediate) + /// PSLLD xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_slli_epi64 (__m128i a, int immediate) + /// PSLLQ xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_slli_epi64 (__m128i a, int immediate) + /// PSLLQ xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_sra_epi16 (__m128i a, __m128i count) + /// PSRAW xmm, xmm/m128 /// public static Vector128 ShiftRightArithmetic(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sra_epi32 (__m128i a, __m128i count) + /// PSRAD xmm, xmm/m128 /// public static Vector128 ShiftRightArithmetic(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srai_epi16 (__m128i a, int immediate) + /// PSRAW xmm, imm8 /// public static Vector128 ShiftRightArithmetic(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srai_epi32 (__m128i a, int immediate) + /// PSRAD xmm, imm8 /// public static Vector128 ShiftRightArithmetic(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srl_epi16 (__m128i a, __m128i count) + /// PSRLW xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srl_epi16 (__m128i a, __m128i count) + /// PSRLW xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srl_epi32 (__m128i a, __m128i count) + /// PSRLD xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srl_epi32 (__m128i a, __m128i count) + /// PSRLD xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srl_epi64 (__m128i a, __m128i count) + /// PSRLQ xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srl_epi64 (__m128i a, __m128i count) + /// PSRLQ xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srli_epi16 (__m128i a, int immediate) + /// PSRLW xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srli_epi16 (__m128i a, int immediate) + /// PSRLW xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srli_epi32 (__m128i a, int immediate) + /// PSRLD xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srli_epi32 (__m128i a, int immediate) + /// PSRLD xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srli_epi64 (__m128i a, int immediate) + /// PSRLQ xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_srli_epi64 (__m128i a, int immediate) + /// PSRLQ xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) { throw new PlatformNotSupportedException(); } - + /// /// __m128d _mm_sqrt_pd (__m128d a) + /// SQRTPD xmm, xmm/m128 /// public static Vector128 Sqrt(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_sqrt_sd (__m128d a) + /// SQRTSD xmm, xmm/64 + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 SqrtScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128d _mm_sqrt_sd (__m128d a, __m128d b) + /// SQRTSD xmm, xmm/64 + /// + public static Vector128 SqrtScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// void _mm_store_sd (double* mem_addr, __m128d a) + /// MOVSD m64, xmm /// public static unsafe void StoreScalar(double* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(sbyte* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(byte* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(short* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(ushort* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(int* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(uint* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(long* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(ulong* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_store_pd (double* mem_addr, __m128d a) + /// MOVAPD m128, xmm /// public static unsafe void StoreAligned(double* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(sbyte* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(byte* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(short* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(ushort* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(int* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(uint* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(long* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(ulong* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_stream_pd (double* mem_addr, __m128d a) + /// MOVNTPD m128, xmm /// public static unsafe void StoreAlignedNonTemporal(double* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(sbyte* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(byte* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(short* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(ushort* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(int* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(uint* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(long* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(ulong* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storeu_pd (double* mem_addr, __m128d a) + /// MOVUPD m128, xmm /// public static unsafe void Store(double* address, Vector128 source) { throw new PlatformNotSupportedException(); } - + /// /// void _mm_storeh_pd (double* mem_addr, __m128d a) + /// MOVHPD m64, xmm /// public static unsafe void StoreHigh(double* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storel_epi64 (__m128i* mem_addr, __m128i a) + /// MOVQ m64, xmm /// public static unsafe void StoreLow(long* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storel_epi64 (__m128i* mem_addr, __m128i a) + /// MOVQ m64, xmm /// public static unsafe void StoreLow(ulong* address, Vector128 source) { throw new PlatformNotSupportedException(); } /// /// void _mm_storel_pd (double* mem_addr, __m128d a) + /// MOVLPD m64, xmm /// public static unsafe void StoreLow(double* address, Vector128 source) { throw new PlatformNotSupportedException(); } + /// + /// void _mm_stream_si32(int *p, int a) + /// MOVNTI m32, r32 + /// + public static unsafe void StoreNonTemporal(int* address, int value) { throw new PlatformNotSupportedException(); } + /// + /// void _mm_stream_si32(int *p, int a) + /// MOVNTI m32, r32 + /// + public static unsafe void StoreNonTemporal(uint* address, uint value) { throw new PlatformNotSupportedException(); } + + /// + /// void _mm_stream_si64(__int64 *p, __int64 a) + /// MOVNTI m64, r64 + /// + public static unsafe void StoreNonTemporal(long* address, long value) { throw new PlatformNotSupportedException(); } + /// + /// void _mm_stream_si64(__int64 *p, __int64 a) + /// MOVNTI m64, r64 + /// + public static unsafe void StoreNonTemporal(ulong* address, ulong value) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_sub_epi8 (__m128i a, __m128i b) + /// PSUBB xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sub_epi8 (__m128i a, __m128i b) + /// PSUBB xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sub_epi16 (__m128i a, __m128i b) + /// PSUBW xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sub_epi16 (__m128i a, __m128i b) + /// PSUBW xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sub_epi32 (__m128i a, __m128i b) + /// PSUBD xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sub_epi32 (__m128i a, __m128i b) + /// PSUBD xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sub_epi64 (__m128i a, __m128i b) + /// PSUBQ xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sub_epi64 (__m128i a, __m128i b) + /// PSUBQ xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_sub_pd (__m128d a, __m128d b) + /// SUBPD xmm, xmm/m128 /// - public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Subtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// - /// __m128d _mm_sub_ss (__m128d a, __m128d b) + /// __m128d _mm_sub_sd (__m128d a, __m128d b) + /// SUBSD xmm, xmm/m64 /// public static Vector128 SubtractScalar(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_subs_epi8 (__m128i a, __m128i b) + /// PSUBSB xmm, xmm/m128 /// - public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_subs_epi16 (__m128i a, __m128i b) + /// PSUBSW xmm, xmm/m128 /// - public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_subs_epu8 (__m128i a, __m128i b) + /// PSUBUSB xmm, xmm/m128 /// - public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_subs_epu16 (__m128i a, __m128i b) + /// PSUBUSW xmm, xmm/m128 /// - public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpackhi_epi8 (__m128i a, __m128i b) + /// PUNPCKHBW xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpackhi_epi8 (__m128i a, __m128i b) + /// PUNPCKHBW xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpackhi_epi16 (__m128i a, __m128i b) + /// PUNPCKHWD xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpackhi_epi16 (__m128i a, __m128i b) + /// PUNPCKHWD xmm, xmm/m128 /// UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpackhi_epi32 (__m128i a, __m128i b) + /// PUNPCKHDQ xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpackhi_epi32 (__m128i a, __m128i b) + /// PUNPCKHDQ xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpackhi_epi64 (__m128i a, __m128i b) + /// PUNPCKHQDQ xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpackhi_epi64 (__m128i a, __m128i b) + /// PUNPCKHQDQ xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_unpackhi_pd (__m128d a, __m128d b) + /// UNPCKHPD xmm, xmm/m128 /// - public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } - + public static Vector128 UnpackHigh(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_unpacklo_epi8 (__m128i a, __m128i b) + /// PUNPCKLBW xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpacklo_epi8 (__m128i a, __m128i b) + /// PUNPCKLBW xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpacklo_epi16 (__m128i a, __m128i b) + /// PUNPCKLWD xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpacklo_epi16 (__m128i a, __m128i b) + /// PUNPCKLWD xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpacklo_epi32 (__m128i a, __m128i b) + /// PUNPCKLDQ xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpacklo_epi32 (__m128i a, __m128i b) + /// PUNPCKLDQ xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpacklo_epi64 (__m128i a, __m128i b) + /// PUNPCKLQDQ xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_unpacklo_epi64 (__m128i a, __m128i b) + /// PUNPCKLQDQ xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_unpacklo_pd (__m128d a, __m128d b) + /// UNPCKLPD xmm, xmm/m128 /// - public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } - + public static Vector128 UnpackLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_xor_pd (__m128d a, __m128d b) + /// XORPD xmm, xmm/m128 /// - public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Xor(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.cs index e9b278553c73..8885dee1bbe1 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.cs @@ -14,858 +14,1080 @@ namespace System.Runtime.Intrinsics.X86 public static class Sse2 { public static bool IsSupported { get => IsSupported; } - + /// /// __m128i _mm_add_epi8 (__m128i a, __m128i b) + /// PADDB xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128i _mm_add_epi8 (__m128i a, __m128i b) + /// PADDB xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128i _mm_add_epi16 (__m128i a, __m128i b) + /// PADDW xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128i _mm_add_epi16 (__m128i a, __m128i b) + /// PADDW xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128i _mm_add_epi32 (__m128i a, __m128i b) + /// PADDD xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128i _mm_add_epi32 (__m128i a, __m128i b) + /// PADDD xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128i _mm_add_epi64 (__m128i a, __m128i b) + /// PADDQ xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128i _mm_add_epi64 (__m128i a, __m128i b) + /// PADDQ xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128d _mm_add_pd (__m128d a, __m128d b) + /// ADDPD xmm, xmm/m128 /// public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); /// /// __m128d _mm_add_sd (__m128d a, __m128d b) + /// ADDSD xmm, xmm/m64 /// public static Vector128 AddScalar(Vector128 left, Vector128 right) => AddScalar(left, right); /// /// __m128i _mm_adds_epi8 (__m128i a, __m128i b) + /// PADDSB xmm, xmm/m128 /// public static Vector128 AddSaturate(Vector128 left, Vector128 right) => AddSaturate(left, right); /// /// __m128i _mm_adds_epu8 (__m128i a, __m128i b) + /// PADDUSB xmm, xmm/m128 /// public static Vector128 AddSaturate(Vector128 left, Vector128 right) => AddSaturate(left, right); /// /// __m128i _mm_adds_epi16 (__m128i a, __m128i b) + /// PADDSW xmm, xmm/m128 /// public static Vector128 AddSaturate(Vector128 left, Vector128 right) => AddSaturate(left, right); /// /// __m128i _mm_adds_epu16 (__m128i a, __m128i b) + /// PADDUSW xmm, xmm/m128 /// public static Vector128 AddSaturate(Vector128 left, Vector128 right) => AddSaturate(left, right); /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128i _mm_and_si128 (__m128i a, __m128i b) + /// PAND xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128d _mm_and_pd (__m128d a, __m128d b) + /// ANDPD xmm, xmm/m128 /// public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128i _mm_andnot_si128 (__m128i a, __m128i b) + /// PANDN xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128d _mm_andnot_pd (__m128d a, __m128d b) + /// ADDNPD xmm, xmm/m128 /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); /// /// __m128i _mm_avg_epu8 (__m128i a, __m128i b) + /// PAVGB xmm, xmm/m128 /// public static Vector128 Average(Vector128 left, Vector128 right) => Average(left, right); /// /// __m128i _mm_avg_epu16 (__m128i a, __m128i b) + /// PAVGW xmm, xmm/m128 /// public static Vector128 Average(Vector128 left, Vector128 right) => Average(left, right); /// /// __m128i _mm_cmpeq_epi8 (__m128i a, __m128i b) + /// PCMPEQB xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// __m128i _mm_cmpeq_epi8 (__m128i a, __m128i b) + /// PCMPEQB xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// __m128i _mm_cmpeq_epi16 (__m128i a, __m128i b) + /// PCMPEQW xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// __m128i _mm_cmpeq_epi16 (__m128i a, __m128i b) + /// PCMPEQW xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// __m128i _mm_cmpeq_epi32 (__m128i a, __m128i b) + /// PCMPEQD xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// __m128i _mm_cmpeq_epi32 (__m128i a, __m128i b) + /// PCMPEQD xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// __m128d _mm_cmpeq_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(0) /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// int _mm_comieq_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareEqualOrderedScalar(Vector128 left, Vector128 right) => CompareEqualOrderedScalar(left, right); /// /// int _mm_ucomieq_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareEqualUnorderedScalar(Vector128 left, Vector128 right) => CompareEqualUnorderedScalar(left, right); /// /// __m128d _mm_cmpeq_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(0) /// public static Vector128 CompareEqualScalar(Vector128 left, Vector128 right) => CompareEqualScalar(left, right); /// /// __m128i _mm_cmpgt_epi8 (__m128i a, __m128i b) + /// PCMPGTB xmm, xmm/m128 /// public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); /// /// __m128i _mm_cmpgt_epi16 (__m128i a, __m128i b) + /// PCMPGTW xmm, xmm/m128 /// public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); /// /// __m128i _mm_cmpgt_epi32 (__m128i a, __m128i b) + /// PCMPGTD xmm, xmm/m128 /// public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); /// /// __m128d _mm_cmpgt_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(6) /// public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); /// /// int _mm_comigt_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareGreaterThanOrderedScalar(Vector128 left, Vector128 right) => CompareGreaterThanOrderedScalar(left, right); /// /// int _mm_ucomigt_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareGreaterThanUnorderedScalar(Vector128 left, Vector128 right) => CompareGreaterThanUnorderedScalar(left, right); /// /// __m128d _mm_cmpgt_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(6) /// public static Vector128 CompareGreaterThanScalar(Vector128 left, Vector128 right) => CompareGreaterThanScalar(left, right); /// /// __m128d _mm_cmpge_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(5) /// public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); /// /// int _mm_comige_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareGreaterThanOrEqualOrderedScalar(Vector128 left, Vector128 right) => CompareGreaterThanOrEqualOrderedScalar(left, right); /// /// int _mm_ucomige_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareGreaterThanOrEqualUnorderedScalar(Vector128 left, Vector128 right) => CompareGreaterThanOrEqualUnorderedScalar(left, right); /// /// __m128d _mm_cmpge_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(5) /// public static Vector128 CompareGreaterThanOrEqualScalar(Vector128 left, Vector128 right) => CompareGreaterThanOrEqualScalar(left, right); /// /// __m128i _mm_cmplt_epi8 (__m128i a, __m128i b) + /// PCMPGTB xmm, xmm/m128 /// public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); /// /// __m128i _mm_cmplt_epi16 (__m128i a, __m128i b) + /// PCMPGTW xmm, xmm/m128 /// public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); /// /// __m128i _mm_cmplt_epi32 (__m128i a, __m128i b) + /// PCMPGTD xmm, xmm/m128 /// public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); /// /// __m128d _mm_cmplt_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(1) /// public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); /// /// int _mm_comilt_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareLessThanOrderedScalar(Vector128 left, Vector128 right) => CompareLessThanOrderedScalar(left, right); /// /// int _mm_ucomilt_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareLessThanUnorderedScalar(Vector128 left, Vector128 right) => CompareLessThanUnorderedScalar(left, right); /// /// __m128d _mm_cmplt_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(1) /// public static Vector128 CompareLessThanScalar(Vector128 left, Vector128 right) => CompareLessThanScalar(left, right); /// /// __m128d _mm_cmple_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(2) /// public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); /// /// int _mm_comile_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareLessThanOrEqualOrderedScalar(Vector128 left, Vector128 right) => CompareLessThanOrEqualOrderedScalar(left, right); /// /// int _mm_ucomile_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareLessThanOrEqualUnorderedScalar(Vector128 left, Vector128 right) => CompareLessThanOrEqualUnorderedScalar(left, right); /// /// __m128d _mm_cmple_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(2) /// public static Vector128 CompareLessThanOrEqualScalar(Vector128 left, Vector128 right) => CompareLessThanOrEqualScalar(left, right); /// /// __m128d _mm_cmpneq_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(4) /// public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); /// /// int _mm_comineq_sd (__m128d a, __m128d b) + /// COMISS xmm, xmm/m64 /// public static bool CompareNotEqualOrderedScalar(Vector128 left, Vector128 right) => CompareNotEqualOrderedScalar(left, right); /// /// int _mm_ucomineq_sd (__m128d a, __m128d b) + /// UCOMISS xmm, xmm/m64 /// public static bool CompareNotEqualUnorderedScalar(Vector128 left, Vector128 right) => CompareNotEqualUnorderedScalar(left, right); /// /// __m128d _mm_cmpneq_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(4) /// public static Vector128 CompareNotEqualScalar(Vector128 left, Vector128 right) => CompareNotEqualScalar(left, right); /// /// __m128d _mm_cmpngt_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(2) /// public static Vector128 CompareNotGreaterThan(Vector128 left, Vector128 right) => CompareNotGreaterThan(left, right); /// /// __m128d _mm_cmpngt_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(2) /// public static Vector128 CompareNotGreaterThanScalar(Vector128 left, Vector128 right) => CompareNotGreaterThanScalar(left, right); /// /// __m128d _mm_cmpnge_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(1) /// public static Vector128 CompareNotGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareNotGreaterThanOrEqual(left, right); /// /// __m128d _mm_cmpnge_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(1) /// public static Vector128 CompareNotGreaterThanOrEqualScalar(Vector128 left, Vector128 right) => CompareNotGreaterThanOrEqualScalar(left, right); /// /// __m128d _mm_cmpnlt_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(5) /// public static Vector128 CompareNotLessThan(Vector128 left, Vector128 right) => CompareNotLessThan(left, right); /// /// __m128d _mm_cmpnlt_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(5) /// public static Vector128 CompareNotLessThanScalar(Vector128 left, Vector128 right) => CompareNotLessThanScalar(left, right); /// /// __m128d _mm_cmpnle_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(6) /// public static Vector128 CompareNotLessThanOrEqual(Vector128 left, Vector128 right) => CompareNotLessThanOrEqual(left, right); /// /// __m128d _mm_cmpnle_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(6) /// public static Vector128 CompareNotLessThanOrEqualScalar(Vector128 left, Vector128 right) => CompareNotLessThanOrEqualScalar(left, right); /// /// __m128d _mm_cmpord_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(7) /// public static Vector128 CompareOrdered(Vector128 left, Vector128 right) => CompareOrdered(left, right); /// /// __m128d _mm_cmpord_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(7) /// public static Vector128 CompareOrderedScalar(Vector128 left, Vector128 right) => CompareOrderedScalar(left, right); /// /// __m128d _mm_cmpunord_pd (__m128d a, __m128d b) + /// CMPPD xmm, xmm/m128, imm8(3) /// public static Vector128 CompareUnordered(Vector128 left, Vector128 right) => CompareUnordered(left, right); /// /// __m128d _mm_cmpunord_sd (__m128d a, __m128d b) + /// CMPSD xmm, xmm/m64, imm8(3) /// public static Vector128 CompareUnorderedScalar(Vector128 left, Vector128 right) => CompareUnorderedScalar(left, right); /// /// __m128i _mm_cvtps_epi32 (__m128 a) + /// CVTPS2DQ xmm, xmm/m128 /// public static Vector128 ConvertToVector128Int32(Vector128 value) => ConvertToVector128Int32(value); /// /// __m128i _mm_cvtpd_epi32 (__m128d a) + /// CVTPD2DQ xmm, xmm/m128 /// public static Vector128 ConvertToVector128Int32(Vector128 value) => ConvertToVector128Int32(value); /// /// __m128 _mm_cvtepi32_ps (__m128i a) + /// CVTDQ2PS xmm, xmm/m128 /// public static Vector128 ConvertToVector128Single(Vector128 value) => ConvertToVector128Single(value); /// /// __m128 _mm_cvtpd_ps (__m128d a) + /// CVTPD2PS xmm, xmm/m128 /// public static Vector128 ConvertToVector128Single(Vector128 value) => ConvertToVector128Single(value); /// /// __m128d _mm_cvtepi32_pd (__m128i a) + /// CVTDQ2PD xmm, xmm/m128 /// public static Vector128 ConvertToVector128Double(Vector128 value) => ConvertToVector128Double(value); /// /// __m128d _mm_cvtps_pd (__m128 a) + /// CVTPS2PD xmm, xmm/m128 /// public static Vector128 ConvertToVector128Double(Vector128 value) => ConvertToVector128Double(value); - /// /// double _mm_cvtsd_f64(__m128d a) + /// HELPER: MOVSD /// public static double ConvertToDouble(Vector128 value) => ConvertToDouble(value); /// /// int _mm_cvtsd_si32 (__m128d a) + /// CVTSD2SI r32, xmm/m64 /// public static int ConvertToInt32(Vector128 value) => ConvertToInt32(value); /// /// int _mm_cvtsi128_si32 (__m128i a) + /// MOVD reg/m32, xmm /// public static int ConvertToInt32(Vector128 value) => ConvertToInt32(value); /// /// __int64 _mm_cvtsd_si64 (__m128d a) + /// CVTSD2SI r64, xmm/m64 /// public static long ConvertToInt64(Vector128 value) => ConvertToInt64(value); /// /// __int64 _mm_cvtsi128_si64 (__m128i a) + /// MOVQ reg/m64, xmm /// public static long ConvertToInt64(Vector128 value) => ConvertToInt64(value); /// /// int _mm_cvtsi128_si32 (__m128i a) + /// MOVD reg/m32, xmm /// public static uint ConvertToUInt32(Vector128 value) => ConvertToUInt32(value); /// /// __int64 _mm_cvtsi128_si64 (__m128i a) + /// MOVQ reg/m64, xmm /// public static ulong ConvertToUInt64(Vector128 value) => ConvertToUInt64(value); /// /// __m128d _mm_cvtsi32_sd (__m128d a, int b) + /// CVTSI2SD xmm, reg/m64 /// - public static Vector128 ConvertToVector128DoubleScalar(Vector128 upper, int value) => ConvertToVector128DoubleScalar(upper, value); + public static Vector128 ConvertScalarToVector128Double(Vector128 upper, int value) => ConvertScalarToVector128Double(upper, value); /// /// __m128d _mm_cvtsi64_sd (__m128d a, int b) + /// CVTSI2SD xmm, reg/m64 /// - public static Vector128 ConvertToVector128DoubleScalar(Vector128 upper, long value) => ConvertToVector128DoubleScalar(upper, value); + public static Vector128 ConvertScalarToVector128Double(Vector128 upper, long value) => ConvertScalarToVector128Double(upper, value); /// /// __m128d _mm_cvtss_sd (__m128d a, __m128 b) + /// CVTSS2SD xmm, xmm/m32 /// - public static Vector128 ConvertToVector128DoubleScalar(Vector128 upper, Vector128 value) => ConvertToVector128DoubleScalar(upper, value); + public static Vector128 ConvertScalarToVector128Double(Vector128 upper, Vector128 value) => ConvertScalarToVector128Double(upper, value); /// /// __m128i _mm_cvtsi32_si128 (int a) + /// MOVD xmm, reg/m32 /// - public static Vector128 ConvertToVector128Int32Scalar(int value) => ConvertToVector128Int32Scalar(value); + public static Vector128 ConvertScalarToVector128Int32(int value) => ConvertScalarToVector128Int32(value); /// /// __m128i _mm_cvtsi64_si128 (__int64 a) + /// MOVQ xmm, reg/m64 /// - public static Vector128 ConvertToVector128Int64Scalar(long value) => ConvertToVector128Int64Scalar(value); + public static Vector128 ConvertScalarToVector128Int64(long value) => ConvertScalarToVector128Int64(value); /// /// __m128 _mm_cvtsd_ss (__m128 a, __m128d b) + /// CVTSD2SS xmm, xmm/m64 /// - public static Vector128 ConvertToVector128SingleScalar(Vector128 upper, Vector128 value) => ConvertToVector128SingleScalar(upper, value); + public static Vector128 ConvertScalarToVector128Single(Vector128 upper, Vector128 value) => ConvertScalarToVector128Single(upper, value); /// /// __m128i _mm_cvtsi32_si128 (int a) + /// MOVD xmm, reg/m32 /// - public static Vector128 ConvertToVector128UInt32Scalar(uint value) => ConvertToVector128UInt32Scalar(value); + public static Vector128 ConvertScalarToVector128UInt32Scalar(uint value) => ConvertScalarToVector128UInt32Scalar(value); /// /// __m128i _mm_cvtsi64_si128 (__int64 a) + /// MOVQ xmm, reg/m64 /// - public static Vector128 ConvertToVector128UInt64Scalar(ulong value) => ConvertToVector128UInt64Scalar(value); + public static Vector128 ConvertScalarToVector128UInt64(ulong value) => ConvertScalarToVector128UInt64(value); /// /// __m128i _mm_cvttps_epi32 (__m128 a) + /// CVTTPS2DQ xmm, xmm/m128 /// public static Vector128 ConvertToVector128Int32WithTruncation(Vector128 value) => ConvertToVector128Int32WithTruncation(value); /// /// __m128i _mm_cvttpd_epi32 (__m128d a) + /// CVTTPD2DQ xmm, xmm/m128 /// public static Vector128 ConvertToVector128Int32WithTruncation(Vector128 value) => ConvertToVector128Int32WithTruncation(value); /// /// int _mm_cvttsd_si32 (__m128d a) + /// CVTTSD2SI reg, xmm/m64 /// public static int ConvertToInt32WithTruncation(Vector128 value) => ConvertToInt32WithTruncation(value); /// /// __int64 _mm_cvttsd_si64 (__m128d a) + /// CVTTSD2SI reg, xmm/m64 /// public static long ConvertToInt64WithTruncation(Vector128 value) => ConvertToInt64WithTruncation(value); /// /// __m128d _mm_div_pd (__m128d a, __m128d b) + /// DIVPD xmm, xmm/m128 /// public static Vector128 Divide(Vector128 left, Vector128 right) => Divide(left, right); /// /// __m128d _mm_div_sd (__m128d a, __m128d b) + /// DIVSD xmm, xmm/m64 /// public static Vector128 DivideScalar(Vector128 left, Vector128 right) => DivideScalar(left, right); /// /// int _mm_extract_epi16 (__m128i a, int immediate) + /// PEXTRW reg, xmm, imm8 /// public static short Extract(Vector128 value, byte index) => Extract(value, index); /// /// int _mm_extract_epi16 (__m128i a, int immediate) + /// PEXTRW reg, xmm, imm8 /// public static ushort Extract(Vector128 value, byte index) => Extract(value, index); - + /// /// __m128i _mm_insert_epi16 (__m128i a, int i, int immediate) + /// PINSRW xmm, reg/m16, imm8 /// public static Vector128 Insert(Vector128 value, short data, byte index) => Insert(value, data, index); /// /// __m128i _mm_insert_epi16 (__m128i a, int i, int immediate) + /// PINSRW xmm, reg/m16, imm8 /// public static Vector128 Insert(Vector128 value, ushort data, byte index) => Insert(value, data, index); - + /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(sbyte* address) => LoadVector128(address); /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(byte* address) => LoadVector128(address); /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(short* address) => LoadVector128(address); /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(ushort* address) => LoadVector128(address); /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(int* address) => LoadVector128(address); /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(uint* address) => LoadVector128(address); /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(long* address) => LoadVector128(address); /// /// __m128i _mm_loadu_si128 (__m128i const* mem_address) + /// MOVDQU xmm, m128 /// public static unsafe Vector128 LoadVector128(ulong* address) => LoadVector128(address); /// /// __m128d _mm_loadu_pd (double const* mem_address) + /// MOVUPD xmm, m128 /// public static unsafe Vector128 LoadVector128(double* address) => LoadVector128(address); /// /// __m128d _mm_load_sd (double const* mem_address) + /// MOVSD xmm, m64 /// - public static unsafe Vector128 LoadScalar(double* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(double* address) => LoadScalarVector128(address); /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(sbyte* address) => LoadAlignedVector128(address); /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(byte* address) => LoadAlignedVector128(address); /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(short* address) => LoadAlignedVector128(address); /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(ushort* address) => LoadAlignedVector128(address); /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(int* address) => LoadAlignedVector128(address); /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(uint* address) => LoadAlignedVector128(address); /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(long* address) => LoadAlignedVector128(address); /// /// __m128i _mm_load_si128 (__m128i const* mem_address) + /// MOVDQA xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(ulong* address) => LoadAlignedVector128(address); /// /// __m128d _mm_load_pd (double const* mem_address) + /// MOVAPD xmm, m128 /// public static unsafe Vector128 LoadAlignedVector128(double* address) => LoadAlignedVector128(address); + /// + /// void _mm_lfence(void) + /// LFENCE + /// + public static void LoadFence() => LoadFence(); + /// /// __m128d _mm_loadh_pd (__m128d a, double const* mem_addr) + /// MOVHPD xmm, m64 /// - public static unsafe Vector128 LoadHigh(Vector128 value, double* address) => LoadHigh(value, address); + public static unsafe Vector128 LoadHigh(Vector128 lower, double* address) => LoadHigh(lower, address); /// /// __m128d _mm_loadl_pd (__m128d a, double const* mem_addr) + /// MOVLPD xmm, m64 /// - public static unsafe Vector128 LoadLow(Vector128 value, double* address) => LoadLow(value, address); + public static unsafe Vector128 LoadLow(Vector128 upper, double* address) => LoadLow(upper, address); /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(sbyte* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(sbyte* address) => LoadScalarVector128(address); /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(byte* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(byte* address) => LoadScalarVector128(address); /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(short* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(short* address) => LoadScalarVector128(address); /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(ushort* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(ushort* address) => LoadScalarVector128(address); /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(int* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(int* address) => LoadScalarVector128(address); /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(uint* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(uint* address) => LoadScalarVector128(address); /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(long* address) => LoadScalar(address); + public static unsafe Vector128 LoadScalarVector128(long* address) => LoadScalarVector128(address); /// /// __m128i _mm_loadl_epi64 (__m128i const* mem_addr) + /// MOVQ xmm, reg/m64 /// - public static unsafe Vector128 LoadScalar(ulong* address) => LoadScalar(address); - + public static unsafe Vector128 LoadScalarVector128(ulong* address) => LoadScalarVector128(address); + /// /// void _mm_maskmoveu_si128 (__m128i a, __m128i mask, char* mem_address) + /// MASKMOVDQU xmm, xmm /// public static unsafe void MaskMove(Vector128 source, Vector128 mask, sbyte* address) => MaskMove(source, mask, address); /// /// void _mm_maskmoveu_si128 (__m128i a, __m128i mask, char* mem_address) + /// MASKMOVDQU xmm, xmm /// public static unsafe void MaskMove(Vector128 source, Vector128 mask, byte* address) => MaskMove(source, mask, address); /// /// __m128i _mm_max_epu8 (__m128i a, __m128i b) + /// PMAXUB xmm, xmm/m128 /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); /// /// __m128i _mm_max_epi16 (__m128i a, __m128i b) + /// PMAXSW xmm, xmm/m128 /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); /// /// __m128d _mm_max_pd (__m128d a, __m128d b) + /// MAXPD xmm, xmm/m128 /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); /// /// __m128d _mm_max_sd (__m128d a, __m128d b) + /// MAXSD xmm, xmm/m64 /// public static Vector128 MaxScalar(Vector128 left, Vector128 right) => MaxScalar(left, right); + /// + /// void _mm_mfence(void) + /// MFENCE + /// + public static void MemoryFence() => MemoryFence(); + /// /// __m128i _mm_min_epu8 (__m128i a, __m128i b) + /// PMINUB xmm, xmm/m128 /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); /// /// __m128i _mm_min_epi16 (__m128i a, __m128i b) + /// PMINSW xmm, xmm/m128 /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); /// /// __m128d _mm_min_pd (__m128d a, __m128d b) + /// MINPD xmm, xmm/m128 /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); /// /// __m128d _mm_min_sd (__m128d a, __m128d b) + /// MINSD xmm, xmm/m64 /// public static Vector128 MinScalar(Vector128 left, Vector128 right) => MinScalar(left, right); /// /// __m128d _mm_move_sd (__m128d a, __m128d b) + /// MOVSD xmm, xmm /// public static Vector128 MoveScalar(Vector128 upper, Vector128 value) => MoveScalar(upper, value); /// /// int _mm_movemask_epi8 (__m128i a) + /// PMOVMSKB reg, xmm /// public static int MoveMask(Vector128 value) => MoveMask(value); /// + /// int _mm_movemask_epi8 (__m128i a) + /// PMOVMSKB reg, xmm + /// + public static int MoveMask(Vector128 value) => MoveMask(value); + /// /// int _mm_movemask_pd (__m128d a) + /// MOVMSKPD reg, xmm /// public static int MoveMask(Vector128 value) => MoveMask(value); + /// + /// __m128i _mm_move_epi64 (__m128i a) + /// MOVQ xmm, xmm + /// + public static Vector128 MoveScalar(Vector128 value) => MoveScalar(value); + /// + /// __m128i _mm_move_epi64 (__m128i a) + /// MOVQ xmm, xmm + /// + public static Vector128 MoveScalar(Vector128 value) => MoveScalar(value); + /// /// __m128i _mm_mul_epu32 (__m128i a, __m128i b) + /// PMULUDQ xmm, xmm/m128 /// public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); /// /// __m128d _mm_mul_pd (__m128d a, __m128d b) + /// MULPD xmm, xmm/m128 /// public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); /// /// __m128d _mm_mul_sd (__m128d a, __m128d b) + /// MULSD xmm, xmm/m64 /// public static Vector128 MultiplyScalar(Vector128 left, Vector128 right) => MultiplyScalar(left, right); /// /// __m128i _mm_mulhi_epi16 (__m128i a, __m128i b) + /// PMULHW xmm, xmm/m128 /// public static Vector128 MultiplyHigh(Vector128 left, Vector128 right) => MultiplyHigh(left, right); /// /// __m128i _mm_mulhi_epu16 (__m128i a, __m128i b) + /// PMULHUW xmm, xmm/m128 /// public static Vector128 MultiplyHigh(Vector128 left, Vector128 right) => MultiplyHigh(left, right); /// /// __m128i _mm_madd_epi16 (__m128i a, __m128i b) + /// PMADDWD xmm, xmm/m128 /// public static Vector128 MultiplyHorizontalAdd(Vector128 left, Vector128 right) => MultiplyHorizontalAdd(left, right); /// /// __m128i _mm_mullo_epi16 (__m128i a, __m128i b) + /// PMULLW xmm, xmm/m128 /// public static Vector128 MultiplyLow(Vector128 left, Vector128 right) => MultiplyLow(left, right); /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128i _mm_or_si128 (__m128i a, __m128i b) + /// POR xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128d _mm_or_pd (__m128d a, __m128d b) + /// ORPD xmm, xmm/m128 /// public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); /// /// __m128i _mm_packs_epi16 (__m128i a, __m128i b) + /// PACKSSWB xmm, xmm/m128 /// public static Vector128 PackSignedSaturate(Vector128 left, Vector128 right) => PackSignedSaturate(left, right); /// /// __m128i _mm_packs_epi32 (__m128i a, __m128i b) + /// PACKSSDW xmm, xmm/m128 /// public static Vector128 PackSignedSaturate(Vector128 left, Vector128 right) => PackSignedSaturate(left, right); /// /// __m128i _mm_packus_epi16 (__m128i a, __m128i b) + /// PACKUSWB xmm, xmm/m128 /// public static Vector128 PackUnsignedSaturate(Vector128 left, Vector128 right) => PackUnsignedSaturate(left, right); /// /// ___m128i _mm_set_epi8 (char e15, char e14, char e13, char e12, char e11, char e10, char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2, char e1, char e0) + /// HELPER /// public static Vector128 SetVector128(sbyte e15, sbyte e14, sbyte e13, sbyte e12, sbyte e11, sbyte e10, sbyte e9, sbyte e8, sbyte e7, sbyte e6, sbyte e5, sbyte e4, sbyte e3, sbyte e2, sbyte e1, sbyte e0) => SetVector128(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0); /// /// ___m128i _mm_set_epi8 (char e15, char e14, char e13, char e12, char e11, char e10, char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2, char e1, char e0) + /// HELPER /// public static Vector128 SetVector128(byte e15, byte e14, byte e13, byte e12, byte e11, byte e10, byte e9, byte e8, byte e7, byte e6, byte e5, byte e4, byte e3, byte e2, byte e1, byte e0) => SetVector128(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m128i _mm_set_epi16 (short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) + /// HELPER /// public static Vector128 SetVector128(short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) => SetVector128(e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m128i _mm_set_epi16 (short e7, short e6, short e5, short e4, short e3, short e2, short e1, short e0) + /// HELPER /// public static Vector128 SetVector128(ushort e7, ushort e6, ushort e5, ushort e4, ushort e3, ushort e2, ushort e1, ushort e0) => SetVector128(e7, e6, e5, e4, e3, e2, e1, e0); /// /// __m128i _mm_set_epi32 (int e3, int e2, int e1, int e0) + /// HELPER /// public static Vector128 SetVector128(int e3, int e2, int e1, int e0) => SetVector128(e3, e2, e1, e0); /// /// __m128i _mm_set_epi32 (int e3, int e2, int e1, int e0) + /// HELPER /// public static Vector128 SetVector128(uint e3, uint e2, uint e1, uint e0) => SetVector128(e3, e2, e1, e0); /// /// __m128i _mm_set_epi64x (__int64 e1, __int64 e0) + /// HELPER /// public static Vector128 SetVector128(long e1, long e0) => SetVector128(e1, e0); /// /// __m128i _mm_set_epi64x (__int64 e1, __int64 e0) + /// HELPER /// public static Vector128 SetVector128(ulong e1, ulong e0) => SetVector128(e1, e0); /// /// __m128d _mm_set_pd (double e1, double e0) + /// HELPER /// public static Vector128 SetVector128(double e1, double e0) => SetVector128(e1, e0); /// /// __m128d _mm_set_sd (double a) + /// HELPER /// - public static Vector128 SetScalar(double value) => SetScalar(value); + public static Vector128 SetScalarVector128(double value) => SetScalarVector128(value); /// /// __m128i _mm_set1_epi8 (char a) + /// HELPER /// public static Vector128 SetAllVector128(byte value) => SetAllVector128(value); /// /// __m128i _mm_set1_epi8 (char a) + /// HELPER /// public static Vector128 SetAllVector128(sbyte value) => SetAllVector128(value); /// /// __m128i _mm_set1_epi16 (short a) + /// HELPER /// public static Vector128 SetAllVector128(short value) => SetAllVector128(value); /// /// __m128i _mm_set1_epi16 (short a) + /// HELPER /// public static Vector128 SetAllVector128(ushort value) => SetAllVector128(value); /// /// __m128i _mm_set1_epi32 (int a) + /// HELPER /// public static Vector128 SetAllVector128(int value) => SetAllVector128(value); /// /// __m128i _mm_set1_epi32 (int a) + /// HELPER /// public static Vector128 SetAllVector128(uint value) => SetAllVector128(value); /// /// __m128i _mm_set1_epi64x (long long a) + /// HELPER /// public static Vector128 SetAllVector128(long value) => SetAllVector128(value); /// /// __m128i _mm_set1_epi64x (long long a) + /// HELPER /// public static Vector128 SetAllVector128(ulong value) => SetAllVector128(value); /// /// __m128d _mm_set1_pd (double a) + /// HELPER /// public static Vector128 SetAllVector128(double value) => SetAllVector128(value); /// /// __m128i _mm_setzero_si128 () + /// HELPER: PXOR /// __m128d _mm_setzero_pd (void) + /// HELPER: XORPD /// public static Vector128 SetZeroVector128() where T : struct { @@ -875,535 +1097,691 @@ public static Vector128 SetZeroVector128() where T : struct /// /// __m128i _mm_sad_epu8 (__m128i a, __m128i b) + /// PSADBW xmm, xmm/m128 /// public static Vector128 SumAbsoluteDifferences(Vector128 left, Vector128 right) => SumAbsoluteDifferences(left, right); /// /// __m128i _mm_shuffle_epi32 (__m128i a, int immediate) + /// PSHUFD xmm, xmm/m128, imm8 /// public static Vector128 Shuffle(Vector128 value, byte control) => Shuffle(value, control); /// /// __m128i _mm_shuffle_epi32 (__m128i a, int immediate) + /// PSHUFD xmm, xmm/m128, imm8 /// public static Vector128 Shuffle(Vector128 value, byte control) => Shuffle(value, control); /// /// __m128d _mm_shuffle_pd (__m128d a, __m128d b, int immediate) + /// SHUFPD xmm, xmm/m128, imm8 /// public static Vector128 Shuffle(Vector128 left, Vector128 right, byte control) => Shuffle(left, right, control); - + /// /// __m128i _mm_shufflehi_epi16 (__m128i a, int immediate) + /// PSHUFHW xmm, xmm/m128, imm8 /// public static Vector128 ShuffleHigh(Vector128 value, byte control) => ShuffleHigh(value, control); /// /// __m128i _mm_shufflehi_epi16 (__m128i a, int control) + /// PSHUFHW xmm, xmm/m128, imm8 /// public static Vector128 ShuffleHigh(Vector128 value, byte control) => ShuffleHigh(value, control); - + /// /// __m128i _mm_shufflelo_epi16 (__m128i a, int control) + /// PSHUFLW xmm, xmm/m128, imm8 /// public static Vector128 ShuffleLow(Vector128 value, byte control) => ShuffleLow(value, control); /// /// __m128i _mm_shufflelo_epi16 (__m128i a, int control) + /// PSHUFLW xmm, xmm/m128, imm8 /// public static Vector128 ShuffleLow(Vector128 value, byte control) => ShuffleLow(value, control); /// /// __m128i _mm_sll_epi16 (__m128i a, __m128i count) + /// PSLLW xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_sll_epi16 (__m128i a, __m128i count) + /// PSLLW xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_sll_epi32 (__m128i a, __m128i count) + /// PSLLD xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_sll_epi32 (__m128i a, __m128i count) + /// PSLLD xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_sll_epi64 (__m128i a, __m128i count) + /// PSLLQ xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_sll_epi64 (__m128i a, __m128i count) + /// PSLLQ xmm, xmm/m128 /// public static Vector128 ShiftLeftLogical(Vector128 value, Vector128 count) => ShiftLeftLogical(value, count); - + /// /// __m128i _mm_slli_epi16 (__m128i a, int immediate) + /// PSLLW xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_slli_epi16 (__m128i a, int immediate) + /// PSLLW xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_slli_epi32 (__m128i a, int immediate) + /// PSLLD xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_slli_epi32 (__m128i a, int immediate) + /// PSLLD xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_slli_epi64 (__m128i a, int immediate) + /// PSLLQ xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) => ShiftLeftLogical(value, count); /// /// __m128i _mm_slli_epi64 (__m128i a, int immediate) + /// PSLLQ xmm, imm8 /// public static Vector128 ShiftLeftLogical(Vector128 value, byte count) => ShiftLeftLogical(value, count); - + /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m128i _mm_bslli_si128 (__m128i a, int imm8) + /// PSLLDQ xmm, imm8 /// public static Vector128 ShiftLeftLogical128BitLane(Vector128 value, byte numBytes) => ShiftLeftLogical128BitLane(value, numBytes); /// /// __m128i _mm_sra_epi16 (__m128i a, __m128i count) + /// PSRAW xmm, xmm/m128 /// public static Vector128 ShiftRightArithmetic(Vector128 value, Vector128 count) => ShiftRightArithmetic(value, count); /// /// __m128i _mm_sra_epi32 (__m128i a, __m128i count) + /// PSRAD xmm, xmm/m128 /// public static Vector128 ShiftRightArithmetic(Vector128 value, Vector128 count) => ShiftRightArithmetic(value, count); /// /// __m128i _mm_srai_epi16 (__m128i a, int immediate) + /// PSRAW xmm, imm8 /// public static Vector128 ShiftRightArithmetic(Vector128 value, byte count) => ShiftRightArithmetic(value, count); /// /// __m128i _mm_srai_epi32 (__m128i a, int immediate) + /// PSRAD xmm, imm8 /// public static Vector128 ShiftRightArithmetic(Vector128 value, byte count) => ShiftRightArithmetic(value, count); /// /// __m128i _mm_srl_epi16 (__m128i a, __m128i count) + /// PSRLW xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srl_epi16 (__m128i a, __m128i count) + /// PSRLW xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srl_epi32 (__m128i a, __m128i count) + /// PSRLD xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srl_epi32 (__m128i a, __m128i count) + /// PSRLD xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srl_epi64 (__m128i a, __m128i count) + /// PSRLQ xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srl_epi64 (__m128i a, __m128i count) + /// PSRLQ xmm, xmm/m128 /// public static Vector128 ShiftRightLogical(Vector128 value, Vector128 count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srli_epi16 (__m128i a, int immediate) + /// PSRLW xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srli_epi16 (__m128i a, int immediate) + /// PSRLW xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srli_epi32 (__m128i a, int immediate) + /// PSRLD xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srli_epi32 (__m128i a, int immediate) + /// PSRLD xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srli_epi64 (__m128i a, int immediate) + /// PSRLQ xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) => ShiftRightLogical(value, count); /// /// __m128i _mm_srli_epi64 (__m128i a, int immediate) + /// PSRLQ xmm, imm8 /// public static Vector128 ShiftRightLogical(Vector128 value, byte count) => ShiftRightLogical(value, count); - + /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); /// /// __m128i _mm_bsrli_si128 (__m128i a, int imm8) + /// PSRLDQ xmm, imm8 /// public static Vector128 ShiftRightLogical128BitLane(Vector128 value, byte numBytes) => ShiftRightLogical128BitLane(value, numBytes); - + /// /// __m128d _mm_sqrt_pd (__m128d a) + /// SQRTPD xmm, xmm/m128 /// public static Vector128 Sqrt(Vector128 value) => Sqrt(value); /// /// __m128d _mm_sqrt_sd (__m128d a) + /// SQRTSD xmm, xmm/64 + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 SqrtScalar(Vector128 value) => SqrtScalar(value); + /// + /// __m128d _mm_sqrt_sd (__m128d a, __m128d b) + /// SQRTSD xmm, xmm/64 + /// + public static Vector128 SqrtScalar(Vector128 upper, Vector128 value) => SqrtScalar(upper, value); + /// /// void _mm_store_sd (double* mem_addr, __m128d a) + /// MOVSD m64, xmm /// public static unsafe void StoreScalar(double* address, Vector128 source) => StoreScalar(address, source); /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(sbyte* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(byte* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(short* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(ushort* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(int* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(uint* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(long* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_store_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQA m128, xmm /// public static unsafe void StoreAligned(ulong* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_store_pd (double* mem_addr, __m128d a) + /// MOVAPD m128, xmm /// public static unsafe void StoreAligned(double* address, Vector128 source) => StoreAligned(address, source); /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(sbyte* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(byte* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(short* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(ushort* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(int* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(uint* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(long* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_stream_si128 (__m128i* mem_addr, __m128i a) + /// MOVNTDQ m128, xmm /// public static unsafe void StoreAlignedNonTemporal(ulong* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_stream_pd (double* mem_addr, __m128d a) + /// MOVNTPD m128, xmm /// public static unsafe void StoreAlignedNonTemporal(double* address, Vector128 source) => StoreAlignedNonTemporal(address, source); /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(sbyte* address, Vector128 source) => Store(address, source); /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(byte* address, Vector128 source) => Store(address, source); /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(short* address, Vector128 source) => Store(address, source); /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(ushort* address, Vector128 source) => Store(address, source); /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(int* address, Vector128 source) => Store(address, source); /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(uint* address, Vector128 source) => Store(address, source); /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(long* address, Vector128 source) => Store(address, source); /// /// void _mm_storeu_si128 (__m128i* mem_addr, __m128i a) + /// MOVDQU m128, xmm /// public static unsafe void Store(ulong* address, Vector128 source) => Store(address, source); /// /// void _mm_storeu_pd (double* mem_addr, __m128d a) + /// MOVUPD m128, xmm /// public static unsafe void Store(double* address, Vector128 source) => Store(address, source); - + /// /// void _mm_storeh_pd (double* mem_addr, __m128d a) + /// MOVHPD m64, xmm /// public static unsafe void StoreHigh(double* address, Vector128 source) => StoreHigh(address, source); /// /// void _mm_storel_epi64 (__m128i* mem_addr, __m128i a) + /// MOVQ m64, xmm /// public static unsafe void StoreLow(long* address, Vector128 source) => StoreLow(address, source); /// /// void _mm_storel_epi64 (__m128i* mem_addr, __m128i a) + /// MOVQ m64, xmm /// public static unsafe void StoreLow(ulong* address, Vector128 source) => StoreLow(address, source); /// /// void _mm_storel_pd (double* mem_addr, __m128d a) + /// MOVLPD m64, xmm /// public static unsafe void StoreLow(double* address, Vector128 source) => StoreLow(address, source); + /// + /// void _mm_stream_si32(int *p, int a) + /// MOVNTI m32, r32 + /// + public static unsafe void StoreNonTemporal(int* address, int value) => StoreNonTemporal(address, value); + /// + /// void _mm_stream_si32(int *p, int a) + /// MOVNTI m32, r32 + /// + public static unsafe void StoreNonTemporal(uint* address, uint value) => StoreNonTemporal(address, value); + + /// + /// void _mm_stream_si64(__int64 *p, __int64 a) + /// MOVNTI m64, r64 + /// + public static unsafe void StoreNonTemporal(long* address, long value) => StoreNonTemporal(address, value); + /// + /// void _mm_stream_si64(__int64 *p, __int64 a) + /// MOVNTI m64, r64 + /// + public static unsafe void StoreNonTemporal(ulong* address, ulong value) => StoreNonTemporal(address, value); + /// /// __m128i _mm_sub_epi8 (__m128i a, __m128i b) + /// PSUBB xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128i _mm_sub_epi8 (__m128i a, __m128i b) + /// PSUBB xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128i _mm_sub_epi16 (__m128i a, __m128i b) + /// PSUBW xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128i _mm_sub_epi16 (__m128i a, __m128i b) + /// PSUBW xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128i _mm_sub_epi32 (__m128i a, __m128i b) + /// PSUBD xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128i _mm_sub_epi32 (__m128i a, __m128i b) + /// PSUBD xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128i _mm_sub_epi64 (__m128i a, __m128i b) + /// PSUBQ xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128i _mm_sub_epi64 (__m128i a, __m128i b) + /// PSUBQ xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128d _mm_sub_pd (__m128d a, __m128d b) + /// SUBPD xmm, xmm/m128 /// public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); /// /// __m128d _mm_sub_sd (__m128d a, __m128d b) + /// SUBSD xmm, xmm/m64 /// public static Vector128 SubtractScalar(Vector128 left, Vector128 right) => SubtractScalar(left, right); /// /// __m128i _mm_subs_epi8 (__m128i a, __m128i b) + /// PSUBSB xmm, xmm/m128 /// public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) => SubtractSaturate(left, right); /// /// __m128i _mm_subs_epi16 (__m128i a, __m128i b) + /// PSUBSW xmm, xmm/m128 /// public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) => SubtractSaturate(left, right); /// /// __m128i _mm_subs_epu8 (__m128i a, __m128i b) + /// PSUBUSB xmm, xmm/m128 /// public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) => SubtractSaturate(left, right); /// /// __m128i _mm_subs_epu16 (__m128i a, __m128i b) + /// PSUBUSW xmm, xmm/m128 /// public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) => SubtractSaturate(left, right); /// /// __m128i _mm_unpackhi_epi8 (__m128i a, __m128i b) + /// PUNPCKHBW xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128i _mm_unpackhi_epi8 (__m128i a, __m128i b) + /// PUNPCKHBW xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128i _mm_unpackhi_epi16 (__m128i a, __m128i b) + /// PUNPCKHWD xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128i _mm_unpackhi_epi16 (__m128i a, __m128i b) + /// PUNPCKHWD xmm, xmm/m128 /// UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128i _mm_unpackhi_epi32 (__m128i a, __m128i b) + /// PUNPCKHDQ xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128i _mm_unpackhi_epi32 (__m128i a, __m128i b) + /// PUNPCKHDQ xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128i _mm_unpackhi_epi64 (__m128i a, __m128i b) + /// PUNPCKHQDQ xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128i _mm_unpackhi_epi64 (__m128i a, __m128i b) + /// PUNPCKHQDQ xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); /// /// __m128d _mm_unpackhi_pd (__m128d a, __m128d b) + /// UNPCKHPD xmm, xmm/m128 /// public static Vector128 UnpackHigh(Vector128 left, Vector128 right) => UnpackHigh(left, right); - + /// /// __m128i _mm_unpacklo_epi8 (__m128i a, __m128i b) + /// PUNPCKLBW xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128i _mm_unpacklo_epi8 (__m128i a, __m128i b) + /// PUNPCKLBW xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128i _mm_unpacklo_epi16 (__m128i a, __m128i b) + /// PUNPCKLWD xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128i _mm_unpacklo_epi16 (__m128i a, __m128i b) + /// PUNPCKLWD xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128i _mm_unpacklo_epi32 (__m128i a, __m128i b) + /// PUNPCKLDQ xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128i _mm_unpacklo_epi32 (__m128i a, __m128i b) + /// PUNPCKLDQ xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128i _mm_unpacklo_epi64 (__m128i a, __m128i b) + /// PUNPCKLQDQ xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128i _mm_unpacklo_epi64 (__m128i a, __m128i b) + /// PUNPCKLQDQ xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); /// /// __m128d _mm_unpacklo_pd (__m128d a, __m128d b) + /// UNPCKLPD xmm, xmm/m128 /// public static Vector128 UnpackLow(Vector128 left, Vector128 right) => UnpackLow(left, right); - + /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); /// /// __m128i _mm_xor_si128 (__m128i a, __m128i b) + /// PXOR xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); /// /// __m128d _mm_xor_pd (__m128d a, __m128d b) + /// XORPD xmm, xmm/m128 /// public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse3.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse3.PlatformNotSupported.cs index 358ac40e93eb..b7eb406107bc 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse3.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse3.PlatformNotSupported.cs @@ -17,28 +17,34 @@ public static class Sse3 /// /// __m128 _mm_addsub_ps (__m128 a, __m128 b) + /// ADDSUBPS xmm, xmm/m128 /// public static Vector128 AddSubtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_addsub_pd (__m128d a, __m128d b) + /// ADDSUBPD xmm, xmm/m128 /// public static Vector128 AddSubtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_hadd_ps (__m128 a, __m128 b) + /// HADDPS xmm, xmm/m128 /// public static Vector128 HorizontalAdd(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_hadd_pd (__m128d a, __m128d b) + /// HADDPD xmm, xmm/m128 /// public static Vector128 HorizontalAdd(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_hsub_ps (__m128 a, __m128 b) + /// HSUBPS xmm, xmm/m128 /// public static Vector128 HorizontalSubtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_hsub_pd (__m128d a, __m128d b) + /// HSUBPD xmm, xmm/m128 /// public static Vector128 HorizontalSubtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } @@ -49,6 +55,7 @@ public static class Sse3 /// /// __m128i _mm_lddqu_si128 (__m128i const* mem_addr) + /// LDDQU xmm, m128 /// public static unsafe Vector128 LoadDquVector128(sbyte* address) { throw new PlatformNotSupportedException(); } public static unsafe Vector128 LoadDquVector128(byte* address) { throw new PlatformNotSupportedException(); } @@ -61,16 +68,19 @@ public static class Sse3 /// /// __m128d _mm_movedup_pd (__m128d a) + /// MOVDDUP xmm, xmm/m64 /// public static Vector128 MoveAndDuplicate(Vector128 source) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_movehdup_ps (__m128 a) + /// MOVSHDUP xmm, xmm/m128 /// public static Vector128 MoveHighAndDuplicate(Vector128 source) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_moveldup_ps (__m128 a) + /// MOVSLDUP xmm, xmm/m128 /// public static Vector128 MoveLowAndDuplicate(Vector128 source) { throw new PlatformNotSupportedException(); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse3.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse3.cs index b71c5f937c1d..5f183dd30f16 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse3.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse3.cs @@ -17,28 +17,34 @@ public static class Sse3 /// /// __m128 _mm_addsub_ps (__m128 a, __m128 b) + /// ADDSUBPS xmm, xmm/m128 /// public static Vector128 AddSubtract(Vector128 left, Vector128 right) => AddSubtract(left, right); /// /// __m128d _mm_addsub_pd (__m128d a, __m128d b) + /// ADDSUBPD xmm, xmm/m128 /// public static Vector128 AddSubtract(Vector128 left, Vector128 right) => AddSubtract(left, right); /// /// __m128 _mm_hadd_ps (__m128 a, __m128 b) + /// HADDPS xmm, xmm/m128 /// public static Vector128 HorizontalAdd(Vector128 left, Vector128 right) => HorizontalAdd(left, right); /// /// __m128d _mm_hadd_pd (__m128d a, __m128d b) + /// HADDPD xmm, xmm/m128 /// public static Vector128 HorizontalAdd(Vector128 left, Vector128 right) => HorizontalAdd(left, right); /// /// __m128 _mm_hsub_ps (__m128 a, __m128 b) + /// HSUBPS xmm, xmm/m128 /// public static Vector128 HorizontalSubtract(Vector128 left, Vector128 right) => HorizontalSubtract(left, right); /// /// __m128d _mm_hsub_pd (__m128d a, __m128d b) + /// HSUBPD xmm, xmm/m128 /// public static Vector128 HorizontalSubtract(Vector128 left, Vector128 right) => HorizontalSubtract(left, right); @@ -49,6 +55,7 @@ public static class Sse3 /// /// __m128i _mm_lddqu_si128 (__m128i const* mem_addr) + /// LDDQU xmm, m128 /// public static unsafe Vector128 LoadDquVector128(sbyte* address) => LoadDquVector128(address); public static unsafe Vector128 LoadDquVector128(byte* address) => LoadDquVector128(address); @@ -61,18 +68,20 @@ public static class Sse3 /// /// __m128d _mm_movedup_pd (__m128d a) + /// MOVDDUP xmm, xmm/m64 /// public static Vector128 MoveAndDuplicate(Vector128 source) => MoveAndDuplicate(source); /// /// __m128 _mm_movehdup_ps (__m128 a) + /// MOVSHDUP xmm, xmm/m128 /// public static Vector128 MoveHighAndDuplicate(Vector128 source) => MoveHighAndDuplicate(source); /// /// __m128 _mm_moveldup_ps (__m128 a) + /// MOVSLDUP xmm, xmm/m128 /// public static Vector128 MoveLowAndDuplicate(Vector128 source) => MoveLowAndDuplicate(source); - } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs index e95c594520bf..063b8dc2cbf7 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs @@ -14,387 +14,553 @@ namespace System.Runtime.Intrinsics.X86 public static class Sse41 { public static bool IsSupported { get { return false; } } - + /// /// __m128i _mm_blend_epi16 (__m128i a, __m128i b, const int imm8) + /// PBLENDW xmm, xmm/m128 imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_blend_epi16 (__m128i a, __m128i b, const int imm8) + /// PBLENDW xmm, xmm/m128 imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_blend_ps (__m128 a, __m128 b, const int imm8) + /// BLENDPS xmm, xmm/m128, imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_blend_pd (__m128d a, __m128d b, const int imm8) + /// BLENDPD xmm, xmm/m128, imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_blendv_epi8 (__m128i a, __m128i b, __m128i mask) + /// PBLENDVB xmm, xmm/m128, xmm /// public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_blendv_epi8 (__m128i a, __m128i b, __m128i mask) + /// PBLENDVB xmm, xmm/m128, xmm /// public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_blendv_ps (__m128 a, __m128 b, __m128 mask) + /// BLENDVPS xmm, xmm/m128, xmm0 /// public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_blendv_pd (__m128d a, __m128d b, __m128d mask) + /// BLENDVPD xmm, xmm/m128, xmm0 /// public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_ceil_ps (__m128 a) + /// ROUNDPS xmm, xmm/m128, imm8(10) /// public static Vector128 Ceiling(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_ceil_pd (__m128d a) + /// ROUNDPD xmm, xmm/m128, imm8(10) /// public static Vector128 Ceiling(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_ceil_sd (__m128d a) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 CeilingScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_ceil_ss (__m128 a) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 CeilingScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128d _mm_ceil_sd (__m128d a, __m128d b) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// + public static Vector128 CeilingScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_ceil_ss (__m128 a, __m128 b) + /// ROUNDSS xmm, xmm/m128, imm8(10) + /// + public static Vector128 CeilingScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_cmpeq_epi64 (__m128i a, __m128i b) + /// PCMPEQQ xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpeq_epi64 (__m128i a, __m128i b) + /// PCMPEQQ xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepi8_epi16 (__m128i a) + /// PMOVSXBW xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int16(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepu8_epi16 (__m128i a) + /// PMOVZXBW xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int16(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepi8_epi32 (__m128i a) + /// PMOVSXBD xmm, xmm/m32 /// public static Vector128 ConvertToVector128Int32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepu8_epi32 (__m128i a) + /// PMOVZXBD xmm, xmm/m32 /// public static Vector128 ConvertToVector128Int32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepi16_epi32 (__m128i a) + /// PMOVSXWD xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepu16_epi32 (__m128i a) + /// PMOVZXWD xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int32(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepi8_epi64 (__m128i a) + /// PMOVSXBQ xmm, xmm/m16 /// public static Vector128 ConvertToVector128Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepu8_epi64 (__m128i a) + /// PMOVZXBQ xmm, xmm/m16 /// public static Vector128 ConvertToVector128Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepi16_epi64 (__m128i a) + /// PMOVSXWQ xmm, xmm/m32 /// public static Vector128 ConvertToVector128Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepu16_epi64 (__m128i a) + /// PMOVZXWQ xmm, xmm/m32 /// public static Vector128 ConvertToVector128Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepi32_epi64 (__m128i a) + /// PMOVSXDQ xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cvtepu32_epi64 (__m128i a) + /// PMOVZXDQ xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int64(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_dp_ps (__m128 a, __m128 b, const int imm8) + /// DPPS xmm, xmm/m128, imm8 /// public static Vector128 DotProduct(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_dp_pd (__m128d a, __m128d b, const int imm8) + /// DPPD xmm, xmm/m128, imm8 /// public static Vector128 DotProduct(Vector128 left, Vector128 right, byte control) { throw new PlatformNotSupportedException(); } /// /// int _mm_extract_epi8 (__m128i a, const int imm8) + /// PEXTRB reg/m8, xmm, imm8 /// public static sbyte Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } /// /// int _mm_extract_epi8 (__m128i a, const int imm8) + /// PEXTRB reg/m8, xmm, imm8 /// public static byte Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } /// /// int _mm_extract_epi32 (__m128i a, const int imm8) + /// PEXTRD reg/m32, xmm, imm8 /// public static int Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } /// /// int _mm_extract_epi32 (__m128i a, const int imm8) + /// PEXTRD reg/m32, xmm, imm8 /// public static uint Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_extract_epi64 (__m128i a, const int imm8) + /// PEXTRQ reg/m64, xmm, imm8 /// public static long Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } /// /// __int64 _mm_extract_epi64 (__m128i a, const int imm8) + /// PEXTRQ reg/m64, xmm, imm8 /// public static ulong Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } - /// /// int _mm_extract_ps (__m128 a, const int imm8) + /// EXTRACTPS xmm, xmm/m32, imm8 /// public static float Extract(Vector128 value, byte index) { throw new PlatformNotSupportedException(); } + /// /// __m128 _mm_floor_ps (__m128 a) + /// ROUNDPS xmm, xmm/m128, imm8(9) /// public static Vector128 Floor(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_floor_pd (__m128d a) + /// ROUNDPD xmm, xmm/m128, imm8(9) /// public static Vector128 Floor(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_floor_sd (__m128d a) + /// ROUNDSD xmm, xmm/m128, imm8(9) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 FloorScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_floor_ss (__m128 a) + /// ROUNDSS xmm, xmm/m128, imm8(9) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 FloorScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128d _mm_floor_sd (__m128d a, __m128d b) + /// ROUNDSD xmm, xmm/m128, imm8(9) + /// + public static Vector128 FloorScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_floor_ss (__m128 a, __m128 b) + /// ROUNDSS xmm, xmm/m128, imm8(9) + /// + public static Vector128 FloorScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_insert_epi8 (__m128i a, int i, const int imm8) + /// PINSRB xmm, reg/m8, imm8 /// public static Vector128 Insert(Vector128 value, sbyte data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_insert_epi8 (__m128i a, int i, const int imm8) + /// PINSRB xmm, reg/m8, imm8 /// public static Vector128 Insert(Vector128 value, byte data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_insert_epi32 (__m128i a, int i, const int imm8) + /// PINSRD xmm, reg/m32, imm8 /// public static Vector128 Insert(Vector128 value, int data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_insert_epi32 (__m128i a, int i, const int imm8) + /// PINSRD xmm, reg/m32, imm8 /// public static Vector128 Insert(Vector128 value, uint data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_insert_epi64 (__m128i a, __int64 i, const int imm8) + /// PINSRQ xmm, reg/m64, imm8 /// public static Vector128 Insert(Vector128 value, long data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_insert_epi64 (__m128i a, __int64 i, const int imm8) + /// PINSRQ xmm, reg/m64, imm8 /// public static Vector128 Insert(Vector128 value, ulong data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_insert_ps (__m128 a, __m128 b, const int imm8) + /// INSERTPS xmm, xmm/m32, imm8 /// public static Vector128 Insert(Vector128 value, float data, byte index) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_max_epi8 (__m128i a, __m128i b) + /// PMAXSB xmm, xmm/m128 /// - public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_max_epu16 (__m128i a, __m128i b) + /// PMAXUW xmm, xmm/m128 /// - public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_max_epi32 (__m128i a, __m128i b) + /// PMAXSD xmm, xmm/m128 /// - public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_max_epu32 (__m128i a, __m128i b) + /// PMAXUD xmm, xmm/m128 /// - public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_min_epi8 (__m128i a, __m128i b) + /// PMINSB xmm, xmm/m128 /// - public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_min_epu16 (__m128i a, __m128i b) + /// PMINUW xmm, xmm/m128 /// - public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_min_epi32 (__m128i a, __m128i b) + /// PMINSD xmm, xmm/m128 /// - public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_min_epu32 (__m128i a, __m128i b) + /// PMINUD xmm, xmm/m128 /// - public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } - + public static Vector128 Min(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_minpos_epu16 (__m128i a) + /// PHMINPOSUW xmm, xmm/m128 /// public static Vector128 MinHorizontal(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mpsadbw_epu8 (__m128i a, __m128i b, const int imm8) + /// MPSADBW xmm, xmm/m128, imm8 /// public static Vector128 MultipleSumAbsoluteDifferences(Vector128 left, Vector128 right, byte mask) { throw new PlatformNotSupportedException(); } - + /// /// __m128i _mm_mul_epi32 (__m128i a, __m128i b) + /// PMULDQ xmm, xmm/m128 /// public static Vector128 Multiply(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mullo_epi32 (__m128i a, __m128i b) + /// PMULLD xmm, xmm/m128 /// - public static Vector128 MultiplyLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 MultiplyLow(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_packus_epi32 (__m128i a, __m128i b) + /// PACKUSDW xmm, xmm/m128 /// - public static Vector128 PackUnsignedSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + public static Vector128 PackUnsignedSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128 _mm_round_ps (__m128 a, int rounding) + /// ROUNDPS xmm, xmm/m128, imm8(8) /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC /// public static Vector128 RoundToNearestInteger(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC; ROUNDPS xmm, xmm/m128, imm8(9) /// public static Vector128 RoundToNegativeInfinity(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC; ROUNDPS xmm, xmm/m128, imm8(10) /// public static Vector128 RoundToPositiveInfinity(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC; ROUNDPS xmm, xmm/m128, imm8(11) /// public static Vector128 RoundToZero(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_CUR_DIRECTION + /// _MM_FROUND_CUR_DIRECTION; ROUNDPS xmm, xmm/m128, imm8(4) /// public static Vector128 RoundCurrentDirection(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128d _mm_round_pd (__m128d a, int rounding) + /// ROUNDPD xmm, xmm/m128, imm8(8) /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC /// public static Vector128 RoundToNearestInteger(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC; ROUNDPD xmm, xmm/m128, imm8(9) /// public static Vector128 RoundToNegativeInfinity(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC; ROUNDPD xmm, xmm/m128, imm8(10) /// public static Vector128 RoundToPositiveInfinity(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC; ROUNDPD xmm, xmm/m128, imm8(11) /// public static Vector128 RoundToZero(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_CUR_DIRECTION + /// _MM_FROUND_CUR_DIRECTION; ROUNDPD xmm, xmm/m128, imm8(4) /// public static Vector128 RoundCurrentDirection(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_CUR_DIRECTION + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_CUR_DIRECTION) + /// ROUNDSD xmm, xmm/m128, imm8(4) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundCurrentDirectionScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// __m128d _mm_round_sd (__m128d a, int rounding) - /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(8) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToNearestIntegerScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(9) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToNegativeInfinityScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToPositiveInfinityScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(11) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToZeroScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_CUR_DIRECTION + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_CUR_DIRECTION) + /// ROUNDSD xmm, xmm/m128, imm8(4) + /// + public static Vector128 RoundCurrentDirectionScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(8) + /// + public static Vector128 RoundToNearestIntegerScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(9) + /// + public static Vector128 RoundToNegativeInfinityScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// + public static Vector128 RoundToPositiveInfinityScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(11) + /// + public static Vector128 RoundToZeroScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + + /// + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_CUR_DIRECTION) + /// ROUNDSS xmm, xmm/m128, imm8(4) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundCurrentDirectionScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// __m128 _mm_round_ss (__m128 a, int rounding) - /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(8) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToNearestIntegerScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(9) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToNegativeInfinityScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(10) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToPositiveInfinityScalar(Vector128 value) { throw new PlatformNotSupportedException(); } /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(11) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToZeroScalar(Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_CUR_DIRECTION) + /// ROUNDSS xmm, xmm/m128, imm8(4) + /// + public static Vector128 RoundCurrentDirectionScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(8) + /// + public static Vector128 RoundToNearestIntegerScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(9) + /// + public static Vector128 RoundToNegativeInfinityScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(10) + /// + public static Vector128 RoundToPositiveInfinityScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(11) + /// + public static Vector128 RoundToZeroScalar(Vector128 upper, Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(sbyte* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadAlignedVector128NonTemporal(sbyte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(byte* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadAlignedVector128NonTemporal(byte* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(short* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadAlignedVector128NonTemporal(short* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(ushort* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadAlignedVector128NonTemporal(ushort* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(int* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadAlignedVector128NonTemporal(int* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(uint* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadAlignedVector128NonTemporal(uint* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(long* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadAlignedVector128NonTemporal(long* address) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(ulong* address) { throw new PlatformNotSupportedException(); } + public static unsafe Vector128 LoadAlignedVector128NonTemporal(ulong* address) { throw new PlatformNotSupportedException(); } /// /// int _mm_test_all_ones (__m128i a) + /// HELPER /// public static bool TestAllOnes(Vector128 value) { throw new PlatformNotSupportedException(); } public static bool TestAllOnes(Vector128 value) { throw new PlatformNotSupportedException(); } @@ -404,9 +570,10 @@ public static class Sse41 public static bool TestAllOnes(Vector128 value) { throw new PlatformNotSupportedException(); } public static bool TestAllOnes(Vector128 value) { throw new PlatformNotSupportedException(); } public static bool TestAllOnes(Vector128 value) { throw new PlatformNotSupportedException(); } - + /// /// int _mm_test_all_zeros (__m128i a, __m128i mask) + /// PTEST xmm, xmm/m128 /// public static bool TestAllZeros(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestAllZeros(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } @@ -419,6 +586,7 @@ public static class Sse41 /// /// int _mm_testc_si128 (__m128i a, __m128i b) + /// PTEST xmm, xmm/m128 /// public static bool TestC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } @@ -428,9 +596,10 @@ public static class Sse41 public static bool TestC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } - + /// /// int _mm_test_mix_ones_zeros (__m128i a, __m128i mask) + /// PTEST xmm, xmm/m128 /// public static bool TestMixOnesZeros(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestMixOnesZeros(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } @@ -443,6 +612,7 @@ public static class Sse41 /// /// int _mm_testnzc_si128 (__m128i a, __m128i b) + /// PTEST xmm, xmm/m128 /// public static bool TestNotZAndNotC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestNotZAndNotC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } @@ -452,9 +622,10 @@ public static class Sse41 public static bool TestNotZAndNotC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestNotZAndNotC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestNotZAndNotC(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } - + /// /// int _mm_testz_si128 (__m128i a, __m128i b) + /// PTEST xmm, xmm/m128 /// public static bool TestZ(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } public static bool TestZ(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.cs index e1afe26fcbda..dd81168a2450 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.cs @@ -17,384 +17,550 @@ public static class Sse41 /// /// __m128i _mm_blend_epi16 (__m128i a, __m128i b, const int imm8) + /// PBLENDW xmm, xmm/m128 imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) => Blend(left, right, control); /// /// __m128i _mm_blend_epi16 (__m128i a, __m128i b, const int imm8) + /// PBLENDW xmm, xmm/m128 imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) => Blend(left, right, control); /// /// __m128 _mm_blend_ps (__m128 a, __m128 b, const int imm8) + /// BLENDPS xmm, xmm/m128, imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) => Blend(left, right, control); /// /// __m128d _mm_blend_pd (__m128d a, __m128d b, const int imm8) + /// BLENDPD xmm, xmm/m128, imm8 /// public static Vector128 Blend(Vector128 left, Vector128 right, byte control) => Blend(left, right, control); - + /// /// __m128i _mm_blendv_epi8 (__m128i a, __m128i b, __m128i mask) + /// PBLENDVB xmm, xmm/m128, xmm /// public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) => BlendVariable(left, right, mask); /// /// __m128i _mm_blendv_epi8 (__m128i a, __m128i b, __m128i mask) + /// PBLENDVB xmm, xmm/m128, xmm /// public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) => BlendVariable(left, right, mask); /// /// __m128 _mm_blendv_ps (__m128 a, __m128 b, __m128 mask) + /// BLENDVPS xmm, xmm/m128, xmm0 /// public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) => BlendVariable(left, right, mask); /// /// __m128d _mm_blendv_pd (__m128d a, __m128d b, __m128d mask) + /// BLENDVPD xmm, xmm/m128, xmm0 /// public static Vector128 BlendVariable(Vector128 left, Vector128 right, Vector128 mask) => BlendVariable(left, right, mask); /// /// __m128 _mm_ceil_ps (__m128 a) + /// ROUNDPS xmm, xmm/m128, imm8(10) /// public static Vector128 Ceiling(Vector128 value) => Ceiling(value); /// /// __m128d _mm_ceil_pd (__m128d a) + /// ROUNDPD xmm, xmm/m128, imm8(10) /// public static Vector128 Ceiling(Vector128 value) => Ceiling(value); /// /// __m128d _mm_ceil_sd (__m128d a) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 CeilingScalar(Vector128 value) => CeilingScalar(value); /// /// __m128 _mm_ceil_ss (__m128 a) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 CeilingScalar(Vector128 value) => CeilingScalar(value); + /// + /// __m128d _mm_ceil_sd (__m128d a, __m128d b) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// + public static Vector128 CeilingScalar(Vector128 upper, Vector128 value) => CeilingScalar(upper, value); + /// + /// __m128 _mm_ceil_ss (__m128 a, __m128 b) + /// ROUNDSS xmm, xmm/m128, imm8(10) + /// + public static Vector128 CeilingScalar(Vector128 upper, Vector128 value) => CeilingScalar(upper, value); + /// /// __m128i _mm_cmpeq_epi64 (__m128i a, __m128i b) + /// PCMPEQQ xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// __m128i _mm_cmpeq_epi64 (__m128i a, __m128i b) + /// PCMPEQQ xmm, xmm/m128 /// public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); /// /// __m128i _mm_cvtepi8_epi16 (__m128i a) + /// PMOVSXBW xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int16(Vector128 value) => ConvertToVector128Int16(value); /// /// __m128i _mm_cvtepu8_epi16 (__m128i a) + /// PMOVZXBW xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int16(Vector128 value) => ConvertToVector128Int16(value); /// /// __m128i _mm_cvtepi8_epi32 (__m128i a) + /// PMOVSXBD xmm, xmm/m32 /// public static Vector128 ConvertToVector128Int32(Vector128 value) => ConvertToVector128Int32(value); /// /// __m128i _mm_cvtepu8_epi32 (__m128i a) + /// PMOVZXBD xmm, xmm/m32 /// public static Vector128 ConvertToVector128Int32(Vector128 value) => ConvertToVector128Int32(value); /// /// __m128i _mm_cvtepi16_epi32 (__m128i a) + /// PMOVSXWD xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int32(Vector128 value) => ConvertToVector128Int32(value); /// /// __m128i _mm_cvtepu16_epi32 (__m128i a) + /// PMOVZXWD xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int32(Vector128 value) => ConvertToVector128Int32(value); /// /// __m128i _mm_cvtepi8_epi64 (__m128i a) + /// PMOVSXBQ xmm, xmm/m16 /// public static Vector128 ConvertToVector128Int64(Vector128 value) => ConvertToVector128Int64(value); /// /// __m128i _mm_cvtepu8_epi64 (__m128i a) + /// PMOVZXBQ xmm, xmm/m16 /// public static Vector128 ConvertToVector128Int64(Vector128 value) => ConvertToVector128Int64(value); /// /// __m128i _mm_cvtepi16_epi64 (__m128i a) + /// PMOVSXWQ xmm, xmm/m32 /// public static Vector128 ConvertToVector128Int64(Vector128 value) => ConvertToVector128Int64(value); /// /// __m128i _mm_cvtepu16_epi64 (__m128i a) + /// PMOVZXWQ xmm, xmm/m32 /// public static Vector128 ConvertToVector128Int64(Vector128 value) => ConvertToVector128Int64(value); /// /// __m128i _mm_cvtepi32_epi64 (__m128i a) + /// PMOVSXDQ xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int64(Vector128 value) => ConvertToVector128Int64(value); /// /// __m128i _mm_cvtepu32_epi64 (__m128i a) + /// PMOVZXDQ xmm, xmm/m64 /// public static Vector128 ConvertToVector128Int64(Vector128 value) => ConvertToVector128Int64(value); /// /// __m128 _mm_dp_ps (__m128 a, __m128 b, const int imm8) + /// DPPS xmm, xmm/m128, imm8 /// public static Vector128 DotProduct(Vector128 left, Vector128 right, byte control) => DotProduct(left, right, control); /// /// __m128d _mm_dp_pd (__m128d a, __m128d b, const int imm8) + /// DPPD xmm, xmm/m128, imm8 /// public static Vector128 DotProduct(Vector128 left, Vector128 right, byte control) => DotProduct(left, right, control); /// /// int _mm_extract_epi8 (__m128i a, const int imm8) + /// PEXTRB reg/m8, xmm, imm8 /// public static sbyte Extract(Vector128 value, byte index) => Extract(value, index); /// /// int _mm_extract_epi8 (__m128i a, const int imm8) + /// PEXTRB reg/m8, xmm, imm8 /// public static byte Extract(Vector128 value, byte index) => Extract(value, index); /// /// int _mm_extract_epi32 (__m128i a, const int imm8) + /// PEXTRD reg/m32, xmm, imm8 /// public static int Extract(Vector128 value, byte index) => Extract(value, index); /// /// int _mm_extract_epi32 (__m128i a, const int imm8) + /// PEXTRD reg/m32, xmm, imm8 /// public static uint Extract(Vector128 value, byte index) => Extract(value, index); /// /// __int64 _mm_extract_epi64 (__m128i a, const int imm8) + /// PEXTRQ reg/m64, xmm, imm8 /// public static long Extract(Vector128 value, byte index) => Extract(value, index); /// /// __int64 _mm_extract_epi64 (__m128i a, const int imm8) + /// PEXTRQ reg/m64, xmm, imm8 /// public static ulong Extract(Vector128 value, byte index) => Extract(value, index); /// /// int _mm_extract_ps (__m128 a, const int imm8) + /// EXTRACTPS xmm, xmm/m32, imm8 /// public static float Extract(Vector128 value, byte index) => Extract(value, index); /// /// __m128 _mm_floor_ps (__m128 a) + /// ROUNDPS xmm, xmm/m128, imm8(9) /// public static Vector128 Floor(Vector128 value) => Floor(value); /// /// __m128d _mm_floor_pd (__m128d a) + /// ROUNDPD xmm, xmm/m128, imm8(9) /// public static Vector128 Floor(Vector128 value) => Floor(value); /// /// __m128d _mm_floor_sd (__m128d a) + /// ROUNDSD xmm, xmm/m128, imm8(9) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 FloorScalar(Vector128 value) => FloorScalar(value); /// /// __m128 _mm_floor_ss (__m128 a) + /// ROUNDSS xmm, xmm/m128, imm8(9) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 FloorScalar(Vector128 value) => FloorScalar(value); + /// + /// __m128d _mm_floor_sd (__m128d a, __m128d b) + /// ROUNDSD xmm, xmm/m128, imm8(9) + /// + public static Vector128 FloorScalar(Vector128 upper, Vector128 value) => FloorScalar(upper, value); + /// + /// __m128 _mm_floor_ss (__m128 a, __m128 b) + /// ROUNDSS xmm, xmm/m128, imm8(9) + /// + public static Vector128 FloorScalar(Vector128 upper, Vector128 value) => FloorScalar(upper, value); + /// /// __m128i _mm_insert_epi8 (__m128i a, int i, const int imm8) + /// PINSRB xmm, reg/m8, imm8 /// public static Vector128 Insert(Vector128 value, sbyte data, byte index) => Insert(value, data, index); /// /// __m128i _mm_insert_epi8 (__m128i a, int i, const int imm8) + /// PINSRB xmm, reg/m8, imm8 /// public static Vector128 Insert(Vector128 value, byte data, byte index) => Insert(value, data, index); /// /// __m128i _mm_insert_epi32 (__m128i a, int i, const int imm8) + /// PINSRD xmm, reg/m32, imm8 /// public static Vector128 Insert(Vector128 value, int data, byte index) => Insert(value, data, index); /// /// __m128i _mm_insert_epi32 (__m128i a, int i, const int imm8) + /// PINSRD xmm, reg/m32, imm8 /// public static Vector128 Insert(Vector128 value, uint data, byte index) => Insert(value, data, index); /// /// __m128i _mm_insert_epi64 (__m128i a, __int64 i, const int imm8) + /// PINSRQ xmm, reg/m64, imm8 /// public static Vector128 Insert(Vector128 value, long data, byte index) => Insert(value, data, index); /// /// __m128i _mm_insert_epi64 (__m128i a, __int64 i, const int imm8) + /// PINSRQ xmm, reg/m64, imm8 /// public static Vector128 Insert(Vector128 value, ulong data, byte index) => Insert(value, data, index); /// /// __m128 _mm_insert_ps (__m128 a, __m128 b, const int imm8) + /// INSERTPS xmm, xmm/m32, imm8 /// public static Vector128 Insert(Vector128 value, float data, byte index) => Insert(value, data, index); /// /// __m128i _mm_max_epi8 (__m128i a, __m128i b) + /// PMAXSB xmm, xmm/m128 /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); /// /// __m128i _mm_max_epu16 (__m128i a, __m128i b) + /// PMAXUW xmm, xmm/m128 /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); /// /// __m128i _mm_max_epi32 (__m128i a, __m128i b) + /// PMAXSD xmm, xmm/m128 /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); /// /// __m128i _mm_max_epu32 (__m128i a, __m128i b) + /// PMAXUD xmm, xmm/m128 /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); /// /// __m128i _mm_min_epi8 (__m128i a, __m128i b) + /// PMINSB xmm, xmm/m128 /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); /// /// __m128i _mm_min_epu16 (__m128i a, __m128i b) + /// PMINUW xmm, xmm/m128 /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); /// /// __m128i _mm_min_epi32 (__m128i a, __m128i b) + /// PMINSD xmm, xmm/m128 /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); /// /// __m128i _mm_min_epu32 (__m128i a, __m128i b) + /// PMINUD xmm, xmm/m128 /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - + /// /// __m128i _mm_minpos_epu16 (__m128i a) + /// PHMINPOSUW xmm, xmm/m128 /// public static Vector128 MinHorizontal(Vector128 value) => MinHorizontal(value); /// /// __m128i _mm_mpsadbw_epu8 (__m128i a, __m128i b, const int imm8) + /// MPSADBW xmm, xmm/m128, imm8 /// public static Vector128 MultipleSumAbsoluteDifferences(Vector128 left, Vector128 right, byte mask) => MultipleSumAbsoluteDifferences(left, right, mask); - + /// /// __m128i _mm_mul_epi32 (__m128i a, __m128i b) + /// PMULDQ xmm, xmm/m128 /// public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); /// /// __m128i _mm_mullo_epi32 (__m128i a, __m128i b) + /// PMULLD xmm, xmm/m128 /// public static Vector128 MultiplyLow(Vector128 left, Vector128 right) => MultiplyLow(left, right); /// /// __m128i _mm_packus_epi32 (__m128i a, __m128i b) + /// PACKUSDW xmm, xmm/m128 /// public static Vector128 PackUnsignedSaturate(Vector128 left, Vector128 right) => PackUnsignedSaturate(left, right); /// /// __m128 _mm_round_ps (__m128 a, int rounding) + /// ROUNDPS xmm, xmm/m128, imm8(8) /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC /// public static Vector128 RoundToNearestInteger(Vector128 value) => RoundToNearestInteger(value); /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC; ROUNDPS xmm, xmm/m128, imm8(9) /// public static Vector128 RoundToNegativeInfinity(Vector128 value) => RoundToNegativeInfinity(value); /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC; ROUNDPS xmm, xmm/m128, imm8(10) /// public static Vector128 RoundToPositiveInfinity(Vector128 value) => RoundToPositiveInfinity(value); /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC; ROUNDPS xmm, xmm/m128, imm8(11) /// public static Vector128 RoundToZero(Vector128 value) => RoundToZero(value); /// - /// _MM_FROUND_CUR_DIRECTION + /// _MM_FROUND_CUR_DIRECTION; ROUNDPS xmm, xmm/m128, imm8(4) /// public static Vector128 RoundCurrentDirection(Vector128 value) => RoundCurrentDirection(value); /// /// __m128d _mm_round_pd (__m128d a, int rounding) + /// ROUNDPD xmm, xmm/m128, imm8(8) /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC /// public static Vector128 RoundToNearestInteger(Vector128 value) => RoundToNearestInteger(value); /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC; ROUNDPD xmm, xmm/m128, imm8(9) /// public static Vector128 RoundToNegativeInfinity(Vector128 value) => RoundToNegativeInfinity(value); /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC; ROUNDPD xmm, xmm/m128, imm8(10) /// public static Vector128 RoundToPositiveInfinity(Vector128 value) => RoundToPositiveInfinity(value); /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC; ROUNDPD xmm, xmm/m128, imm8(11) /// public static Vector128 RoundToZero(Vector128 value) => RoundToZero(value); /// - /// _MM_FROUND_CUR_DIRECTION + /// _MM_FROUND_CUR_DIRECTION; ROUNDPD xmm, xmm/m128, imm8(4) /// public static Vector128 RoundCurrentDirection(Vector128 value) => RoundCurrentDirection(value); /// - /// _MM_FROUND_CUR_DIRECTION + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_CUR_DIRECTION) + /// ROUNDSD xmm, xmm/m128, imm8(4) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundCurrentDirectionScalar(Vector128 value) => RoundCurrentDirectionScalar(value); /// - /// __m128d _mm_round_sd (__m128d a, int rounding) - /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(8) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToNearestIntegerScalar(Vector128 value) => RoundToNearestIntegerScalar(value); /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(9) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToNegativeInfinityScalar(Vector128 value) => RoundToNegativeInfinityScalar(value); /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToPositiveInfinityScalar(Vector128 value) => RoundToPositiveInfinityScalar(value); /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// __m128d _mm_round_sd (__m128d a, _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(11) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToZeroScalar(Vector128 value) => RoundToZeroScalar(value); /// - /// _MM_FROUND_CUR_DIRECTION + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_CUR_DIRECTION) + /// ROUNDSD xmm, xmm/m128, imm8(4) + /// + public static Vector128 RoundCurrentDirectionScalar(Vector128 upper, Vector128 value) => RoundCurrentDirectionScalar(upper, value); + /// + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(8) + /// + public static Vector128 RoundToNearestIntegerScalar(Vector128 upper, Vector128 value) => RoundToNearestIntegerScalar(upper, value); + /// + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(9) + /// + public static Vector128 RoundToNegativeInfinityScalar(Vector128 upper, Vector128 value) => RoundToNegativeInfinityScalar(upper, value); + /// + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(10) + /// + public static Vector128 RoundToPositiveInfinityScalar(Vector128 upper, Vector128 value) => RoundToPositiveInfinityScalar(upper, value); + /// + /// __m128d _mm_round_sd (__m128d a, __m128d b, _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC) + /// ROUNDSD xmm, xmm/m128, imm8(11) + /// + public static Vector128 RoundToZeroScalar(Vector128 upper, Vector128 value) => RoundToZeroScalar(upper, value); + + /// + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_CUR_DIRECTION) + /// ROUNDSS xmm, xmm/m128, imm8(4) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundCurrentDirectionScalar(Vector128 value) => RoundCurrentDirectionScalar(value); /// - /// __m128 _mm_round_ss (__m128 a, int rounding) - /// _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(8) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToNearestIntegerScalar(Vector128 value) => RoundToNearestIntegerScalar(value); /// - /// _MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(9) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToNegativeInfinityScalar(Vector128 value) => RoundToNegativeInfinityScalar(value); /// - /// _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(10) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToPositiveInfinityScalar(Vector128 value) => RoundToPositiveInfinityScalar(value); /// - /// _MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC + /// __m128 _mm_round_ss (__m128 a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(11) + /// The above native signature does not exist. We provide this additional overload for the recommended use case of this intrinsic. /// public static Vector128 RoundToZeroScalar(Vector128 value) => RoundToZeroScalar(value); + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_CUR_DIRECTION) + /// ROUNDSS xmm, xmm/m128, imm8(4) + /// + public static Vector128 RoundCurrentDirectionScalar(Vector128 upper, Vector128 value) => RoundCurrentDirectionScalar(upper, value); + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(8) + /// + public static Vector128 RoundToNearestIntegerScalar(Vector128 upper, Vector128 value) => RoundToNearestIntegerScalar(upper, value); + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(9) + /// + public static Vector128 RoundToNegativeInfinityScalar(Vector128 upper, Vector128 value) => RoundToNegativeInfinityScalar(upper, value); + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(10) + /// + public static Vector128 RoundToPositiveInfinityScalar(Vector128 upper, Vector128 value) => RoundToPositiveInfinityScalar(upper, value); + /// + /// __m128 _mm_round_ss (__m128 a, __m128 b, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC) + /// ROUNDSS xmm, xmm/m128, imm8(11) + /// + public static Vector128 RoundToZeroScalar(Vector128 upper, Vector128 value) => RoundToZeroScalar(upper, value); + /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(sbyte* address) => LoadAlignedNonTemporal(address); + public static unsafe Vector128 LoadAlignedVector128NonTemporal(sbyte* address) => LoadAlignedVector128NonTemporal(address); /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(byte* address) => LoadAlignedNonTemporal(address); + public static unsafe Vector128 LoadAlignedVector128NonTemporal(byte* address) => LoadAlignedVector128NonTemporal(address); /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(short* address) => LoadAlignedNonTemporal(address); + public static unsafe Vector128 LoadAlignedVector128NonTemporal(short* address) => LoadAlignedVector128NonTemporal(address); /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(ushort* address) => LoadAlignedNonTemporal(address); + public static unsafe Vector128 LoadAlignedVector128NonTemporal(ushort* address) => LoadAlignedVector128NonTemporal(address); /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(int* address) => LoadAlignedNonTemporal(address); + public static unsafe Vector128 LoadAlignedVector128NonTemporal(int* address) => LoadAlignedVector128NonTemporal(address); /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(uint* address) => LoadAlignedNonTemporal(address); + public static unsafe Vector128 LoadAlignedVector128NonTemporal(uint* address) => LoadAlignedVector128NonTemporal(address); /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(long* address) => LoadAlignedNonTemporal(address); + public static unsafe Vector128 LoadAlignedVector128NonTemporal(long* address) => LoadAlignedVector128NonTemporal(address); /// /// __m128i _mm_stream_load_si128 (const __m128i* mem_addr) + /// MOVNTDQA xmm, m128 /// - public static unsafe Vector128 LoadAlignedNonTemporal(ulong* address) => LoadAlignedNonTemporal(address); + public static unsafe Vector128 LoadAlignedVector128NonTemporal(ulong* address) => LoadAlignedVector128NonTemporal(address); /// /// int _mm_test_all_ones (__m128i a) + /// HELPER /// public static bool TestAllOnes(Vector128 value) => TestAllOnes(value); public static bool TestAllOnes(Vector128 value) => TestAllOnes(value); @@ -404,9 +570,10 @@ public static class Sse41 public static bool TestAllOnes(Vector128 value) => TestAllOnes(value); public static bool TestAllOnes(Vector128 value) => TestAllOnes(value); public static bool TestAllOnes(Vector128 value) => TestAllOnes(value); - + /// /// int _mm_test_all_zeros (__m128i a, __m128i mask) + /// PTEST xmm, xmm/m128 /// public static bool TestAllZeros(Vector128 left, Vector128 right) => TestAllZeros(left, right); public static bool TestAllZeros(Vector128 left, Vector128 right) => TestAllZeros(left, right); @@ -416,9 +583,10 @@ public static class Sse41 public static bool TestAllZeros(Vector128 left, Vector128 right) => TestAllZeros(left, right); public static bool TestAllZeros(Vector128 left, Vector128 right) => TestAllZeros(left, right); public static bool TestAllZeros(Vector128 left, Vector128 right) => TestAllZeros(left, right); - + /// /// int _mm_testc_si128 (__m128i a, __m128i b) + /// PTEST xmm, xmm/m128 /// public static bool TestC(Vector128 left, Vector128 right) => TestC(left, right); public static bool TestC(Vector128 left, Vector128 right) => TestC(left, right); @@ -428,9 +596,10 @@ public static class Sse41 public static bool TestC(Vector128 left, Vector128 right) => TestC(left, right); public static bool TestC(Vector128 left, Vector128 right) => TestC(left, right); public static bool TestC(Vector128 left, Vector128 right) => TestC(left, right); - + /// /// int _mm_test_mix_ones_zeros (__m128i a, __m128i mask) + /// PTEST xmm, xmm/m128 /// public static bool TestMixOnesZeros(Vector128 left, Vector128 right) => TestMixOnesZeros(left, right); public static bool TestMixOnesZeros(Vector128 left, Vector128 right) => TestMixOnesZeros(left, right); @@ -443,6 +612,7 @@ public static class Sse41 /// /// int _mm_testnzc_si128 (__m128i a, __m128i b) + /// PTEST xmm, xmm/m128 /// public static bool TestNotZAndNotC(Vector128 left, Vector128 right) => TestNotZAndNotC(left, right); public static bool TestNotZAndNotC(Vector128 left, Vector128 right) => TestNotZAndNotC(left, right); @@ -452,9 +622,10 @@ public static class Sse41 public static bool TestNotZAndNotC(Vector128 left, Vector128 right) => TestNotZAndNotC(left, right); public static bool TestNotZAndNotC(Vector128 left, Vector128 right) => TestNotZAndNotC(left, right); public static bool TestNotZAndNotC(Vector128 left, Vector128 right) => TestNotZAndNotC(left, right); - + /// /// int _mm_testz_si128 (__m128i a, __m128i b) + /// PTEST xmm, xmm/m128 /// public static bool TestZ(Vector128 left, Vector128 right) => TestZ(left, right); public static bool TestZ(Vector128 left, Vector128 right) => TestZ(left, right); diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse42.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse42.PlatformNotSupported.cs index 3db94c1afb94..43f78dc3e6cf 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse42.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse42.PlatformNotSupported.cs @@ -17,216 +17,285 @@ public static class Sse42 /// /// int _mm_cmpistra (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrc (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistro (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrs (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrz (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static bool CompareImplicitLength(Vector128 left, Vector128 right, ResultsFlag flag, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpistra (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrc (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistro (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrs (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrz (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static bool CompareImplicitLength(Vector128 left, Vector128 right, ResultsFlag flag, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpistra (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrc (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistro (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrs (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrz (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static bool CompareImplicitLength(Vector128 left, Vector128 right, ResultsFlag flag, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpistra (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrc (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistro (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrs (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrz (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static bool CompareImplicitLength(Vector128 left, Vector128 right, ResultsFlag flag, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpestra (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrc (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestro (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrs (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrz (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static bool CompareExplicitLength(Vector128 left, byte leftLength, Vector128 right, byte rightLength, ResultsFlag flag, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpestra (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrc (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestro (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrs (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrz (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static bool CompareExplicitLength(Vector128 left, byte leftLength, Vector128 right, byte rightLength, ResultsFlag flag, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpestra (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrc (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestro (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrs (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrz (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static bool CompareExplicitLength(Vector128 left, byte leftLength, Vector128 right, byte rightLength, ResultsFlag flag, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpestra (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrc (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestro (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrs (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrz (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static bool CompareExplicitLength(Vector128 left, byte leftLength, Vector128 right, byte rightLength, ResultsFlag flag, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpistri (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static int CompareImplicitLengthIndex(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpistri (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static int CompareImplicitLengthIndex(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpistri (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static int CompareImplicitLengthIndex(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpistri (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static int CompareImplicitLengthIndex(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpestri (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static int CompareExplicitLengthIndex(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpestri (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static int CompareExplicitLengthIndex(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpestri (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static int CompareExplicitLengthIndex(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// int _mm_cmpestri (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static int CompareExplicitLengthIndex(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthBitMask(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthBitMask(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthBitMask(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthBitMask(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthUnitMask(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthUnitMask(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthUnitMask(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthUnitMask(Vector128 left, Vector128 right, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthBitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthBitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthBitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthBitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthUnitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthUnitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthUnitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthUnitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_cmpgt_epi64 (__m128i a, __m128i b) + /// PCMPGTQ xmm, xmm/m128 /// public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// unsigned int _mm_crc32_u8 (unsigned int crc, unsigned char v) + /// CRC32 reg, reg/m8 /// public static uint Crc32(uint crc, byte data) { throw new PlatformNotSupportedException(); } /// /// unsigned int _mm_crc32_u16 (unsigned int crc, unsigned short v) + /// CRC32 reg, reg/m16 /// public static uint Crc32(uint crc, ushort data) { throw new PlatformNotSupportedException(); } /// /// unsigned int _mm_crc32_u32 (unsigned int crc, unsigned int v) + /// CRC32 reg, reg/m32 /// public static uint Crc32(uint crc, uint data) { throw new PlatformNotSupportedException(); } /// /// unsigned __int64 _mm_crc32_u64 (unsigned __int64 crc, unsigned __int64 v) + /// CRC32 reg, reg/m64 /// public static ulong Crc32(ulong crc, ulong data) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse42.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse42.cs index f98867cb9d0a..205e72ed4f4d 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse42.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse42.cs @@ -17,216 +17,285 @@ public static class Sse42 /// /// int _mm_cmpistra (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrc (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistro (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrs (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrz (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static bool CompareImplicitLength(Vector128 left, Vector128 right, ResultsFlag flag, StringComparisonMode mode) => CompareImplicitLength(left, right, flag, mode); /// /// int _mm_cmpistra (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrc (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistro (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrs (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrz (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static bool CompareImplicitLength(Vector128 left, Vector128 right, ResultsFlag flag, StringComparisonMode mode) => CompareImplicitLength(left, right, flag, mode); /// /// int _mm_cmpistra (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrc (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistro (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrs (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrz (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static bool CompareImplicitLength(Vector128 left, Vector128 right, ResultsFlag flag, StringComparisonMode mode) => CompareImplicitLength(left, right, flag, mode); /// /// int _mm_cmpistra (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrc (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistro (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrs (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// int _mm_cmpistrz (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static bool CompareImplicitLength(Vector128 left, Vector128 right, ResultsFlag flag, StringComparisonMode mode) => CompareImplicitLength(left, right, flag, mode); /// /// int _mm_cmpestra (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrc (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestro (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrs (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrz (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static bool CompareExplicitLength(Vector128 left, byte leftLength, Vector128 right, byte rightLength, ResultsFlag flag, StringComparisonMode mode) => CompareExplicitLength(left, leftLength, right, rightLength, flag, mode); /// /// int _mm_cmpestra (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrc (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestro (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrs (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrz (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static bool CompareExplicitLength(Vector128 left, byte leftLength, Vector128 right, byte rightLength, ResultsFlag flag, StringComparisonMode mode) => CompareExplicitLength(left, leftLength, right, rightLength, flag, mode); /// /// int _mm_cmpestra (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrc (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestro (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrs (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrz (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static bool CompareExplicitLength(Vector128 left, byte leftLength, Vector128 right, byte rightLength, ResultsFlag flag, StringComparisonMode mode) => CompareExplicitLength(left, leftLength, right, rightLength, flag, mode); /// /// int _mm_cmpestra (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrc (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestro (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrs (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// int _mm_cmpestrz (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static bool CompareExplicitLength(Vector128 left, byte leftLength, Vector128 right, byte rightLength, ResultsFlag flag, StringComparisonMode mode) => CompareExplicitLength(left, leftLength, right, rightLength, flag, mode); /// /// int _mm_cmpistri (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static int CompareImplicitLengthIndex(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthIndex(left, right, mode); /// /// int _mm_cmpistri (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static int CompareImplicitLengthIndex(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthIndex(left, right, mode); /// /// int _mm_cmpistri (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static int CompareImplicitLengthIndex(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthIndex(left, right, mode); /// /// int _mm_cmpistri (__m128i a, __m128i b, const int imm8) + /// PCMPISTRI xmm, xmm/m128, imm8 /// public static int CompareImplicitLengthIndex(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthIndex(left, right, mode); /// /// int _mm_cmpestri (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static int CompareExplicitLengthIndex(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthIndex(left, leftLength, right, rightLength, mode); /// /// int _mm_cmpestri (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static int CompareExplicitLengthIndex(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthIndex(left, leftLength, right, rightLength, mode); /// /// int _mm_cmpestri (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static int CompareExplicitLengthIndex(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthIndex(left, leftLength, right, rightLength, mode); /// /// int _mm_cmpestri (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRI xmm, xmm/m128, imm8 /// public static int CompareExplicitLengthIndex(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthIndex(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthBitMask(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthBitMask(left, right, mode); /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthBitMask(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthBitMask(left, right, mode); /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthBitMask(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthBitMask(left, right, mode); /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthBitMask(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthBitMask(left, right, mode); /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthUnitMask(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthUnitMask(left, right, mode); /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthUnitMask(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthUnitMask(left, right, mode); /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthUnitMask(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthUnitMask(left, right, mode); /// /// __m128i _mm_cmpistrm (__m128i a, __m128i b, const int imm8) + /// PCMPISTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareImplicitLengthUnitMask(Vector128 left, Vector128 right, StringComparisonMode mode) => CompareImplicitLengthUnitMask(left, right, mode); /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthBitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthBitMask(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthBitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthBitMask(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthBitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthBitMask(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthBitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthBitMask(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthUnitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthUnitMask(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthUnitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthUnitMask(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthUnitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthUnitMask(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpestrm (__m128i a, int la, __m128i b, int lb, const int imm8) + /// PCMPESTRM xmm, xmm/m128, imm8 /// public static Vector128 CompareExplicitLengthUnitMask(Vector128 left, byte leftLength, Vector128 right, byte rightLength, StringComparisonMode mode) => CompareExplicitLengthUnitMask(left, leftLength, right, rightLength, mode); /// /// __m128i _mm_cmpgt_epi64 (__m128i a, __m128i b) + /// PCMPGTQ xmm, xmm/m128 /// public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); /// /// unsigned int _mm_crc32_u8 (unsigned int crc, unsigned char v) + /// CRC32 reg, reg/m8 /// public static uint Crc32(uint crc, byte data) => Crc32(crc, data); /// /// unsigned int _mm_crc32_u16 (unsigned int crc, unsigned short v) + /// CRC32 reg, reg/m16 /// public static uint Crc32(uint crc, ushort data) => Crc32(crc, data); /// /// unsigned int _mm_crc32_u32 (unsigned int crc, unsigned int v) + /// CRC32 reg, reg/m32 /// public static uint Crc32(uint crc, uint data) => Crc32(crc, data); /// /// unsigned __int64 _mm_crc32_u64 (unsigned __int64 crc, unsigned __int64 v) + /// CRC32 reg, reg/m64 /// public static ulong Crc32(ulong crc, ulong data) => Crc32(crc, data); } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Ssse3.PlatformNotSupported.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Ssse3.PlatformNotSupported.cs index 1bc8e232fd3a..20e9bbb8b75d 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Ssse3.PlatformNotSupported.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Ssse3.PlatformNotSupported.cs @@ -17,75 +17,91 @@ public static class Ssse3 /// /// __m128i _mm_abs_epi8 (__m128i a) + /// PABSB xmm, xmm/m128 /// public static Vector128 Abs(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_abs_epi16 (__m128i a) + /// PABSW xmm, xmm/m128 /// public static Vector128 Abs(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_abs_epi32 (__m128i a) + /// PABSD xmm, xmm/m128 /// public static Vector128 Abs(Vector128 value) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_alignr_epi8 (__m128i a, __m128i b, int count) + /// PALIGNR xmm, xmm/m128, imm8 /// public static Vector128 AlignRight(Vector128 left, Vector128 right, byte mask) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_hadd_epi16 (__m128i a, __m128i b) + /// PHADDW xmm, xmm/m128 /// public static Vector128 HorizontalAdd(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_hadd_epi32 (__m128i a, __m128i b) + /// PHADDD xmm, xmm/m128 /// public static Vector128 HorizontalAdd(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_hadds_epi16 (__m128i a, __m128i b) + /// PHADDSW xmm, xmm/m128 /// public static Vector128 HorizontalAddSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_hsub_epi16 (__m128i a, __m128i b) + /// PHSUBW xmm, xmm/m128 /// public static Vector128 HorizontalSubtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_hsub_epi32 (__m128i a, __m128i b) + /// PHSUBD xmm, xmm/m128 /// public static Vector128 HorizontalSubtract(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_hsubs_epi16 (__m128i a, __m128i b) + /// PHSUBSW xmm, xmm/m128 /// public static Vector128 HorizontalSubtractSaturate(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_maddubs_epi16 (__m128i a, __m128i b) + /// PMADDUBSW xmm, xmm/m128 /// public static Vector128 MultiplyAddAdjacent(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_mulhrs_epi16 (__m128i a, __m128i b) + /// PMULHRSW xmm, xmm/m128 /// public static Vector128 MultiplyHighRoundScale(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_shuffle_epi8 (__m128i a, __m128i b) + /// PSHUFB xmm, xmm/m128 /// public static Vector128 Shuffle(Vector128 value, Vector128 mask) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sign_epi8 (__m128i a, __m128i b) + /// PSIGNB xmm, xmm/m128 /// public static Vector128 Sign(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sign_epi16 (__m128i a, __m128i b) + /// PSIGNW xmm, xmm/m128 /// public static Vector128 Sign(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } /// /// __m128i _mm_sign_epi32 (__m128i a, __m128i b) + /// PSIGND xmm, xmm/m128 /// public static Vector128 Sign(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } } diff --git a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Ssse3.cs b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Ssse3.cs index d336d2eef9bb..0403a0a4e270 100644 --- a/src/mscorlib/src/System/Runtime/Intrinsics/X86/Ssse3.cs +++ b/src/mscorlib/src/System/Runtime/Intrinsics/X86/Ssse3.cs @@ -17,75 +17,91 @@ public static class Ssse3 /// /// __m128i _mm_abs_epi8 (__m128i a) + /// PABSB xmm, xmm/m128 /// public static Vector128 Abs(Vector128 value) => Abs(value); /// /// __m128i _mm_abs_epi16 (__m128i a) + /// PABSW xmm, xmm/m128 /// public static Vector128 Abs(Vector128 value) => Abs(value); /// /// __m128i _mm_abs_epi32 (__m128i a) + /// PABSD xmm, xmm/m128 /// public static Vector128 Abs(Vector128 value) => Abs(value); /// /// __m128i _mm_alignr_epi8 (__m128i a, __m128i b, int count) + /// PALIGNR xmm, xmm/m128, imm8 /// public static Vector128 AlignRight(Vector128 left, Vector128 right, byte mask) => AlignRight(left, right, mask); /// /// __m128i _mm_hadd_epi16 (__m128i a, __m128i b) + /// PHADDW xmm, xmm/m128 /// public static Vector128 HorizontalAdd(Vector128 left, Vector128 right) => HorizontalAdd(left, right); /// /// __m128i _mm_hadd_epi32 (__m128i a, __m128i b) + /// PHADDD xmm, xmm/m128 /// public static Vector128 HorizontalAdd(Vector128 left, Vector128 right) => HorizontalAdd(left, right); /// /// __m128i _mm_hadds_epi16 (__m128i a, __m128i b) + /// PHADDSW xmm, xmm/m128 /// public static Vector128 HorizontalAddSaturate(Vector128 left, Vector128 right) => HorizontalAddSaturate(left, right); /// /// __m128i _mm_hsub_epi16 (__m128i a, __m128i b) + /// PHSUBW xmm, xmm/m128 /// public static Vector128 HorizontalSubtract(Vector128 left, Vector128 right) => HorizontalSubtract(left, right); /// /// __m128i _mm_hsub_epi32 (__m128i a, __m128i b) + /// PHSUBD xmm, xmm/m128 /// public static Vector128 HorizontalSubtract(Vector128 left, Vector128 right) => HorizontalSubtract(left, right); /// /// __m128i _mm_hsubs_epi16 (__m128i a, __m128i b) + /// PHSUBSW xmm, xmm/m128 /// public static Vector128 HorizontalSubtractSaturate(Vector128 left, Vector128 right) => HorizontalSubtractSaturate(left, right); /// /// __m128i _mm_maddubs_epi16 (__m128i a, __m128i b) + /// PMADDUBSW xmm, xmm/m128 /// public static Vector128 MultiplyAddAdjacent(Vector128 left, Vector128 right) => MultiplyAddAdjacent(left, right); /// /// __m128i _mm_mulhrs_epi16 (__m128i a, __m128i b) + /// PMULHRSW xmm, xmm/m128 /// public static Vector128 MultiplyHighRoundScale(Vector128 left, Vector128 right) => MultiplyHighRoundScale(left, right); /// /// __m128i _mm_shuffle_epi8 (__m128i a, __m128i b) + /// PSHUFB xmm, xmm/m128 /// public static Vector128 Shuffle(Vector128 value, Vector128 mask) => Shuffle(value, mask); /// /// __m128i _mm_sign_epi8 (__m128i a, __m128i b) + /// PSIGNB xmm, xmm/m128 /// public static Vector128 Sign(Vector128 left, Vector128 right) => Sign(left, right); /// /// __m128i _mm_sign_epi16 (__m128i a, __m128i b) + /// PSIGNW xmm, xmm/m128 /// public static Vector128 Sign(Vector128 left, Vector128 right) => Sign(left, right); /// /// __m128i _mm_sign_epi32 (__m128i a, __m128i b) + /// PSIGND xmm, xmm/m128 /// public static Vector128 Sign(Vector128 left, Vector128 right) => Sign(left, right); } diff --git a/tests/issues.targets b/tests/issues.targets index 1ebf4cd8b89f..0c21694d3dcb 100644 --- a/tests/issues.targets +++ b/tests/issues.targets @@ -196,6 +196,24 @@ 15924 + + 16094 + + + 16094 + + + 16094 + + + 16094 + + + 16094 + + + 16094 + diff --git a/tests/testsFailingOutsideWindows.txt b/tests/testsFailingOutsideWindows.txt index 4a10b2f9984a..c9ab818aca8a 100644 --- a/tests/testsFailingOutsideWindows.txt +++ b/tests/testsFailingOutsideWindows.txt @@ -79,3 +79,9 @@ Loader/classloader/TypeGeneratorTests/TypeGeneratorTest614/Generated614/Generate Loader/classloader/TypeGeneratorTests/TypeGeneratorTest681/Generated681/Generated681.sh Loader/classloader/TypeGeneratorTests/TypeGeneratorTest682/Generated682/Generated682.sh Loader/classloader/TypeGeneratorTests/TypeGeneratorTest683/Generated683/Generated683.sh +JIT/HardwareIntrinsics/X86/Sse/ConvertToVector128SingleScalar_r/ConvertToVector128SingleScalar_r.sh +JIT/HardwareIntrinsics/X86/Sse/ConvertToVector128SingleScalar_ro/ConvertToVector128SingleScalar_ro.sh +JIT/HardwareIntrinsics/X86/Sse/LoadScalar_r/LoadScalar_r.sh +JIT/HardwareIntrinsics/X86/Sse/LoadScalar_ro/LoadScalar_ro.sh +JIT/HardwareIntrinsics/X86/Sse/SetScalar_r/SetScalar_r.sh +JIT/HardwareIntrinsics/X86/Sse/SetScalar_ro/SetScalar_ro.sh