Skip to content
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

Add support for Add Sve.GatherVectorUInt*ZeroExtendFirstFaulting() #105030

Merged

Conversation

SwapnilGaikwad
Copy link
Contributor

Contribute towards #99957

@a74nh @kunalspathak @dotnet/arm64-contrib @arch-arm64-sve

Copy link

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

1 similar comment
Copy link

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@dotnet-policy-service dotnet-policy-service bot added the community-contribution Indicates that the PR has been added by a community member label Jul 17, 2024
Copy link
Contributor

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

@SwapnilGaikwad
Copy link
Contributor Author

@TIHan @amanasifkhalid @a74nh
As both #105595 and #104964 merged, I have rebased this PR and it's now ready for review.

Stress tests for the new GatherVector*FirstFaulting APIs are passing
===================Running default===================
------------------- {} -------------------
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Bases_double_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Bases_long_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Bases_ulong_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_float_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_float_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_double_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_double_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorFirstFaulting_Indices_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Indices_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Indices_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Indices_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Indices_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Indices_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Indices_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Indices_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Indices_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Indices_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Indices_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Indices_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Indices_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Indices_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Indices_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Indices_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Indices_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16WithByteOffsetsSignExtendFirstFaulting_offsets_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16WithByteOffsetsSignExtendFirstFaulting_offsets_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16WithByteOffsetsSignExtendFirstFaulting_offsets_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16WithByteOffsetsSignExtendFirstFaulting_offsets_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16WithByteOffsetsSignExtendFirstFaulting_offsets_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16WithByteOffsetsSignExtendFirstFaulting_offsets_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16WithByteOffsetsSignExtendFirstFaulting_offsets_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16WithByteOffsetsSignExtendFirstFaulting_offsets_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt32SignExtendFirstFaulting_Indices_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt32SignExtendFirstFaulting_Indices_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt32SignExtendFirstFaulting_Indices_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt32SignExtendFirstFaulting_Indices_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt32WithByteOffsetsSignExtendFirstFaulting_offsets_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt32WithByteOffsetsSignExtendFirstFaulting_offsets_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt32WithByteOffsetsSignExtendFirstFaulting_offsets_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt32WithByteOffsetsSignExtendFirstFaulting_offsets_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorSByteSignExtendFirstFaulting_Indices_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorSByteSignExtendFirstFaulting_Indices_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorSByteSignExtendFirstFaulting_Indices_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorSByteSignExtendFirstFaulting_Indices_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorSByteSignExtendFirstFaulting_Indices_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorSByteSignExtendFirstFaulting_Indices_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorSByteSignExtendFirstFaulting_Indices_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorSByteSignExtendFirstFaulting_Indices_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16WithByteOffsetsZeroExtendFirstFaulting_offsets_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16WithByteOffsetsZeroExtendFirstFaulting_offsets_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16WithByteOffsetsZeroExtendFirstFaulting_offsets_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16WithByteOffsetsZeroExtendFirstFaulting_offsets_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16WithByteOffsetsZeroExtendFirstFaulting_offsets_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16WithByteOffsetsZeroExtendFirstFaulting_offsets_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16WithByteOffsetsZeroExtendFirstFaulting_offsets_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16WithByteOffsetsZeroExtendFirstFaulting_offsets_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Indices_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Indices_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Indices_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Indices_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Indices_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Indices_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Indices_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Indices_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting_offsets_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting_offsets_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting_offsets_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting_offsets_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting_offsets_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting_offsets_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting_offsets_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting_offsets_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Indices_int_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Indices_int_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Indices_long_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Indices_long_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Indices_uint_int() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Indices_uint_uint() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Indices_ulong_long() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Indices_ulong_ulong() : 13
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Bases_long_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorByteZeroExtendFirstFaulting_Bases_ulong_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Bases_long_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorInt16SignExtendFirstFaulting_Bases_ulong_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Bases_long_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt16ZeroExtendFirstFaulting_Bases_ulong_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Bases_long_ulong() : 16
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVectorUInt32ZeroExtendFirstFaulting_Bases_ulong_ulong() : 16
===================Running jitstress===================
------------------- {'JitMinOpts': '1'} -------------------
------------------- {'JitStress': '1'} -------------------
------------------- {'JitStress': '2'} -------------------
------------------- {'JitStress': '1', 'TieredCompilation': '1'} -------------------
------------------- {'JitStress': '2', 'TieredCompilation': '1'} -------------------
------------------- {'TailcallStress': '1'} -------------------
------------------- {'ReadyToRun': '0'} -------------------
===================Running jitstressregs===================
------------------- {'JitStressRegs': '1'} -------------------
------------------- {'JitStressRegs': '2'} -------------------
------------------- {'JitStressRegs': '3'} -------------------
------------------- {'JitStressRegs': '4'} -------------------
------------------- {'JitStressRegs': '8'} -------------------
------------------- {'JitStressRegs': '0x10'} -------------------
------------------- {'JitStressRegs': '0x80'} -------------------
------------------- {'JitStressRegs': '0x1000'} -------------------
------------------- {'JitStressRegs': '0x2000'} -------------------
===================Running jitstress2-jitstressregs===================
------------------- {'JitStress': '2', 'JitStressRegs': '1'} -------------------
------------------- {'JitStress': '2', 'JitStressRegs': '2'} -------------------
------------------- {'JitStress': '2', 'JitStressRegs': '3'} -------------------
------------------- {'JitStress': '2', 'JitStressRegs': '4'} -------------------
------------------- {'JitStress': '2', 'JitStressRegs': '8'} -------------------
------------------- {'JitStress': '2', 'JitStressRegs': '0x10'} -------------------
------------------- {'JitStress': '2', 'JitStressRegs': '0x80'} -------------------
------------------- {'JitStress': '2', 'JitStressRegs': '0x1000'} -------------------
------------------- {'JitStress': '2', 'JitStressRegs': '0x2000'} -------------------

