Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Perf: Consolidate implementation of LeadingZeroCount - #22497

Merged
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt
Feb 13, 2019
Merged

Perf: Consolidate implementation of LeadingZeroCount#22497
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt

Conversation

@grant-d

@grant-dgrant-d commented Feb 9, 2019

Copy link
Copy Markdown

There are several implementations of LeadingZeroCount in the stack, with differing or branch-heavy implementations.

  • This PR consolidates them into a central implementation that uses intrinsics & optimized software fallbacks.
  • Also fixes an issue in a related PR where explicit conversions to (IntPtr) was missing, causing some units to fail. Note the idiom used to convert from long to IntPtr inexpensively.
  • All BitOps methods pass units

cc @tannergooding

Comment threadsrc/System.Private.CoreLib/shared/System/Decimal.DecCalc.cs
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
@grant-dgrant-d changed the title Perf: BitOps.LeadingZeroCountPerf: Consolidate implementation of LeadingZeroCountFeb 9, 2019
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Char.cs
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@dotnet-bot

Copy link
Copy Markdown

Welcome to the dotnet/coreclr Perf help

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment PhraseAction
@dotnet-bot test this pleaseRe-run all legs. Use sparingly
@dotnet-bot test ci pleaseGenerates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot helpPrint this help message

The following jobs are launched by default for each PR against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test \QWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness

The following optional jobs are available in PRs against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test Windows_NT x64 illinkQueues Windows_NT x64 full_opt ryujit IlLink Tests
@dotnet-bot test linux perf flowQueues Linux Perf Test Flow
@dotnet-bot test Windows_NT x64 perfQueues Windows_NT x64 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 min_opts perfQueues Windows_NT x64 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 perfQueues Windows_NT x86 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 min_opts perfQueues Windows_NT x86 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 min_opts perf scenariosQueues Windows_NT x64 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 tiered ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 min_opts perf scenariosQueues Windows_NT x86 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 tiered ryujit Performance Scenarios Tests
@dotnet-bot test linux throughput flowQueues Linux arm Throughput Perf Test Flow
@dotnet-bot test linux throughput flowQueues Linux x64 Throughput Perf Test Flow
@dotnet-bot test Windows_NT x64 throughputQueues Windows_NT x64 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 nopgo throughputQueues Windows_NT x64 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts throughputQueues Windows_NT x64 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts nopgo throughputQueues Windows_NT x64 min_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 throughputQueues Windows_NT x86 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 nopgo throughputQueues Windows_NT x86 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts throughputQueues Windows_NT x86 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts nopgo throughputQueues Windows_NT x86 min_opt ryujit pgo CoreCLR Throughput Perf Tests

Have a nice day!

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks

@safern

Copy link
Copy Markdown
Member

@safern /azp commands works also for coreclr-ci? dotnet/corefx#35121 (comment)

The outerloop builds shouldn't since those are corefx specific, but the concept of everything else is the same.

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please
@dotnet-bot test Windows_NT x64 Release CoreFX Tests please
@dotnet-bot test Ubuntu x64 Checked Innerloop Build and Test (Jit - TieredCompilation=0) please

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@tannergooding
tannergooding merged commit eee8c24 into dotnet:masterFeb 13, 2019
@tannergooding

Copy link
Copy Markdown
Member

Thanks for the PR here @grant-d.

I'm fine with the two nits I had being looked at separately.

Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corefx that referenced this pull request Feb 13, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
@grant-d
grant-d deleted the grant-d.lzcnt branch February 13, 2019 22:21
@grant-d

Copy link
Copy Markdown
Author

Thanks @tannergooding, @jkotas and @davidfowl
Appreciate the help and pointers

stephentoub pushed a commit to dotnet/corefx that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit to dotnet/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
marek-safar pushed a commit to mono/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit that referenced this pull request Feb 15, 2019
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 15, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 26, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Commit migrated from dotnet/coreclr@eee8c24
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@grant-d@dotnet-bot@danmoseley@MarcoRossignoli@safern@tannergooding@davidfowl@omariom@jkotas
, '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" + '
Perf: Consolidate implementation of LeadingZeroCount by grant-d · Pull Request #22497 · dotnet/coreclr · GitHub
Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Perf: Consolidate implementation of LeadingZeroCount - #22497

Merged
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt
Feb 13, 2019
Merged

Perf: Consolidate implementation of LeadingZeroCount#22497
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt

