Skip to content

Conversation

@SwapnilGaikwad
Copy link
Contributor

Fixes: #105163

It also fixes the issue where FFR was not preserved and side-effects from the intrinsic not specified.

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

@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Aug 19, 2024
@dotnet-policy-service dotnet-policy-service bot added the community-contribution Indicates that the PR has been added by a community member label Aug 19, 2024
@SwapnilGaikwad
Copy link
Contributor Author

All stress tests are passing.
===================Running default===================
------------------- {} -------------------
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_float() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_double() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_sbyte() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_short() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_int() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_long() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_byte() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_ushort() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_uint() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorNonFaulting_ulong() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorInt16NonFaultingSignExtendToInt32_int() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorInt16NonFaultingSignExtendToInt64_long() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorInt16NonFaultingSignExtendToUInt32_uint() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorInt16NonFaultingSignExtendToUInt64_ulong() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorInt32NonFaultingSignExtendToInt64_long() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorInt32NonFaultingSignExtendToUInt64_ulong() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorSByteNonFaultingSignExtendToInt16_short() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorSByteNonFaultingSignExtendToInt32_int() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorSByteNonFaultingSignExtendToInt64_long() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorSByteNonFaultingSignExtendToUInt16_ushort() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorSByteNonFaultingSignExtendToUInt32_uint() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorSByteNonFaultingSignExtendToUInt64_ulong() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorByteNonFaultingZeroExtendToInt16() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorByteNonFaultingZeroExtendToInt32() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorByteNonFaultingZeroExtendToInt64() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorByteNonFaultingZeroExtendToUInt16() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorByteNonFaultingZeroExtendToUInt32() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorByteNonFaultingZeroExtendToUInt64() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorUInt16NonFaultingZeroExtendToInt32() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorUInt16NonFaultingZeroExtendToInt64() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorUInt16NonFaultingZeroExtendToUInt32() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorUInt16NonFaultingZeroExtendToUInt64() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorUInt32NonFaultingZeroExtendToInt64() : 18
Passed test: _Sve_ro::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVectorUInt32NonFaultingZeroExtendToUInt64() : 18
===================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'} -------------------

Copy link
Contributor

@a74nh a74nh left a comment

Choose a reason for hiding this comment

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

This LGTM.

Looks like we are missing FFR tracking for gatherload first faulting methods too. We should do that in a follow on PR.

@SwapnilGaikwad
Copy link
Contributor Author

This LGTM.

Looks like we are missing FFR tracking for gatherload first faulting methods too. We should do that in a follow on PR.

As discussed offline, the LoadVectorNonFaulting are in SVE2 so we can skip them for now🙂.

Copy link
Contributor

@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 too, thanks!

@amanasifkhalid
Copy link
Contributor

/ba-g runtime-dev-innerloop failure is from CI machine rebooting

@amanasifkhalid amanasifkhalid merged commit 4e8892e into dotnet:main Aug 21, 2024
@amanasifkhalid
Copy link
Contributor

Looks like we are missing FFR tracking for gatherload first faulting methods too. We should do that in a follow on PR.

@SwapnilGaikwad are you planning on doing this item? I think this is the source of the failure in #106621.

@amanasifkhalid
Copy link
Contributor

/backport to release/9.0

@github-actions
Copy link
Contributor

@SwapnilGaikwad
Copy link
Contributor Author

Looks like we are missing FFR tracking for gatherload first faulting methods too. We should do that in a follow on PR.

@SwapnilGaikwad are you planning on doing this item? I think this is the source of the failure in #106621.

Hi @amanasifkhalid, there were GatherVectorFirstFaulting and LoadVectorFirstFautling in SVE1. We have the FFR tracking for them. Alan may have referred to APIs from SVE2 group so skipped them.
However, happy to take a look at the #106621 👍

@SwapnilGaikwad
Copy link
Contributor Author

Continuing conversation here.

@github-actions github-actions bot locked and limited conversation to collaborators Sep 22, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

JIT: SVE - Add FFR lifetime tracking as well as test coverage for NonFaulting APIs

3 participants