Skip to content

arm64: Rename SVE Prefetch APIs names to use Bit #115609

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

jonathandavies-arm
Copy link
Contributor

@github-actions github-actions bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label May 15, 2025
@dotnet-policy-service dotnet-policy-service bot added the community-contribution Indicates that the PR has been added by a community member label May 15, 2025
@kunalspathak kunalspathak added the arm-sve Work related to arm64 SVE/SVE2 support label May 15, 2025
@a74nh
Copy link
Contributor

a74nh commented May 16, 2025

@kunalspathak : Now that SVE exists in .NET9 and .NET10 do we have to do something special when changing the API names?

2025-05-15T13:50:31.1464888Z D:\a\_work\1\s\src\libraries\apicompat\ApiCompat.proj(93,5): error : API compatibility errors between 'net9.0/System.Runtime.Intrinsics.dll' (left) and 'net10.0/System.Runtime.Intrinsics.dll' (right):
2025-05-15T13:50:31.1474870Z D:\a\_work\1\s\src\libraries\apicompat\ApiCompat.proj(93,5): error CP0002: Member 'void System.Runtime.Intrinsics.Arm.Sve.PrefetchBytes(System.Numerics.Vector<byte>, void*, System.Runtime.Intrinsics.Arm.SvePrefetchType)' exists on net9.0/System.Runtime.Intrinsics.dll but not on net10.0/System.Runtime.Intrinsics.dll
2025-05-15T13:50:31.1477545Z D:\a\_work\1\s\src\libraries\apicompat\ApiCompat.proj(93,5): error CP0002: Member 'void System.Runtime.Intrinsics.Arm.Sve.PrefetchInt16(System.Numerics.Vector<ushort>, void*, System.Runtime.Intrinsics.Arm.SvePrefetchType)' exists on net9.0/System.Runtime.Intrinsics.dll but not on net10.0/System.Runtime.Intrinsics.dll
2025-05-15T13:50:31.1491490Z D:\a\_work\1\s\src\libraries\apicompat\ApiCompat.proj(93,5): error CP0002: Member 'void System.Runtime.Intrinsics.Arm.Sve.PrefetchInt32(System.Numerics.Vector<uint>, void*, System.Runtime.Intrinsics.Arm.SvePrefetchType)' exists on net9.0/System.Runtime.Intrinsics.dll but not on net10.0/System.Runtime.Intrinsics.dll
2025-05-15T13:50:31.1508773Z D:\a\_work\1\s\src\libraries\apicompat\ApiCompat.proj(93,5): error CP0002: Member 'void System.Runtime.Intrinsics.Arm.Sve.PrefetchInt64(System.Numerics.Vector<ulong>, void*, System.Runtime.Intrinsics.Arm.SvePrefetchType)' exists on net9.0/System.Runtime.Intrinsics.dll but not on net10.0/System.Runtime.Intrinsics.dll
2025-05-15T13:50:31.1636343Z D:\a\_work\1\s\src\libraries\apicompat\ApiCompat.proj(93,5): error : API breaking changes found. If those are intentional, the APICompat suppression file can be updated by rebuilding with '/p:ApiCompatGenerateSuppressionFile=true'

Copy link
Member

@kunalspathak kunalspathak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/diagnostic-ids -->
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the purpose of adding this file?

@kunalspathak
Copy link
Member

@tannergooding - can you double check the changes in ApiCompatBaseline?

@a74nh a74nh mentioned this pull request May 27, 2025
15 tasks
@kunalspathak kunalspathak added the needs-author-action An issue or pull request that requires more info or actions from the author. label May 27, 2025
@dotnet-policy-service dotnet-policy-service bot removed the needs-author-action An issue or pull request that requires more info or actions from the author. label May 29, 2025
@kunalspathak
Copy link
Member

/ba-g failures are unrelated

@kunalspathak kunalspathak merged commit 40063f8 into dotnet:main May 29, 2025
157 of 164 checks passed
@ericstj ericstj added the breaking-change Issue or PR that represents a breaking API or functional change over a prerelease. label Jun 10, 2025
@dotnet-policy-service dotnet-policy-service bot added the needs-breaking-change-doc-created Breaking changes need an issue opened with https://github.com/dotnet/docs/issues/new?template=dotnet label Jun 10, 2025
Copy link
Contributor

Added needs-breaking-change-doc-created label because this PR has the breaking-change label.

When you commit this breaking change:

  1. Create and link to this PR and the issue a matching issue in the dotnet/docs repo using the breaking change documentation template, then remove this needs-breaking-change-doc-created label.
  2. Ask a committer to mail the .NET Breaking Change Notification DL.

Tagging @dotnet/compat for awareness of the breaking change.

@ericstj
Copy link
Member

ericstj commented Jun 10, 2025

I marked this as breaking since it changed the method name. This is binary breaking for folks moving from .NET 9.0 to 10.0. @tannergooding are we OK with that break? It will mean libraries built against 9.0 will fail at runtime if they use these methods.

@ericstj
Copy link
Member

ericstj commented Jun 10, 2025

Correction, @kunalspathak let me know this was in experimental API - which is OK. That's an expected risk folks take using experimental API. Your call if you'd like to document this as breaking or not.

@gewarren - anything special that needs to happen in this case to clean up API docs for these renamed methods? I'm guessing the system is not going to just discover that these are removed.

@gewarren
Copy link
Contributor

@ericstj I logged an issue to add remarks about the new method names. The old methods will appear when .NET 9 is selected and disappear when .NET 10 is selected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI arm-sve Work related to arm64 SVE/SVE2 support breaking-change Issue or PR that represents a breaking API or functional change over a prerelease. community-contribution Indicates that the PR has been added by a community member needs-breaking-change-doc-created Breaking changes need an issue opened with https://github.com/dotnet/docs/issues/new?template=dotnet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Arm64 SVE: Rename Prefetch APIs names to use Bit
6 participants