Skip to content

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

Merged
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts
Nov 25, 2022
Merged

Move the [With|Get]Element(SIMD) folding to local morph#76491
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts

Conversation

@SingleAccretion

@SingleAccretionSingleAccretion commented Oct 1, 2022

Copy link
Copy Markdown
Contributor

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.

@ghostghost added 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 labels Oct 1, 2022
@ghost

ghost commented Oct 1, 2022

Copy link
Copy Markdown

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:-

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minoptsDo not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDOct 3, 2022
@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDDo not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDOct 3, 2022
@ghostghost closed this Nov 5, 2022
@ghost

ghost commented Nov 5, 2022

Copy link
Copy Markdown

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

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDMove the [With|Get]Element(SIMD) folding to local morphNov 6, 2022
@SingleAccretionSingleAccretion mentioned this pull request Nov 6, 2022
@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib

@BruceForstall

Copy link
Copy Markdown
Contributor

@SingleAccretion Needs conflict resolution

@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

Needs conflict resolution

Done.

Comment threadsrc/coreclr/jit/lclmorph.cpp Outdated
@SingleAccretion

SingleAccretion commented Nov 25, 2022

Copy link
Copy Markdown
ContributorAuthor

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:mainNov 25, 2022
@jakobbotsch

Copy link
Copy Markdown
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
@ghostghost locked as resolved and limited conversation to collaborators Dec 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIcommunity-contributionIndicates 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

@SingleAccretion@BruceForstall@jakobbotsch@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Move the `[With|Get]Element(SIMD)` folding to local morph by SingleAccretion · Pull Request #76491 · dotnet/runtime · GitHub
Skip to content

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

Merged
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts
Nov 25, 2022
Merged

Move the [With|Get]Element(SIMD) folding to local morph#76491
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts

Conversation

@SingleAccretion

@SingleAccretionSingleAccretion commented Oct 1, 2022

Copy link
Copy Markdown
Contributor

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.

@ghostghost added 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 labels Oct 1, 2022
@ghost

ghost commented Oct 1, 2022

Copy link
Copy Markdown

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:-

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minoptsDo not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDOct 3, 2022
@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDDo not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDOct 3, 2022
@ghostghost closed this Nov 5, 2022
@ghost

ghost commented Nov 5, 2022

Copy link
Copy Markdown

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

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDMove the [With|Get]Element(SIMD) folding to local morphNov 6, 2022
@SingleAccretionSingleAccretion mentioned this pull request Nov 6, 2022
@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib

@BruceForstall

Copy link
Copy Markdown
Contributor

@SingleAccretion Needs conflict resolution

@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

Needs conflict resolution

Done.

Comment threadsrc/coreclr/jit/lclmorph.cpp Outdated
@SingleAccretion

SingleAccretion commented Nov 25, 2022

Copy link
Copy Markdown
ContributorAuthor

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:mainNov 25, 2022
@jakobbotsch

Copy link
Copy Markdown
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
@ghostghost locked as resolved and limited conversation to collaborators Dec 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIcommunity-contributionIndicates 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

@SingleAccretion@BruceForstall@jakobbotsch@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Move the `[With|Get]Element(SIMD)` folding to local morph by SingleAccretion · Pull Request #76491 · dotnet/runtime · GitHub
Skip to content

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

Merged
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts
Nov 25, 2022
Merged

Move the [With|Get]Element(SIMD) folding to local morph#76491
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts

Conversation

@SingleAccretion

@SingleAccretionSingleAccretion commented Oct 1, 2022

Copy link
Copy Markdown
Contributor

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.

@ghostghost added 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 labels Oct 1, 2022
@ghost

ghost commented Oct 1, 2022

Copy link
Copy Markdown

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:-

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minoptsDo not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDOct 3, 2022
@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDDo not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDOct 3, 2022
@ghostghost closed this Nov 5, 2022
@ghost

ghost commented Nov 5, 2022

Copy link
Copy Markdown

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

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDMove the [With|Get]Element(SIMD) folding to local morphNov 6, 2022
@SingleAccretionSingleAccretion mentioned this pull request Nov 6, 2022
@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib

@BruceForstall

Copy link
Copy Markdown
Contributor

@SingleAccretion Needs conflict resolution

@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

Needs conflict resolution

Done.

Comment threadsrc/coreclr/jit/lclmorph.cpp Outdated
@SingleAccretion

SingleAccretion commented Nov 25, 2022

