Fix SSE2 and SSE4.1 APIs (#15160)
authorFei Peng <fei.peng@intel.com>
Wed, 22 Nov 2017 14:40:24 +0000 (06:40 -0800)
committerJan Kotas <jkotas@microsoft.com>
Wed, 22 Nov 2017 14:40:24 +0000 (06:40 -0800)
src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.PlatformNotSupported.cs
src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse2.cs
src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.PlatformNotSupported.cs
src/mscorlib/src/System/Runtime/Intrinsics/X86/Sse41.cs

index 64db5ca70183c5702d35cab3e62a0bcbac37f287..7810f6b85eea9c2e709a75ca381b612c85c75b05 100644 (file)
@@ -42,11 +42,11 @@ namespace System.Runtime.Intrinsics.X86
         /// <summary>
         /// __m128i _mm_add_epi64 (__m128i a,  __m128i b)
         /// </summary>
-        public static Vector128<long> Add(Vector128<byte> left,  Vector128<long> right) { throw new PlatformNotSupportedException(); }
+        public static Vector128<long> Add(Vector128<long> left,  Vector128<long> right) { throw new PlatformNotSupportedException(); }
         /// <summary>
         /// __m128i _mm_add_epi64 (__m128i a,  __m128i b)
         /// </summary>
-        public static Vector128<ulong> Add(Vector128<sbyte> left,  Vector128<ulong> right) { throw new PlatformNotSupportedException(); }
+        public static Vector128<ulong> Add(Vector128<ulong> left,  Vector128<ulong> right) { throw new PlatformNotSupportedException(); }
         /// <summary>
         /// __m128d _mm_add_pd (__m128d a,  __m128d b)
         /// </summary>
index 54d59e4b76c6b5e055e172ee222f1df3816ef553..a586a354d153363bcd3e2e00516aaa472662ea2a 100644 (file)
@@ -42,11 +42,11 @@ namespace System.Runtime.Intrinsics.X86
         /// <summary>
         /// __m128i _mm_add_epi64 (__m128i a,  __m128i b)
         /// </summary>
-        public static Vector128<long> Add(Vector128<byte> left, Vector128<long> right) => Add(left, right);
+        public static Vector128<long> Add(Vector128<long> left, Vector128<long> right) => Add(left, right);
         /// <summary>
         /// __m128i _mm_add_epi64 (__m128i a,  __m128i b)
         /// </summary>
-        public static Vector128<ulong> Add(Vector128<sbyte> left, Vector128<ulong> right) => Add(left, right);
+        public static Vector128<ulong> Add(Vector128<ulong> left, Vector128<ulong> right) => Add(left, right);
         /// <summary>
         /// __m128d _mm_add_pd (__m128d a,  __m128d b)
         /// </summary>
index 4cc5a1ccbfe58ea23cabe47e4befcc88aaf63be8..3ca756b95fa60d0532fb10a77f9fd59ab71afeed 100644 (file)
@@ -119,6 +119,15 @@ namespace System.Runtime.Intrinsics.X86
         /// </summary>
         public static Vector128<long> ConvertToLong(Vector128<uint> value) { throw new PlatformNotSupportedException(); }
 
+        /// <summary>
+        /// __m128 _mm_dp_ps (__m128 a, __m128 b, const int imm8)
+        /// </summary>
+        public static Vector128<float> DotProduct(Vector128<float> left, Vector128<float> right, byte control) { throw new PlatformNotSupportedException(); }
+        /// <summary>
+        /// __m128d _mm_dp_pd (__m128d a, __m128d b, const int imm8)
+        /// </summary>
+        public static Vector128<double> DotProduct(Vector128<double> left, Vector128<double> right, byte control) { throw new PlatformNotSupportedException(); }
+
         /// <summary>
         /// int _mm_extract_epi8 (__m128i a, const int imm8)
         /// </summary>
index 28879b43ca446e4581d8d6be583789723ead5e87..675a75023c53d8fb2ecb1e3720cd1e2ff8c7bad4 100644 (file)
@@ -119,6 +119,15 @@ namespace System.Runtime.Intrinsics.X86
         /// </summary>
         public static Vector128<long> ConvertToLong(Vector128<uint> value) => ConvertToLong(value);
 
+        /// <summary>
+        /// __m128 _mm_dp_ps (__m128 a, __m128 b, const int imm8)
+        /// </summary>
+        public static Vector128<float> DotProduct(Vector128<float> left, Vector128<float> right, byte control) => DotProduct(left, right, control);
+        /// <summary>
+        /// __m128d _mm_dp_pd (__m128d a, __m128d b, const int imm8)
+        /// </summary>
+        public static Vector128<double> DotProduct(Vector128<double> left, Vector128<double> right, byte control) => DotProduct(left, right, control);
+
         /// <summary>
         /// int _mm_extract_epi8 (__m128i a, const int imm8)
         /// </summary>