Conversation

@grant-d

@grant-dgrant-d commented Feb 9, 2019

Copy link
Copy Markdown

There are several implementations of LeadingZeroCount in the stack, with differing or branch-heavy implementations.

  • This PR consolidates them into a central implementation that uses intrinsics & optimized software fallbacks.
  • Also fixes an issue in a related PR where explicit conversions to (IntPtr) was missing, causing some units to fail. Note the idiom used to convert from long to IntPtr inexpensively.
  • All BitOps methods pass units

cc @tannergooding

Comment threadsrc/System.Private.CoreLib/shared/System/Decimal.DecCalc.cs
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
@grant-dgrant-d changed the title Perf: BitOps.LeadingZeroCountPerf: Consolidate implementation of LeadingZeroCountFeb 9, 2019
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Char.cs
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@dotnet-bot

Copy link
Copy Markdown

Welcome to the dotnet/coreclr Perf help

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment PhraseAction
@dotnet-bot test this pleaseRe-run all legs. Use sparingly
@dotnet-bot test ci pleaseGenerates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot helpPrint this help message

The following jobs are launched by default for each PR against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test \QWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness

The following optional jobs are available in PRs against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test Windows_NT x64 illinkQueues Windows_NT x64 full_opt ryujit IlLink Tests
@dotnet-bot test linux perf flowQueues Linux Perf Test Flow
@dotnet-bot test Windows_NT x64 perfQueues Windows_NT x64 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 min_opts perfQueues Windows_NT x64 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 perfQueues Windows_NT x86 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 min_opts perfQueues Windows_NT x86 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 min_opts perf scenariosQueues Windows_NT x64 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 tiered ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 min_opts perf scenariosQueues Windows_NT x86 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 tiered ryujit Performance Scenarios Tests
@dotnet-bot test linux throughput flowQueues Linux arm Throughput Perf Test Flow
@dotnet-bot test linux throughput flowQueues Linux x64 Throughput Perf Test Flow
@dotnet-bot test Windows_NT x64 throughputQueues Windows_NT x64 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 nopgo throughputQueues Windows_NT x64 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts throughputQueues Windows_NT x64 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts nopgo throughputQueues Windows_NT x64 min_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 throughputQueues Windows_NT x86 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 nopgo throughputQueues Windows_NT x86 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts throughputQueues Windows_NT x86 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts nopgo throughputQueues Windows_NT x86 min_opt ryujit pgo CoreCLR Throughput Perf Tests

Have a nice day!

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks

@safern

Copy link
Copy Markdown
Member

@safern /azp commands works also for coreclr-ci? dotnet/corefx#35121 (comment)

The outerloop builds shouldn't since those are corefx specific, but the concept of everything else is the same.

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please
@dotnet-bot test Windows_NT x64 Release CoreFX Tests please
@dotnet-bot test Ubuntu x64 Checked Innerloop Build and Test (Jit - TieredCompilation=0) please

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@tannergooding
tannergooding merged commit eee8c24 into dotnet:masterFeb 13, 2019
@tannergooding

Copy link
Copy Markdown
Member

Thanks for the PR here @grant-d.

I'm fine with the two nits I had being looked at separately.

Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corefx that referenced this pull request Feb 13, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
@grant-d
grant-d deleted the grant-d.lzcnt branch February 13, 2019 22:21
@grant-d

Copy link
Copy Markdown
Author

Thanks @tannergooding, @jkotas and @davidfowl
Appreciate the help and pointers

stephentoub pushed a commit to dotnet/corefx that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit to dotnet/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
marek-safar pushed a commit to mono/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit that referenced this pull request Feb 15, 2019
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 15, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 26, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Commit migrated from dotnet/coreclr@eee8c24
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@grant-d@dotnet-bot@danmoseley@MarcoRossignoli@safern@tannergooding@davidfowl@omariom@jkotas
, '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('^' + ".*" + ' Perf: Consolidate implementation of LeadingZeroCount by grant-d · Pull Request #22497 · dotnet/coreclr · GitHub
Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Perf: Consolidate implementation of LeadingZeroCount - #22497

Merged
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt
Feb 13, 2019
Merged

Perf: Consolidate implementation of LeadingZeroCount#22497
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt

Conversation

@grant-d

@grant-dgrant-d commented Feb 9, 2019

Copy link
Copy Markdown

There are several implementations of LeadingZeroCount in the stack, with differing or branch-heavy implementations.

  • This PR consolidates them into a central implementation that uses intrinsics & optimized software fallbacks.
  • Also fixes an issue in a related PR where explicit conversions to (IntPtr) was missing, causing some units to fail. Note the idiom used to convert from long to IntPtr inexpensively.
  • All BitOps methods pass units

cc @tannergooding

Comment threadsrc/System.Private.CoreLib/shared/System/Decimal.DecCalc.cs
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
@grant-dgrant-d changed the title Perf: BitOps.LeadingZeroCountPerf: Consolidate implementation of LeadingZeroCountFeb 9, 2019
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Char.cs
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@dotnet-bot

Copy link
Copy Markdown

Welcome to the dotnet/coreclr Perf help

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment PhraseAction
@dotnet-bot test this pleaseRe-run all legs. Use sparingly
@dotnet-bot test ci pleaseGenerates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot helpPrint this help message

The following jobs are launched by default for each PR against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test \QWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness

The following optional jobs are available in PRs against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test Windows_NT x64 illinkQueues Windows_NT x64 full_opt ryujit IlLink Tests
@dotnet-bot test linux perf flowQueues Linux Perf Test Flow
@dotnet-bot test Windows_NT x64 perfQueues Windows_NT x64 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 min_opts perfQueues Windows_NT x64 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 perfQueues Windows_NT x86 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 min_opts perfQueues Windows_NT x86 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 min_opts perf scenariosQueues Windows_NT x64 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 tiered ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 min_opts perf scenariosQueues Windows_NT x86 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 tiered ryujit Performance Scenarios Tests
@dotnet-bot test linux throughput flowQueues Linux arm Throughput Perf Test Flow
@dotnet-bot test linux throughput flowQueues Linux x64 Throughput Perf Test Flow
@dotnet-bot test Windows_NT x64 throughputQueues Windows_NT x64 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 nopgo throughputQueues Windows_NT x64 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts throughputQueues Windows_NT x64 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts nopgo throughputQueues Windows_NT x64 min_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 throughputQueues Windows_NT x86 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 nopgo throughputQueues Windows_NT x86 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts throughputQueues Windows_NT x86 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts nopgo throughputQueues Windows_NT x86 min_opt ryujit pgo CoreCLR Throughput Perf Tests

Have a nice day!

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks

@safern

Copy link
Copy Markdown
Member

@safern /azp commands works also for coreclr-ci? dotnet/corefx#35121 (comment)

The outerloop builds shouldn't since those are corefx specific, but the concept of everything else is the same.

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please
@dotnet-bot test Windows_NT x64 Release CoreFX Tests please
@dotnet-bot test Ubuntu x64 Checked Innerloop Build and Test (Jit - TieredCompilation=0) please

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@tannergooding
tannergooding merged commit eee8c24 into dotnet:masterFeb 13, 2019
@tannergooding

Copy link
Copy Markdown
Member

Thanks for the PR here @grant-d.

I'm fine with the two nits I had being looked at separately.

Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corefx that referenced this pull request Feb 13, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
@grant-d
grant-d deleted the grant-d.lzcnt branch February 13, 2019 22:21
@grant-d

Copy link
Copy Markdown
Author

Thanks @tannergooding, @jkotas and @davidfowl
Appreciate the help and pointers

stephentoub pushed a commit to dotnet/corefx that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit to dotnet/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
marek-safar pushed a commit to mono/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit that referenced this pull request Feb 15, 2019
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 15, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 26, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Commit migrated from dotnet/coreclr@eee8c24
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@grant-d@dotnet-bot@danmoseley@MarcoRossignoli@safern@tannergooding@davidfowl@omariom@jkotas
, '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('^' + ".*" + ' Perf: Consolidate implementation of LeadingZeroCount by grant-d · Pull Request #22497 · dotnet/coreclr · GitHub
Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Perf: Consolidate implementation of LeadingZeroCount - #22497

Merged
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt
Feb 13, 2019
Merged

Perf: Consolidate implementation of LeadingZeroCount#22497
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt

Conversation

@grant-d

@grant-dgrant-d commented Feb 9, 2019

Copy link
Copy Markdown

There are several implementations of LeadingZeroCount in the stack, with differing or branch-heavy implementations.

  • This PR consolidates them into a central implementation that uses intrinsics & optimized software fallbacks.
  • Also fixes an issue in a related PR where explicit conversions to (IntPtr) was missing, causing some units to fail. Note the idiom used to convert from long to IntPtr inexpensively.
  • All BitOps methods pass units

cc @tannergooding

Comment threadsrc/System.Private.CoreLib/shared/System/Decimal.DecCalc.cs
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
@grant-dgrant-d changed the title Perf: BitOps.LeadingZeroCountPerf: Consolidate implementation of LeadingZeroCountFeb 9, 2019
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Char.cs
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@dotnet-bot

Copy link
Copy Markdown

Welcome to the dotnet/coreclr Perf help

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment PhraseAction
@dotnet-bot test this pleaseRe-run all legs. Use sparingly
@dotnet-bot test ci pleaseGenerates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot helpPrint this help message

The following jobs are launched by default for each PR against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test \QWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness

The following optional jobs are available in PRs against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test Windows_NT x64 illinkQueues Windows_NT x64 full_opt ryujit IlLink Tests
@dotnet-bot test linux perf flowQueues Linux Perf Test Flow
@dotnet-bot test Windows_NT x64 perfQueues Windows_NT x64 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 min_opts perfQueues Windows_NT x64 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 perfQueues Windows_NT x86 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 min_opts perfQueues Windows_NT x86 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 min_opts perf scenariosQueues Windows_NT x64 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 tiered ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 min_opts perf scenariosQueues Windows_NT x86 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 tiered ryujit Performance Scenarios Tests
@dotnet-bot test linux throughput flowQueues Linux arm Throughput Perf Test Flow
@dotnet-bot test linux throughput flowQueues Linux x64 Throughput Perf Test Flow
@dotnet-bot test Windows_NT x64 throughputQueues Windows_NT x64 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 nopgo throughputQueues Windows_NT x64 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts throughputQueues Windows_NT x64 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts nopgo throughputQueues Windows_NT x64 min_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 throughputQueues Windows_NT x86 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 nopgo throughputQueues Windows_NT x86 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts throughputQueues Windows_NT x86 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts nopgo throughputQueues Windows_NT x86 min_opt ryujit pgo CoreCLR Throughput Perf Tests

Have a nice day!

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks

@safern

Copy link
Copy Markdown
Member

@safern /azp commands works also for coreclr-ci? dotnet/corefx#35121 (comment)

The outerloop builds shouldn't since those are corefx specific, but the concept of everything else is the same.

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please
@dotnet-bot test Windows_NT x64 Release CoreFX Tests please
@dotnet-bot test Ubuntu x64 Checked Innerloop Build and Test (Jit - TieredCompilation=0) please

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@tannergooding
tannergooding merged commit eee8c24 into dotnet:masterFeb 13, 2019
@tannergooding

Copy link
Copy Markdown
Member

Thanks for the PR here @grant-d.

I'm fine with the two nits I had being looked at separately.

Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corefx that referenced this pull request Feb 13, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
@grant-d
grant-d deleted the grant-d.lzcnt branch February 13, 2019 22:21
@grant-d

Copy link
Copy Markdown
Author

Thanks @tannergooding, @jkotas and @davidfowl
Appreciate the help and pointers

stephentoub pushed a commit to dotnet/corefx that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit to dotnet/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
marek-safar pushed a commit to mono/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit that referenced this pull request Feb 15, 2019
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 15, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 26, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Commit migrated from dotnet/coreclr@eee8c24
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@grant-d@dotnet-bot@danmoseley@MarcoRossignoli@safern@tannergooding@davidfowl@omariom@jkotas
, '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" + ' Perf: Consolidate implementation of LeadingZeroCount by grant-d · Pull Request #22497 · dotnet/coreclr · GitHub
Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Perf: Consolidate implementation of LeadingZeroCount - #22497

Merged
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt
Feb 13, 2019
Merged

Perf: Consolidate implementation of LeadingZeroCount#22497
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt

Conversation

@grant-d

@grant-dgrant-d commented Feb 9, 2019

Copy link
Copy Markdown

There are several implementations of LeadingZeroCount in the stack, with differing or branch-heavy implementations.

  • This PR consolidates them into a central implementation that uses intrinsics & optimized software fallbacks.
  • Also fixes an issue in a related PR where explicit conversions to (IntPtr) was missing, causing some units to fail. Note the idiom used to convert from long to IntPtr inexpensively.
  • All BitOps methods pass units

cc @tannergooding