Copy link
Copy Markdown
ContributorAuthor

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:mainNov 25, 2022
@jakobbotsch

Copy link
Copy Markdown
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
@ghostghost locked as resolved and limited conversation to collaborators Dec 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIcommunity-contributionIndicates 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

@SingleAccretion@BruceForstall@jakobbotsch@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Move the `[With|Get]Element(SIMD)` folding to local morph by SingleAccretion · Pull Request #76491 · dotnet/runtime · GitHub
Skip to content

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

Merged
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts
Nov 25, 2022
Merged

Move the [With|Get]Element(SIMD) folding to local morph#76491
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts

Conversation

@SingleAccretion

@SingleAccretionSingleAccretion commented Oct 1, 2022

Copy link
Copy Markdown
Contributor

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.

@ghostghost added 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 labels Oct 1, 2022
@ghost

ghost commented Oct 1, 2022

Copy link
Copy Markdown

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:-

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minoptsDo not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDOct 3, 2022
@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDDo not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDOct 3, 2022
@ghostghost closed this Nov 5, 2022
@ghost

ghost commented Nov 5, 2022

Copy link
Copy Markdown

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

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDMove the [With|Get]Element(SIMD) folding to local morphNov 6, 2022
@SingleAccretionSingleAccretion mentioned this pull request Nov 6, 2022
@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib

@BruceForstall

Copy link
Copy Markdown
Contributor

@SingleAccretion Needs conflict resolution

@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

Needs conflict resolution

Done.

Comment threadsrc/coreclr/jit/lclmorph.cpp Outdated
@SingleAccretion

SingleAccretion commented Nov 25, 2022

Copy link
Copy Markdown
ContributorAuthor

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:mainNov 25, 2022
@jakobbotsch

Copy link
Copy Markdown
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
@ghostghost locked as resolved and limited conversation to collaborators Dec 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIcommunity-contributionIndicates 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

@SingleAccretion@BruceForstall@jakobbotsch@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Move the `[With|Get]Element(SIMD)` folding to local morph by SingleAccretion · Pull Request #76491 · dotnet/runtime · GitHub
Skip to content

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

Merged
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts
Nov 25, 2022
Merged

Move the [With|Get]Element(SIMD) folding to local morph#76491
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts

Conversation

@SingleAccretion

@SingleAccretionSingleAccretion commented Oct 1, 2022

Copy link
Copy Markdown
Contributor

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.

@ghostghost added 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 labels Oct 1, 2022
@ghost

ghost commented Oct 1, 2022

Copy link
Copy Markdown

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:-

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minoptsDo not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDOct 3, 2022
@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDDo not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDOct 3, 2022
@ghostghost closed this Nov 5, 2022
@ghost

ghost commented Nov 5, 2022

Copy link
Copy Markdown

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

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDMove the [With|Get]Element(SIMD) folding to local morphNov 6, 2022
@SingleAccretionSingleAccretion mentioned this pull request Nov 6, 2022
@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib

@BruceForstall

Copy link
Copy Markdown
Contributor

@SingleAccretion Needs conflict resolution

@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

Needs conflict resolution

Done.

Comment threadsrc/coreclr/jit/lclmorph.cpp Outdated
@SingleAccretion

SingleAccretion commented Nov 25, 2022

Copy link
Copy Markdown
ContributorAuthor

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:mainNov 25, 2022
@jakobbotsch

Copy link
Copy Markdown
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
@ghostghost locked as resolved and limited conversation to collaborators Dec 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIcommunity-contributionIndicates 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

@SingleAccretion@BruceForstall@jakobbotsch@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Move the `[With|Get]Element(SIMD)` folding to local morph by SingleAccretion · Pull Request #76491 · dotnet/runtime · GitHub
Skip to content

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

Merged
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts
Nov 25, 2022
Merged

Move the [With|Get]Element(SIMD) folding to local morph#76491
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts

Conversation

@SingleAccretion

@SingleAccretionSingleAccretion commented Oct 1, 2022

Copy link
Copy Markdown
Contributor

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.

@ghostghost added 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 labels Oct 1, 2022
@ghost

ghost commented Oct 1, 2022

Copy link
Copy Markdown

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:-

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minoptsDo not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDOct 3, 2022
@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDDo not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDOct 3, 2022
@ghostghost closed this Nov 5, 2022
@ghost

ghost commented Nov 5, 2022

