Skip to content

DRAFT: Createwhile write after read#128233

Draft
dhartglassMSFT wants to merge 5 commits into
dotnet:mainfrom
dhartglassMSFT:createwhile_WAR_mask
Draft

DRAFT: Createwhile write after read#128233
dhartglassMSFT wants to merge 5 commits into
dotnet:mainfrom
dhartglassMSFT:createwhile_WAR_mask

Conversation

@dhartglassMSFT
Copy link
Copy Markdown
Contributor

No description provided.

@dotnet-policy-service
Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics
See info in area-owners.md if you want to be subscribed.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds the SVE2 CreateWhileWriteAfterReadMask* (WHILEWR) intrinsic family alongside the existing CreateWhileReadAfterWriteMask* (WHILERW) family, and extends the shared test template to cover both, including a new "reverse offset by one" scenario that exercises the asymmetric behavior between the two instructions.

Changes:

  • Adds 10 new CreateWhileWriteAfterReadMask{Type} public APIs (Sve2) in ref assembly, the throwing PlatformNotSupported stubs, and the recursive forwarding stubs in Sve2.cs.
  • Wires up the new intrinsics in hwintrinsiclistarm64sve.h (mapping each base type to INS_sve_whilewr) and extends the EA_8BYTE pointer-operand codegen case in hwintrinsiccodegenarm64.cpp to cover the new IDs.
  • Renames the shared SVE RW test template to SveCreateWhileDependencyMaskTest, parameterizes it with IsWriteAfterRead, adds a RunReverseOffsetByOneScenario distinguishing WHILEWR vs WHILERW, and adds 10 generator entries for the new WHILEWR tests.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Adds 10 new ref APIs for CreateWhileWriteAfterReadMask*.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.PlatformNotSupported.cs Adds throwing stubs and XML docs for the new intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.cs Adds the runtime intrinsic forwarding entry points.
src/coreclr/jit/hwintrinsiclistarm64sve.h Registers the 10 new intrinsic IDs mapped to INS_sve_whilewr per base type.
src/coreclr/jit/hwintrinsiccodegenarm64.cpp Routes the new IDs through the existing 64-bit pointer codegen path (comment updated to WHILERW/WHILEWR).
src/tests/Common/GenerateHWIntrinsicTests/Arm/Templates.cs Renames the template config to SveCreateWhileDependencyMaskTest.
src/tests/Common/GenerateHWIntrinsicTests/Arm/Sve2Tests.cs Updates RW entries with IsWriteAfterRead=false and adds 10 WHILEWR entries with IsWriteAfterRead=true.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/SveCreateWhileDependencyMaskTest.template Renames the test class, adds RunReverseOffsetByOneScenario, and documents the WHILEWR/WHILERW spec semantics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants