From: Fei Peng Date: Wed, 19 Sep 2018 22:48:35 +0000 (-0700) Subject: Add all integer overloads for Avx2/SSE4.1 BlendVariable X-Git-Tag: accepted/tizen/unified/20190422.045933~1160 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0927f22958e6dd4fcda160fd87519008f7e19bd1;p=platform%2Fupstream%2Fcoreclr.git Add all integer overloads for Avx2/SSE4.1 BlendVariable --- diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.PlatformNotSupported.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.PlatformNotSupported.cs index 79c30d3..247f9e1 100644 --- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.PlatformNotSupported.cs +++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.PlatformNotSupported.cs @@ -237,6 +237,45 @@ namespace System.Runtime.Intrinsics.X86 public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } + + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } + + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) { throw new PlatformNotSupportedException(); } + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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) diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs index 90c5b31..b510c51 100644 --- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs +++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs @@ -237,6 +237,45 @@ namespace System.Runtime.Intrinsics.X86 public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); + + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); + + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + public static Vector256 BlendVariable(Vector256 left, Vector256 right, Vector256 mask) => BlendVariable(left, right, mask); + /// + /// __m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask) + /// VPBLENDVB ymm, ymm, ymm/m256, ymm + /// This intrinsic generates VPBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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) diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs index 58d06fa..a861b2d 100644 --- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs +++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs @@ -52,6 +52,42 @@ namespace System.Runtime.Intrinsics.X86 /// 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 /// diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs index 2547e41..a1afe8c 100644 --- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs +++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs @@ -52,6 +52,42 @@ namespace System.Runtime.Intrinsics.X86 /// 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 + /// This intrinsic generates PBLENDVB that needs a BYTE mask-vector, so users should correctly set each mask byte for the selected elements. + /// + 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 ///