Comment threadsrc/System.Private.CoreLib/shared/System/Decimal.DecCalc.cs
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
@grant-dgrant-d changed the title Perf: BitOps.LeadingZeroCountPerf: Consolidate implementation of LeadingZeroCountFeb 9, 2019
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Char.cs
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@dotnet-bot

Copy link
Copy Markdown

Welcome to the dotnet/coreclr Perf help

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment PhraseAction
@dotnet-bot test this pleaseRe-run all legs. Use sparingly
@dotnet-bot test ci pleaseGenerates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot helpPrint this help message

The following jobs are launched by default for each PR against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test \QWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness

The following optional jobs are available in PRs against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test Windows_NT x64 illinkQueues Windows_NT x64 full_opt ryujit IlLink Tests
@dotnet-bot test linux perf flowQueues Linux Perf Test Flow
@dotnet-bot test Windows_NT x64 perfQueues Windows_NT x64 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 min_opts perfQueues Windows_NT x64 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 perfQueues Windows_NT x86 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 min_opts perfQueues Windows_NT x86 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 min_opts perf scenariosQueues Windows_NT x64 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 tiered ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 min_opts perf scenariosQueues Windows_NT x86 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 tiered ryujit Performance Scenarios Tests
@dotnet-bot test linux throughput flowQueues Linux arm Throughput Perf Test Flow
@dotnet-bot test linux throughput flowQueues Linux x64 Throughput Perf Test Flow
@dotnet-bot test Windows_NT x64 throughputQueues Windows_NT x64 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 nopgo throughputQueues Windows_NT x64 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts throughputQueues Windows_NT x64 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts nopgo throughputQueues Windows_NT x64 min_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 throughputQueues Windows_NT x86 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 nopgo throughputQueues Windows_NT x86 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts throughputQueues Windows_NT x86 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts nopgo throughputQueues Windows_NT x86 min_opt ryujit pgo CoreCLR Throughput Perf Tests

Have a nice day!

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks

@safern

Copy link
Copy Markdown
Member

@safern /azp commands works also for coreclr-ci? dotnet/corefx#35121 (comment)

The outerloop builds shouldn't since those are corefx specific, but the concept of everything else is the same.

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please
@dotnet-bot test Windows_NT x64 Release CoreFX Tests please
@dotnet-bot test Ubuntu x64 Checked Innerloop Build and Test (Jit - TieredCompilation=0) please

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@tannergooding
tannergooding merged commit eee8c24 into dotnet:masterFeb 13, 2019
@tannergooding

Copy link
Copy Markdown
Member

Thanks for the PR here @grant-d.

I'm fine with the two nits I had being looked at separately.

Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corefx that referenced this pull request Feb 13, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
@grant-d
grant-d deleted the grant-d.lzcnt branch February 13, 2019 22:21
@grant-d

Copy link
Copy Markdown
Author

Thanks @tannergooding, @jkotas and @davidfowl
Appreciate the help and pointers

stephentoub pushed a commit to dotnet/corefx that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit to dotnet/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
marek-safar pushed a commit to mono/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit that referenced this pull request Feb 15, 2019
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 15, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 26, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Commit migrated from dotnet/coreclr@eee8c24
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@grant-d@dotnet-bot@danmoseley@MarcoRossignoli@safern@tannergooding@davidfowl@omariom@jkotas
, '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('^' + ".*" + ' Perf: Consolidate implementation of LeadingZeroCount by grant-d · Pull Request #22497 · dotnet/coreclr · GitHub
Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Perf: Consolidate implementation of LeadingZeroCount - #22497

Merged
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt
Feb 13, 2019
Merged

Perf: Consolidate implementation of LeadingZeroCount#22497
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt

Conversation

@grant-d

@grant-dgrant-d commented Feb 9, 2019

Copy link
Copy Markdown

There are several implementations of LeadingZeroCount in the stack, with differing or branch-heavy implementations.

  • This PR consolidates them into a central implementation that uses intrinsics & optimized software fallbacks.
  • Also fixes an issue in a related PR where explicit conversions to (IntPtr) was missing, causing some units to fail. Note the idiom used to convert from long to IntPtr inexpensively.
  • All BitOps methods pass units

cc @tannergooding

Comment threadsrc/System.Private.CoreLib/shared/System/Decimal.DecCalc.cs
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
@grant-dgrant-d changed the title Perf: BitOps.LeadingZeroCountPerf: Consolidate implementation of LeadingZeroCountFeb 9, 2019
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Char.cs
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@dotnet-bot

Copy link
Copy Markdown

Welcome to the dotnet/coreclr Perf help

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment PhraseAction
@dotnet-bot test this pleaseRe-run all legs. Use sparingly
@dotnet-bot test ci pleaseGenerates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot helpPrint this help message

The following jobs are launched by default for each PR against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test \QWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness

The following optional jobs are available in PRs against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test Windows_NT x64 illinkQueues Windows_NT x64 full_opt ryujit IlLink Tests
@dotnet-bot test linux perf flowQueues Linux Perf Test Flow
@dotnet-bot test Windows_NT x64 perfQueues Windows_NT x64 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 min_opts perfQueues Windows_NT x64 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 perfQueues Windows_NT x86 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 min_opts perfQueues Windows_NT x86 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 min_opts perf scenariosQueues Windows_NT x64 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 tiered ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 min_opts perf scenariosQueues Windows_NT x86 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 tiered ryujit Performance Scenarios Tests
@dotnet-bot test linux throughput flowQueues Linux arm Throughput Perf Test Flow
@dotnet-bot test linux throughput flowQueues Linux x64 Throughput Perf Test Flow
@dotnet-bot test Windows_NT x64 throughputQueues Windows_NT x64 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 nopgo throughputQueues Windows_NT x64 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts throughputQueues Windows_NT x64 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts nopgo throughputQueues Windows_NT x64 min_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 throughputQueues Windows_NT x86 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 nopgo throughputQueues Windows_NT x86 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts throughputQueues Windows_NT x86 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts nopgo throughputQueues Windows_NT x86 min_opt ryujit pgo CoreCLR Throughput Perf Tests

Have a nice day!

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks

@safern

Copy link
Copy Markdown
Member

@safern /azp commands works also for coreclr-ci? dotnet/corefx#35121 (comment)

The outerloop builds shouldn't since those are corefx specific, but the concept of everything else is the same.

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please
@dotnet-bot test Windows_NT x64 Release CoreFX Tests please
@dotnet-bot test Ubuntu x64 Checked Innerloop Build and Test (Jit - TieredCompilation=0) please

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@tannergooding
tannergooding merged commit eee8c24 into dotnet:masterFeb 13, 2019
@tannergooding

Copy link
Copy Markdown
Member

Thanks for the PR here @grant-d.

I'm fine with the two nits I had being looked at separately.

Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corefx that referenced this pull request Feb 13, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
@grant-d
grant-d deleted the grant-d.lzcnt branch February 13, 2019 22:21
@grant-d

Copy link
Copy Markdown
Author

Thanks @tannergooding, @jkotas and @davidfowl
Appreciate the help and pointers

stephentoub pushed a commit to dotnet/corefx that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit to dotnet/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
marek-safar pushed a commit to mono/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit that referenced this pull request Feb 15, 2019
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 15, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 26, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Commit migrated from dotnet/coreclr@eee8c24
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@grant-d@dotnet-bot@danmoseley@MarcoRossignoli@safern@tannergooding@davidfowl@omariom@jkotas
, '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('^' + ".*" + ' Perf: Consolidate implementation of LeadingZeroCount by grant-d · Pull Request #22497 · dotnet/coreclr · GitHub
Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Perf: Consolidate implementation of LeadingZeroCount - #22497

Merged
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt
Feb 13, 2019
Merged

Perf: Consolidate implementation of LeadingZeroCount#22497
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt

Conversation

@grant-d

@grant-dgrant-d commented Feb 9, 2019

Copy link
Copy Markdown

There are several implementations of LeadingZeroCount in the stack, with differing or branch-heavy implementations.

  • This PR consolidates them into a central implementation that uses intrinsics & optimized software fallbacks.
  • Also fixes an issue in a related PR where explicit conversions to (IntPtr) was missing, causing some units to fail. Note the idiom used to convert from long to IntPtr inexpensively.
  • All BitOps methods pass units

cc @tannergooding

Comment threadsrc/System.Private.CoreLib/shared/System/Decimal.DecCalc.cs
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
@grant-dgrant-d changed the title Perf: BitOps.LeadingZeroCountPerf: Consolidate implementation of LeadingZeroCountFeb 9, 2019
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Char.cs
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@dotnet-bot

Copy link
Copy Markdown