@a74nh
Copy link
Contributor

a74nh commented Aug 9, 2024

src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\Arm\Sve.PlatformNotSupported.cs(3703,1): error CS1570: (NETCORE_ENGINEERING_TELEMETRY=Build) XML comment has badly formed XML -- 'Expected an end tag for element 'uint'.'
  • looks like valid errors from the CI

@JulieLeeMSFT JulieLeeMSFT added this to the 9.0.0 milestone Aug 9, 2024
@amanasifkhalid
Copy link
Member

@SwapnilGaikwad #106199 has been merged

Change-Id: Ia064b10db27b63b1b1254c4f478bf11a81aff4b2
@JulieLeeMSFT
Copy link
Member

@amanasifkhalid, @dotnet/arm64-contrib, please do code review for this last FFR PR.

Copy link
Member

@amanasifkhalid amanasifkhalid left a comment

Choose a reason for hiding this comment

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

Sorry to ask you to do this, but could you try uncommenting the ConditionalSelect_FalseOp scenarios like I did in #106349, and re-run the tests you added, please? Just want to make sure that PR can go in cleanly alongside this one.

src/coreclr/jit/hwintrinsiclistarm64sve.h Outdated Show resolved Hide resolved
Copy link
Member

@amanasifkhalid amanasifkhalid left a comment

Choose a reason for hiding this comment

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

LGTM, verified offline that ConditionalSelect_FalseOp works too. Thanks!

@amanasifkhalid amanasifkhalid merged commit f9c0846 into dotnet:main Aug 14, 2024
166 of 170 checks passed
@JulieLeeMSFT
Copy link
Member

This completes our last SVE APIs work for .NET9.

@SwapnilGaikwad SwapnilGaikwad deleted the github-firstFaultingGatherVector branch August 14, 2024 09:27
@github-actions github-actions bot locked and limited conversation to collaborators Sep 14, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-System.Runtime.Intrinsics arm-sve Work related to arm64 SVE/SVE2 support community-contribution Indicates that the PR has been added by a community member new-api-needs-documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants