Arm64 SVE2: CreateWhileGreaterThan* and CreateWhileReadAfterWrite*#127538
Conversation
|
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics |
|
/azp run runtime-coreclr jitstress |
|
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Pull request overview
Adds test-generation coverage for new Arm64 SVE2 “CreateWhileGreaterThan*”, “CreateWhileGreaterThanOrEqual*”, and “CreateWhileReadAfterWriteMask*” intrinsics by wiring new templates, helpers, and generated test definitions.
Changes:
- Introduces a new RW (read-after-write) mask test template covering same-address, reflection, and offset-by-one scenarios.
- Adds scalar helper predicates for
>and>=to validate generated “while greater-than” masks. - Registers the new template and expands the SVE2 generated test matrix with the new intrinsic variants.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/tests/JIT/HardwareIntrinsics/Arm/Shared/SveCreateWhileRWMaskTest.template | New template to validate CreateWhileReadAfterWriteMask* scenarios (same address, reflection, offset). |
| src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.cs | Adds WhileGreaterThanMask / WhileGreaterThanOrEqualMask helper overloads used by generated tests. |
| src/tests/Common/GenerateHWIntrinsicTests/Arm/Templates.cs | Registers SveCreateWhileRWMaskTest.template with the generator. |
| src/tests/Common/GenerateHWIntrinsicTests/Arm/Sve2Tests.cs | Adds generated test entries for SVE2 CreateWhileGreaterThan*/CreateWhileGreaterThanOrEqual* and CreateWhileReadAfterWriteMask*. |
|
/azp run runtime-coreclr jitstress |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
@tannergooding SVE2 intrinsics - jit+libraries changes are mostly boilerplate |
a74nh
left a comment
There was a problem hiding this comment.
LGTM. But, we should add randomness in the future.
|
other legs including superpmi-diffs are timeouts. Arm64 hw intrin pipeline is hitting the 401s (PAT issue) |
|
/ba-g known pipeline issues |
Add Intrinsics for CreateWhileGreaterThan*. The implementation is the same as the CreateWhileLess* intrinsics, except its SVE2, and the Mask bits are set starting from the end of the vector, rather than the beginning like for the Less*.
Add Intrinsics for CreateWhileReadAfterWrite*. Behavior of these depends on the pointer value (not contents) they're given, so we needed a new test template for them. The new tests check for when ptr==ptr2 that mask has all elements set, and when ptr1, ptr2 are off by one that only the first is set.
Tested via jitstress in the lab, linux-arm64 passes.
Contributes to #94021
CreateWhileGreater* APIs match the proposed change in #108233