Copy link
Copy Markdown

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

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDMove the [With|Get]Element(SIMD) folding to local morphNov 6, 2022
@SingleAccretionSingleAccretion mentioned this pull request Nov 6, 2022
@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib

@BruceForstall

Copy link
Copy Markdown
Contributor

@SingleAccretion Needs conflict resolution

@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

Needs conflict resolution

Done.

Comment threadsrc/coreclr/jit/lclmorph.cpp Outdated
@SingleAccretion

SingleAccretion commented Nov 25, 2022

Copy link
Copy Markdown
ContributorAuthor

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:mainNov 25, 2022
@jakobbotsch

Copy link
Copy Markdown
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
@ghostghost locked as resolved and limited conversation to collaborators Dec 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIcommunity-contributionIndicates 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

@SingleAccretion@BruceForstall@jakobbotsch@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Move the `[With|Get]Element(SIMD)` folding to local morph by SingleAccretion · Pull Request #76491 · dotnet/runtime · GitHub
Skip to content

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

Merged
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts
Nov 25, 2022
Merged

Move the [With|Get]Element(SIMD) folding to local morph#76491
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts

Conversation

@SingleAccretion

@SingleAccretionSingleAccretion commented Oct 1, 2022

Copy link
Copy Markdown
Contributor

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.

@ghostghost added 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 labels Oct 1, 2022
@ghost

ghost commented Oct 1, 2022

Copy link
Copy Markdown

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:-

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minoptsDo not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDOct 3, 2022
@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDDo not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDOct 3, 2022
@ghostghost closed this Nov 5, 2022
@ghost

ghost commented Nov 5, 2022

Copy link
Copy Markdown

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

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDMove the [With|Get]Element(SIMD) folding to local morphNov 6, 2022
@SingleAccretionSingleAccretion mentioned this pull request Nov 6, 2022
@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib

@BruceForstall

Copy link
Copy Markdown
Contributor

@SingleAccretion Needs conflict resolution

@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

Needs conflict resolution

Done.

Comment threadsrc/coreclr/jit/lclmorph.cpp Outdated
@SingleAccretion

SingleAccretion commented Nov 25, 2022

Copy link
Copy Markdown
ContributorAuthor

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:mainNov 25, 2022
@jakobbotsch

Copy link
Copy Markdown
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
@ghostghost locked as resolved and limited conversation to collaborators Dec 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIcommunity-contributionIndicates 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

@SingleAccretion@BruceForstall@jakobbotsch@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Move the `[With|Get]Element(SIMD)` folding to local morph by SingleAccretion · Pull Request #76491 · dotnet/runtime · GitHub
Skip to content

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

Merged
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts
Nov 25, 2022
Merged

Move the [With|Get]Element(SIMD) folding to local morph#76491
jakobbotsch merged 9 commits into
dotnet:mainfrom
SingleAccretion:No-HWI-Get-IN-MinOpts

Conversation

@SingleAccretion

@SingleAccretionSingleAccretion commented Oct 1, 2022

Copy link
Copy Markdown
Contributor

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.

@ghostghost added 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 labels Oct 1, 2022
@ghost

ghost commented Oct 1, 2022

Copy link
Copy Markdown

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:-

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minoptsDo not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDOct 3, 2022
@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold locals in indir to LCL_FLDDo not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDOct 3, 2022
@ghostghost closed this Nov 5, 2022
@ghost

ghost commented Nov 5, 2022

Copy link
Copy Markdown

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

@SingleAccretionSingleAccretion changed the title Do not transform SIMD field access into HWIs in minopts, always fold local indirs to LCL_FLDMove the [With|Get]Element(SIMD) folding to local morphNov 6, 2022
@SingleAccretionSingleAccretion mentioned this pull request Nov 6, 2022
@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib

@BruceForstall

Copy link
Copy Markdown
Contributor

@SingleAccretion Needs conflict resolution

@SingleAccretion

Copy link
Copy Markdown
ContributorAuthor

Needs conflict resolution

Done.

Comment threadsrc/coreclr/jit/lclmorph.cpp Outdated
@SingleAccretion

SingleAccretion commented Nov 25, 2022

Copy link
Copy Markdown
ContributorAuthor

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:mainNov 25, 2022
@jakobbotsch

Copy link
Copy Markdown
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
@ghostghost locked as resolved and limited conversation to collaborators Dec 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIcommunity-contributionIndicates 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

@SingleAccretion@BruceForstall@jakobbotsch@tannergooding