|
| 1 | +--- |
| 2 | +title: "Breaking change: YMM embedded rounding removed from AVX10.2" |
| 3 | +description: Learn about the .NET 10 breaking change in core .NET libraries where support for YMM embedded rounding was removed from AVX10.2. |
| 4 | +ms.date: 06/06/2025 |
| 5 | +--- |
| 6 | + |
| 7 | +# YMM embedded rounding removed from AVX10.2 |
| 8 | + |
| 9 | +Support for YMM embedded rounding has been removed from the <xref:System.Runtime.Intrinsics.X86.Avx10v2> type. |
| 10 | + |
| 11 | +## Previous behavior |
| 12 | + |
| 13 | +In previous .NET 10 Preview versions, the [affected APIs](#affected-apis) in <xref:System.Runtime.Intrinsics.X86.Avx10v2> were available. |
| 14 | + |
| 15 | +## New behavior |
| 16 | + |
| 17 | +Starting in Preview 5, the [affected APIs](#affected-apis) in <xref:System.Runtime.Intrinsics.X86.Avx10v2> are removed and no longer available. |
| 18 | + |
| 19 | +## Version introduced |
| 20 | + |
| 21 | +.NET 10 Preview 5 |
| 22 | + |
| 23 | +## Type of breaking change |
| 24 | + |
| 25 | +This change can affect [binary compatibility](../../categories.md#binary-compatibility) and [source compatibility](../../categories.md#source-compatibility). |
| 26 | + |
| 27 | +## Reason for change |
| 28 | + |
| 29 | +Intel pivoted direction and now requires that AVX10.2 also implement AVX512. Since ZMM embedded rounding is always available, the YMM embedded rounding feature isn't necessary. |
| 30 | + |
| 31 | +## Recommended action |
| 32 | + |
| 33 | +Because the hardware isn't yet available, no users should be affected by this change. |
| 34 | + |
| 35 | +## Affected APIs |
| 36 | + |
| 37 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToSByteWithSaturationAndZeroExtendToInt32` |
| 38 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToByteWithSaturationAndZeroExtendToInt32` |
| 39 | +- `System.Runtime.Intrinsics.X86.Avx10v2.Add` |
| 40 | +- `System.Runtime.Intrinsics.X86.Avx10v2.Divide` |
| 41 | +- `System.Runtime.Intrinsics.X86.Avx10v2.Multiply` |
| 42 | +- `System.Runtime.Intrinsics.X86.Avx10v2.Scale` |
| 43 | +- `System.Runtime.Intrinsics.X86.Avx10v2.Sqrt` |
| 44 | +- `System.Runtime.Intrinsics.X86.Avx10v2.Subtract` |
| 45 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector128Int32` |
| 46 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector128Single` |
| 47 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector128UInt32` |
| 48 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector256Double` |
| 49 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector256Int32` |
| 50 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector256Int64` |
| 51 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector256Single` |
| 52 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector256UInt32` |
| 53 | +- `System.Runtime.Intrinsics.X86.Avx10v2.ConvertToVector256UInt64` |
0 commit comments