diff --git a/src/Common/src/CoreLib/System.Private.CoreLib.Shared.projitems b/src/Common/src/CoreLib/System.Private.CoreLib.Shared.projitems
index fc59dfd76319..56a0b1387f4f 100644
--- a/src/Common/src/CoreLib/System.Private.CoreLib.Shared.projitems
+++ b/src/Common/src/CoreLib/System.Private.CoreLib.Shared.projitems
@@ -481,6 +481,7 @@
+
diff --git a/src/Common/src/CoreLib/System/Runtime/CompilerServices/AsyncIteratorStateMachineAttribute.cs b/src/Common/src/CoreLib/System/Runtime/CompilerServices/AsyncIteratorStateMachineAttribute.cs
new file mode 100644
index 000000000000..489195569de2
--- /dev/null
+++ b/src/Common/src/CoreLib/System/Runtime/CompilerServices/AsyncIteratorStateMachineAttribute.cs
@@ -0,0 +1,18 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace System.Runtime.CompilerServices
+{
+ /// Indicates whether a method is an asynchronous iterator.
+ [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
+ public sealed class AsyncIteratorStateMachineAttribute : StateMachineAttribute
+ {
+ /// Initializes a new instance of the class.
+ /// The type object for the underlying state machine type that's used to implement a state machine method.
+ public AsyncIteratorStateMachineAttribute(Type stateMachineType)
+ : base(stateMachineType)
+ {
+ }
+ }
+}
diff --git a/src/Common/src/CoreLib/System/Runtime/Intrinsics/X86/Bmi2.PlatformNotSupported.cs b/src/Common/src/CoreLib/System/Runtime/Intrinsics/X86/Bmi2.PlatformNotSupported.cs
index fd0a2d8fb900..77d3fbfc7359 100644
--- a/src/Common/src/CoreLib/System/Runtime/Intrinsics/X86/Bmi2.PlatformNotSupported.cs
+++ b/src/Common/src/CoreLib/System/Runtime/Intrinsics/X86/Bmi2.PlatformNotSupported.cs
@@ -33,9 +33,18 @@ internal X64() { }
///
/// unsigned __int64 _mulx_u64 (unsigned __int64 a, unsigned __int64 b, unsigned __int64* hi)
/// MULX r64a, r64b, reg/m64
+ /// The above native signature does not directly correspond to the managed signature.
/// This intrinisc is only available on 64-bit processes
///
- public static unsafe ulong MultiplyNoFlags(ulong left, ulong right, ulong* high) { throw new PlatformNotSupportedException(); }
+ public static ulong MultiplyNoFlags(ulong left, ulong right) { throw new PlatformNotSupportedException(); }
+
+ ///
+ /// unsigned __int64 _mulx_u64 (unsigned __int64 a, unsigned __int64 b, unsigned __int64* hi)
+ /// MULX r64a, r64b, reg/m64
+ /// The above native signature does not directly correspond to the managed signature.
+ /// This intrinisc is only available on 64-bit processes
+ ///
+ public static unsafe ulong MultiplyNoFlags(ulong left, ulong right, ulong* low) { throw new PlatformNotSupportedException(); }
///
/// unsigned __int64 _pdep_u64 (unsigned __int64 a, unsigned __int64 mask)
@@ -61,8 +70,16 @@ internal X64() { }
///
/// unsigned int _mulx_u32 (unsigned int a, unsigned int b, unsigned int* hi)
/// MULX r32a, r32b, reg/m32
+ /// The above native signature does not directly correspond to the managed signature.
+ ///
+ public static uint MultiplyNoFlags(uint left, uint right) { throw new PlatformNotSupportedException(); }
+
+ ///
+ /// unsigned int _mulx_u32 (unsigned int a, unsigned int b, unsigned int* hi)
+ /// MULX r32a, r32b, reg/m32
+ /// The above native signature does not directly correspond to the managed signature.
///
- public static unsafe uint MultiplyNoFlags(uint left, uint right, uint* high) { throw new PlatformNotSupportedException(); }
+ public static unsafe uint MultiplyNoFlags(uint left, uint right, uint* low) { throw new PlatformNotSupportedException(); }
///
/// unsigned int _pdep_u32 (unsigned int a, unsigned int mask)
diff --git a/src/Common/src/CoreLib/System/Runtime/Intrinsics/X86/Bmi2.cs b/src/Common/src/CoreLib/System/Runtime/Intrinsics/X86/Bmi2.cs
index f535e0abd823..b701fd093f15 100644
--- a/src/Common/src/CoreLib/System/Runtime/Intrinsics/X86/Bmi2.cs
+++ b/src/Common/src/CoreLib/System/Runtime/Intrinsics/X86/Bmi2.cs
@@ -33,9 +33,18 @@ internal X64() { }
///
/// unsigned __int64 _mulx_u64 (unsigned __int64 a, unsigned __int64 b, unsigned __int64* hi)
/// MULX r64a, r64b, reg/m64
+ /// The above native signature does not directly correspond to the managed signature.
/// This intrinisc is only available on 64-bit processes
///
- public static unsafe ulong MultiplyNoFlags(ulong left, ulong right, ulong* high) => MultiplyNoFlags(left, right, high);
+ public static ulong MultiplyNoFlags(ulong left, ulong right) => MultiplyNoFlags(left, right);
+
+ ///
+ /// unsigned __int64 _mulx_u64 (unsigned __int64 a, unsigned __int64 b, unsigned __int64* hi)
+ /// MULX r64a, r64b, reg/m64
+ /// The above native signature does not directly correspond to the managed signature.
+ /// This intrinisc is only available on 64-bit processes
+ ///
+ public static unsafe ulong MultiplyNoFlags(ulong left, ulong right, ulong* low) => MultiplyNoFlags(left, right, low);
///
/// unsigned __int64 _pdep_u64 (unsigned __int64 a, unsigned __int64 mask)
@@ -61,8 +70,16 @@ internal X64() { }
///
/// unsigned int _mulx_u32 (unsigned int a, unsigned int b, unsigned int* hi)
/// MULX r32a, r32b, reg/m32
+ /// The above native signature does not directly correspond to the managed signature.
+ ///
+ public static uint MultiplyNoFlags(uint left, uint right) => MultiplyNoFlags(left, right);
+
+ ///
+ /// unsigned int _mulx_u32 (unsigned int a, unsigned int b, unsigned int* hi)
+ /// MULX r32a, r32b, reg/m32
+ /// The above native signature does not directly correspond to the managed signature.
///
- public static unsafe uint MultiplyNoFlags(uint left, uint right, uint* high) => MultiplyNoFlags(left, right, high);
+ public static unsafe uint MultiplyNoFlags(uint left, uint right, uint* low) => MultiplyNoFlags(left, right, low);
///
/// unsigned int _pdep_u32 (unsigned int a, unsigned int mask)