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

Move the [With|Get]Element(SIMD) folding to local morph #76491

Merged
merged 9 commits into from
Nov 25, 2022

Conversation

SingleAccretion
Copy link
Contributor

@SingleAccretion SingleAccretion commented Oct 1, 2022

This moves the special machinery for morphing local indirs off of SIMDs to local morph, deleting one of the last two cases where SelectLocalIndirTransform will return IndirTransform::None (we're getting close!).

Diffs - improvements; all regressions I checked were due to copy propagation making something worse downstream or us allocating callee saves to enregister a-now-DNER-less local.

(This includes the x86 regressions too, of which most are PerfScore improvements)

There is also a nice TP win.

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Oct 1, 2022
@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Oct 1, 2022
@ghost
Copy link

ghost commented Oct 1, 2022

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

Issue Details

This transformation is not really profitable when not optimizing.

Note: currently this will produce some regressions, it needs the continuation of #76155.

Author: SingleAccretion
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@SingleAccretion SingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLD Oct 3, 2022
@SingleAccretion SingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLD Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLD Oct 3, 2022
@ghost ghost closed this Nov 5, 2022
@ghost
Copy link

ghost commented Nov 5, 2022

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@SingleAccretion SingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLD Move the [With|Get]Element(SIMD) folding to local morph Nov 6, 2022
@SingleAccretion SingleAccretion marked this pull request as ready for review November 8, 2022 00:39
@SingleAccretion
Copy link
Contributor Author

@dotnet/jit-contrib

@BruceForstall
Copy link
Member

@SingleAccretion Needs conflict resolution

@SingleAccretion
Copy link
Contributor Author

Needs conflict resolution

Done.

@SingleAccretion
Copy link
Contributor Author

SingleAccretion commented Nov 25, 2022

Build CoreCLR Product Build Linux_musl arm64 checked failure does not look related:

2022-11-24T17:24:35.5115315Z Building tests via "/__w/1/s/eng/common/msbuild.sh"  --warnAsError false /__w/1/s/src/tests/build.proj /t:TestBuild /p:TargetArchitecture=arm64 /p:Configuration=Checked /p:TargetOS=Linux /nodeReuse:false    /maxcpucount "/flp:Verbosity=normal;LogFile=/__w/1/s/artifacts/log/TestBuild.Linux.arm64.Checked.log" "/flp1:WarningsOnly;LogFile=/__w/1/s/artifacts/log/TestBuild.Linux.arm64.Checked.wrn" "/flp2:ErrorsOnly;LogFile=/__w/1/s/artifacts/log/TestBuild.Linux.arm64.Checked.err" "/bl:/__w/1/s/artifacts/log/TestBuild.Linux.arm64.Checked.binlog" /p:NUMBER_OF_PROCESSORS=4 /p:CrossBuild=true
2022-11-24T17:24:35.8072069Z /__w/1/s/.dotnet/sdk/7.0.100-rc.1.22431.12/MSBuild.dll /nologo -maxcpucount /m /maxcpucount -verbosity:m /v:minimal /bl:/__w/1/s/artifacts/log/TestBuild.Linux.arm64.Checked.binlog /clp:Summary /flp1:WarningsOnly;LogFile=/__w/1/s/artifacts/log/TestBuild.Linux.arm64.Checked.wrn /flp2:ErrorsOnly;LogFile=/__w/1/s/artifacts/log/TestBuild.Linux.arm64.Checked.err /flp:Verbosity=normal;LogFile=/__w/1/s/artifacts/log/TestBuild.Linux.arm64.Checked.log /nr:true /nodeReuse:false /p:TreatWarningsAsErrors=false /p:ContinuousIntegrationBuild=false /p:TargetArchitecture=arm64 /p:Configuration=Checked /p:TargetOS=Linux /p:NUMBER_OF_PROCESSORS=4 /p:CrossBuild=true /t:TestBuild /__w/1/s/src/tests/build.proj
2022-11-24T17:24:37.1652557Z   [17:24:37.16] Restoring all packages...
2022-11-24T17:24:38.7045729Z     Determining projects to restore...
2022-11-24T17:24:42.2984449Z     Restored /__w/1/s/src/tests/Common/test_dependencies_fs/test_dependencies.fsproj (in 2.85 sec).
2022-11-24T17:24:43.1905807Z     Determining projects to restore...
2022-11-24T17:24:45.4645760Z     Restored /__w/1/s/src/tests/Common/test_dependencies/test_dependencies.csproj (in 1.36 sec).
2022-11-24T17:24:46.1267240Z     Determining projects to restore...
2022-11-24T17:24:55.9649368Z     Restored /__w/1/s/src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj (in 8.97 sec).
2022-11-24T17:24:56.6697005Z     Determining projects to restore...
2022-11-24T17:25:00.5066972Z     Restored /__w/1/s/src/tests/Common/XUnitWrapperGenerator/XUnitWrapperGenerator.csproj (in 3.08 sec).
2022-11-24T17:25:01.1980038Z     Determining projects to restore...
2022-11-24T17:25:02.2152827Z     Restored /__w/1/s/src/tests/Common/XUnitWrapperLibrary/XUnitWrapperLibrary.csproj (in 181 ms).
2022-11-24T17:25:02.8633918Z     Determining projects to restore...
2022-11-24T17:25:05.0584527Z     Restored /__w/1/s/src/tests/Common/XHarnessRunnerLibrary/XHarnessRunnerLibrary.csproj (in 1.26 sec).
2022-11-24T17:25:05.0586498Z     1 of 2 projects are up-to-date for restore.
2022-11-24T17:25:05.0676523Z /__w/1/s/src/tests/build.proj(438,5): error MSB3073: The command ""/__w/1/s/.dotnet/dotnet" restore -r linux-musl-arm64 Common/XHarnessRunnerLibrary/XHarnessRunnerLibrary.csproj  /p:SetTFMForRestore=true /p:TargetOS=Linux /p:TargetArchitecture=arm64 /p:Configuration=Checked /p:CrossBuild=true" exited with code 1.
2022-11-24T17:25:05.0790364Z 
2022-11-24T17:25:05.0791504Z Build FAILED.
2022-11-24T17:25:05.0791651Z 
2022-11-24T17:25:05.0793334Z /__w/1/s/src/tests/build.proj(438,5): error MSB3073: The command ""/__w/1/s/.dotnet/dotnet" restore -r linux-musl-arm64 Common/XHarnessRunnerLibrary/XHarnessRunnerLibrary.csproj  /p:SetTFMForRestore=true /p:TargetOS=Linux /p:TargetArchitecture=arm64 /p:Configuration=Checked /p:CrossBuild=true" exited with code 1.
2022-11-24T17:25:05.0799140Z     0 Warning(s)
2022-11-24T17:25:05.0799777Z     1 Error(s)

@jakobbotsch jakobbotsch merged commit d4b387a into dotnet:main Nov 25, 2022
@jakobbotsch
Copy link
Member

Thank you! Sorry for the slowness.

@SingleAccretion SingleAccretion deleted the No-HWI-Get-IN-MinOpts branch November 29, 2022 18:17
SingleAccretion added a commit to SingleAccretion/runtime that referenced this pull request Dec 1, 2022
SingleAccretion added a commit to SingleAccretion/runtime that referenced this pull request Dec 1, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Dec 29, 2022
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.

4 participants