Welcome to the dotnet/coreclr Perf help

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment PhraseAction
@dotnet-bot test this pleaseRe-run all legs. Use sparingly
@dotnet-bot test ci pleaseGenerates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot helpPrint this help message

The following jobs are launched by default for each PR against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test \QWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness

The following optional jobs are available in PRs against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test Windows_NT x64 illinkQueues Windows_NT x64 full_opt ryujit IlLink Tests
@dotnet-bot test linux perf flowQueues Linux Perf Test Flow
@dotnet-bot test Windows_NT x64 perfQueues Windows_NT x64 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 min_opts perfQueues Windows_NT x64 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 perfQueues Windows_NT x86 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 min_opts perfQueues Windows_NT x86 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 min_opts perf scenariosQueues Windows_NT x64 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 tiered ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 min_opts perf scenariosQueues Windows_NT x86 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 tiered ryujit Performance Scenarios Tests
@dotnet-bot test linux throughput flowQueues Linux arm Throughput Perf Test Flow
@dotnet-bot test linux throughput flowQueues Linux x64 Throughput Perf Test Flow
@dotnet-bot test Windows_NT x64 throughputQueues Windows_NT x64 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 nopgo throughputQueues Windows_NT x64 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts throughputQueues Windows_NT x64 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts nopgo throughputQueues Windows_NT x64 min_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 throughputQueues Windows_NT x86 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 nopgo throughputQueues Windows_NT x86 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts throughputQueues Windows_NT x86 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts nopgo throughputQueues Windows_NT x86 min_opt ryujit pgo CoreCLR Throughput Perf Tests

Have a nice day!

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks

@safern

Copy link
Copy Markdown
Member

@safern /azp commands works also for coreclr-ci? dotnet/corefx#35121 (comment)

The outerloop builds shouldn't since those are corefx specific, but the concept of everything else is the same.

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please
@dotnet-bot test Windows_NT x64 Release CoreFX Tests please
@dotnet-bot test Ubuntu x64 Checked Innerloop Build and Test (Jit - TieredCompilation=0) please

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@tannergooding
tannergooding merged commit eee8c24 into dotnet:masterFeb 13, 2019
@tannergooding

Copy link
Copy Markdown
Member

Thanks for the PR here @grant-d.

I'm fine with the two nits I had being looked at separately.

Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corefx that referenced this pull request Feb 13, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
@grant-d
grant-d deleted the grant-d.lzcnt branch February 13, 2019 22:21
@grant-d

Copy link
Copy Markdown
Author

Thanks @tannergooding, @jkotas and @davidfowl
Appreciate the help and pointers

stephentoub pushed a commit to dotnet/corefx that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit to dotnet/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
marek-safar pushed a commit to mono/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit that referenced this pull request Feb 15, 2019
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 15, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 26, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Commit migrated from dotnet/coreclr@eee8c24
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@grant-d@dotnet-bot@danmoseley@MarcoRossignoli@safern@tannergooding@davidfowl@omariom@jkotas
, '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); } })(); })(); Perf: Consolidate implementation of LeadingZeroCount by grant-d · Pull Request #22497 · dotnet/coreclr · GitHub
Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Perf: Consolidate implementation of LeadingZeroCount - #22497

Merged
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt
Feb 13, 2019
Merged

Perf: Consolidate implementation of LeadingZeroCount#22497
tannergooding merged 16 commits into
dotnet:masterfrom
grant-d:grant-d.lzcnt

Conversation

@grant-d

@grant-dgrant-d commented Feb 9, 2019

Copy link
Copy Markdown

There are several implementations of LeadingZeroCount in the stack, with differing or branch-heavy implementations.

  • This PR consolidates them into a central implementation that uses intrinsics & optimized software fallbacks.
  • Also fixes an issue in a related PR where explicit conversions to (IntPtr) was missing, causing some units to fail. Note the idiom used to convert from long to IntPtr inexpensively.
  • All BitOps methods pass units

cc @tannergooding

Comment threadsrc/System.Private.CoreLib/shared/System/Decimal.DecCalc.cs
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
@grant-dgrant-d changed the title Perf: BitOps.LeadingZeroCountPerf: Consolidate implementation of LeadingZeroCountFeb 9, 2019
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Char.cs
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/Number.BigInteger.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/SpanHelpers.Byte.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs Outdated
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@dotnet-bot

Copy link
Copy Markdown

