Remove duplicated SVE GatherVector APIs#124033
Conversation
These are duplicated with the normal GatherVector methods, as 32-bit values doesn't need to be extended to 32-bit. See dotnet#103370, which removed the Int32 extensions, but did not remove the UInt32 extensions.
|
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics |
|
Given this is removing released APIs, I think this might need a API break issue raised against it? |
All the APIs are I don't have a preference if we want to have a general callout for all the fixes we've made in .NET 11 to the experimental surface or not, will leave that up to everyone else. |
Code Review: PR #124033 - Remove duplicated SVE GatherVector APIsHolistic AssessmentMotivation: This PR removes duplicated SVE GatherVectorUInt32 API overloads. The removed APIs that operate on 32-bit values (Vector/Vector) are semantically equivalent to the regular GatherVector methods since 32-bit values don't need to be "zero-extended to 32-bit" - they're already 32-bit. PR #103370 previously removed the Int32 versions, but the UInt32 versions were missed. Approach: The PR:
Net positive: ✅ Yes - this is a necessary API cleanup to remove semantically incorrect/duplicate APIs, following the precedent set in #103370. Detailed Findings✅ API Removals (Sve.cs, Sve.PlatformNotSupported.cs, System.Runtime.Intrinsics.cs)
✅ JIT Intrinsic Table Changes (hwintrinsiclistarm64sve.h)
✅ API Compatibility Baseline (ApiCompatBaseline.NetCoreAppLatestStable.xml)
✅ Test Removals (SveTests.cs)
SummaryVerdict: ✅ Approve This PR is a clean follow-up to #103370 that removes the remaining incorrectly-designed UInt32 "zero-extend" gather APIs. The change is breaking but correctly suppressed via the API compatibility baseline. All files are consistently updated and the approach matches the prior art. No issues found. |
🤖 Copilot Code Review — PR #124033Holistic AssessmentMotivation: This PR removes 16 semantically incorrect API overloads that were duplicates of regular GatherVector methods. The removed APIs claim to "zero-extend 32-bit to 64-bit" but return Approach: The PR correctly:
Summary: ✅ LGTM — This is a clean API cleanup that follows established precedent from #103370. All file changes are consistent, the breaking change is correctly documented in the API compat baseline, and the APIs being removed are experimental ( Detailed Findings✅ API Removals — Correct and CompleteThe 16 removed overloads fall into 4 methods × 4 overloads each:
The 64-bit variants ( ✅ JIT Intrinsic Table — Correctly NarrowedThe changes to ✅ Breaking Change Handling — AppropriateAll 16 suppressions are correctly added with:
Since these APIs are marked ✅ Test Updates — ConsistentTest data for the removed overloads has been removed from Multi-model review: GPT-5 concurred with LGTM verdict. |
Head branch was pushed to by a user without write access
|
jit pieces lgtm |
These APIs are duplicated with the normal GatherVector methods, as 32-bit values doesn't need to be extended to 32-bit.
See #103370, which removed the Int32 extensions, but did not remove the UInt32 extensions.
@dotnet/arm64-contrib @a74nh