Welcome to the dotnet/coreclr Perf help

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment PhraseAction
@dotnet-bot test this pleaseRe-run all legs. Use sparingly
@dotnet-bot test ci pleaseGenerates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot helpPrint this help message

The following jobs are launched by default for each PR against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test \QWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x64 min_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 full_opt ryujit CoreCLR Perf Tests Correctness
@dotnet-bot test \QWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness\EWindows_NT x86 min_opt ryujit CoreCLR Perf Tests Correctness

The following optional jobs are available in PRs against dotnet/coreclr:master.

Click to expand
Comment PhraseJob Launched
@dotnet-bot test Windows_NT x64 illinkQueues Windows_NT x64 full_opt ryujit IlLink Tests
@dotnet-bot test linux perf flowQueues Linux Perf Test Flow
@dotnet-bot test Windows_NT x64 perfQueues Windows_NT x64 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 min_opts perfQueues Windows_NT x64 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 perfQueues Windows_NT x86 full_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x86 min_opts perfQueues Windows_NT x86 min_opt ryujit CoreCLR Perf Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 min_opts perf scenariosQueues Windows_NT x64 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x64 perf scenariosQueues Windows_NT x64 tiered ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 full_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 min_opts perf scenariosQueues Windows_NT x86 min_opt ryujit Performance Scenarios Tests
@dotnet-bot test Windows_NT x86 perf scenariosQueues Windows_NT x86 tiered ryujit Performance Scenarios Tests
@dotnet-bot test linux throughput flowQueues Linux arm Throughput Perf Test Flow
@dotnet-bot test linux throughput flowQueues Linux x64 Throughput Perf Test Flow
@dotnet-bot test Windows_NT x64 throughputQueues Windows_NT x64 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 nopgo throughputQueues Windows_NT x64 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts throughputQueues Windows_NT x64 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x64 min_opts nopgo throughputQueues Windows_NT x64 min_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 throughputQueues Windows_NT x86 full_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 nopgo throughputQueues Windows_NT x86 full_opt ryujit pgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts throughputQueues Windows_NT x86 min_opt ryujit nopgo CoreCLR Throughput Perf Tests
@dotnet-bot test Windows_NT x86 min_opts nopgo throughputQueues Windows_NT x86 min_opt ryujit pgo CoreCLR Throughput Perf Tests

Have a nice day!

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks

@safern

Copy link
Copy Markdown
Member

@safern /azp commands works also for coreclr-ci? dotnet/corefx#35121 (comment)

The outerloop builds shouldn't since those are corefx specific, but the concept of everything else is the same.

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please
@dotnet-bot test Windows_NT x64 Release CoreFX Tests please
@dotnet-bot test Ubuntu x64 Checked Innerloop Build and Test (Jit - TieredCompilation=0) please

@grant-d

Copy link
Copy Markdown
Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test please

Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
Comment threadsrc/System.Private.CoreLib/shared/System/BitOps.cs
@tannergooding
tannergooding merged commit eee8c24 into dotnet:masterFeb 13, 2019
@tannergooding

Copy link
Copy Markdown
Member

Thanks for the PR here @grant-d.

I'm fine with the two nits I had being looked at separately.

Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corefx that referenced this pull request Feb 13, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
@grant-d
grant-d deleted the grant-d.lzcnt branch February 13, 2019 22:21
@grant-d

Copy link
Copy Markdown
Author

Thanks @tannergooding, @jkotas and @davidfowl
Appreciate the help and pointers

stephentoub pushed a commit to dotnet/corefx that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit to dotnet/corert that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
marek-safar pushed a commit to mono/mono that referenced this pull request Feb 14, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
jkotas pushed a commit that referenced this pull request Feb 15, 2019
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 15, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Dotnet-GitSync-Bot pushed a commit to Dotnet-GitSync-Bot/mono that referenced this pull request Feb 26, 2019
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…22497)
* Perf: BitOps.LeadingZeroCount
* CR fix
* CR fixes
* Optimization
* Revert
* Confirmed fix
* Simplify
* Return int
* Fixes
* Simplify
* CR fixes
* CR fixes
* Fix unit failure on Linux-musl x64 Debug
* CR fixes
* CR fixes
* Cleanup
Commit migrated from dotnet/coreclr@eee8c24
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@grant-d@dotnet-bot@danmoseley@MarcoRossignoli@safern@tannergooding@davidfowl@omariom@jkotas