Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JIT: Clean up gtCloneExpr #97411

Merged
merged 2 commits into from
Jan 25, 2024
Merged

Conversation

jakobbotsch
Copy link
Member

  • Remove its ability to replace locals by constants while cloning. Only loop unrolling uses this capability and it can be replaced by a simple visit over the tree after cloning, so that everyone else does not need to pay for it.
  • Remove its ability to add flags. This is only used by hoisting to add GTF_MAKE_CSE flag recursively to the cloned tree. I do not see any good reason not just to only put this on the root node.
  • Simplify how it propagates flags; simply copy them from the source node instead of having a separate gtUpdateNodeSideEffects call for the cloned tree. I do not see why the cloned version should have its flags updated like this when the original shouldn't.

A few diffs expected due to not marking hoisted clones with GTF_MAKE_CSE recursively, which sometimes allows us to optimize them away. Some other diffs from the removal of gtUpdateNodeSideEffects(copy) in gtCloneExpr, which can impact cases where we get our flag maintenance wrong (e.g. #13758).

- Remove its ability to replace locals by constants while cloning. Only
  loop unrolling uses this capability and it can be replaced by a simple
  visit over the tree after cloning, so that everyone else does not need
  to pay for it.
- Remove its ability to add flags. This is only used by hoisting to add
  `GTF_MAKE_CSE` flag recursively to the cloned tree. I do not see any
  good reason not just to only put this on the root node.
- Simplify how it propagates flags; simply copy them from the source
  node instead of having a separate `gtUpdateNodeSideEffects` call for
  the cloned tree. I do not see why the cloned version should have its
  flags updated like this when the original shouldn't.
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jan 23, 2024
@ghost ghost assigned jakobbotsch Jan 23, 2024
@ghost
Copy link

ghost commented Jan 23, 2024

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

Issue Details
  • Remove its ability to replace locals by constants while cloning. Only loop unrolling uses this capability and it can be replaced by a simple visit over the tree after cloning, so that everyone else does not need to pay for it.
  • Remove its ability to add flags. This is only used by hoisting to add GTF_MAKE_CSE flag recursively to the cloned tree. I do not see any good reason not just to only put this on the root node.
  • Simplify how it propagates flags; simply copy them from the source node instead of having a separate gtUpdateNodeSideEffects call for the cloned tree. I do not see why the cloned version should have its flags updated like this when the original shouldn't.

A few diffs expected due to not marking hoisted clones with GTF_MAKE_CSE recursively, which sometimes allows us to optimize them away. Some other diffs from the removal of gtUpdateNodeSideEffects(copy) in gtCloneExpr, which can impact cases where we get our flag maintenance wrong (e.g. #13758).

Author: jakobbotsch
Assignees: jakobbotsch
Labels:

area-CodeGen-coreclr

Milestone: -

@ryujit-bot
Copy link

Diff results for #97411

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,501,261 contexts (1,003,806 MinOpts, 1,497,455 FullOpts).

MISSED contexts: 3,956 (0.16%)

Overall (-664 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,579,780 +0
benchmarks.run_pgo.linux.arm64.checked.mch 80,916,176 -4
coreclr_tests.run.linux.arm64.checked.mch 509,788,568 -24
libraries.crossgen2.linux.arm64.checked.mch 55,736,420 -108
libraries.pmi.linux.arm64.checked.mch 75,995,180 -128
libraries_tests.run.linux.arm64.Release.mch 381,263,920 -300
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 162,531,076 -80
realworld.run.linux.arm64.checked.mch 15,906,972 -20
FullOpts (-664 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,276,772 +0
benchmarks.run_pgo.linux.arm64.checked.mch 55,979,716 -4
coreclr_tests.run.linux.arm64.checked.mch 160,563,512 -24
libraries.crossgen2.linux.arm64.checked.mch 55,734,784 -108
libraries.pmi.linux.arm64.checked.mch 75,875,196 -128
libraries_tests.run.linux.arm64.Release.mch 165,966,780 -300
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 149,049,864 -80
realworld.run.linux.arm64.checked.mch 15,321,604 -20

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,595,036 contexts (1,052,329 MinOpts, 1,542,707 FullOpts).

MISSED contexts: 3,599 (0.14%)

Overall (-1,262 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,736,868 +0
benchmarks.run_pgo.linux.x64.checked.mch 66,799,627 -16
coreclr_tests.run.linux.x64.checked.mch 458,907,683 -28
libraries.crossgen2.linux.x64.checked.mch 38,668,470 -218
libraries.pmi.linux.x64.checked.mch 59,972,922 -183
libraries_tests.run.linux.x64.Release.mch 330,797,007 -575
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 129,999,045 -203
realworld.run.linux.x64.checked.mch 13,194,305 -39
FullOpts (-1,262 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,470,075 +0
benchmarks.run_pgo.linux.x64.checked.mch 46,969,870 -16
coreclr_tests.run.linux.x64.checked.mch 132,349,548 -28
libraries.crossgen2.linux.x64.checked.mch 38,667,268 -218
libraries.pmi.linux.x64.checked.mch 59,860,052 -183
libraries_tests.run.linux.x64.Release.mch 146,407,486 -575
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 119,340,574 -203
realworld.run.linux.x64.checked.mch 12,805,199 -39

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,262,764 contexts (930,876 MinOpts, 1,331,888 FullOpts).

MISSED contexts: 3,201 (0.14%)

Overall (-672 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,180,928 +0
coreclr_tests.run.osx.arm64.checked.mch 485,345,676 -24
libraries.crossgen2.osx.arm64.checked.mch 55,620,496 -108
libraries.pmi.osx.arm64.checked.mch 79,959,756 -124
libraries_tests.run.osx.arm64.Release.mch 312,760,116 -316
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 160,789,980 -80
realworld.run.osx.arm64.checked.mch 15,071,744 -20
FullOpts (-672 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,180,392 +0
coreclr_tests.run.osx.arm64.checked.mch 153,039,220 -24
libraries.crossgen2.osx.arm64.checked.mch 55,618,868 -108
libraries.pmi.osx.arm64.checked.mch 79,838,628 -124
libraries_tests.run.osx.arm64.Release.mch 108,819,612 -316
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 147,652,452 -80
realworld.run.osx.arm64.checked.mch 14,503,340 -20

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,318,293 contexts (931,543 MinOpts, 1,386,750 FullOpts).

MISSED contexts: 2,601 (0.11%)

Overall (-616 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,964,124 +0
coreclr_tests.run.windows.arm64.checked.mch 495,343,752 -24
libraries.crossgen2.windows.arm64.checked.mch 58,963,136 -108
libraries.pmi.windows.arm64.checked.mch 79,568,032 -128
libraries_tests.run.windows.arm64.Release.mch 310,410,132 -256
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 169,004,112 -80
realworld.run.windows.arm64.checked.mch 15,891,296 -20
FullOpts (-616 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,963,588 +0
coreclr_tests.run.windows.arm64.checked.mch 156,252,224 -24
libraries.crossgen2.windows.arm64.checked.mch 58,961,500 -108
libraries.pmi.windows.arm64.checked.mch 79,448,048 -128
libraries_tests.run.windows.arm64.Release.mch 108,828,628 -256
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 155,866,648 -80
realworld.run.windows.arm64.checked.mch 15,322,872 -20

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,492,949 contexts (983,689 MinOpts, 1,509,260 FullOpts).

MISSED contexts: 3,862 (0.15%)

Overall (-2,177 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 41,788,751 -94
benchmarks.run.windows.x64.checked.mch 8,749,669 +0
benchmarks.run_pgo.windows.x64.checked.mch 34,741,684 -16
coreclr_tests.run.windows.x64.checked.mch 392,888,034 -21
libraries.crossgen2.windows.x64.checked.mch 39,442,225 -191
libraries.pmi.windows.x64.checked.mch 61,196,803 -143
libraries_tests.run.windows.x64.Release.mch 279,865,544 -1,527
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 133,434,685 -134
realworld.run.windows.x64.checked.mch 14,170,666 -51
FullOpts (-2,177 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 27,130,026 -94
benchmarks.run.windows.x64.checked.mch 8,749,308 +0
benchmarks.run_pgo.windows.x64.checked.mch 20,506,707 -16
coreclr_tests.run.windows.x64.checked.mch 119,345,042 -21
libraries.crossgen2.windows.x64.checked.mch 39,441,036 -191
libraries.pmi.windows.x64.checked.mch 61,083,284 -143
libraries_tests.run.windows.x64.Release.mch 101,497,228 -1,527
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 123,011,315 -134
realworld.run.windows.x64.checked.mch 13,780,961 -51

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,237,703 contexts (827,812 MinOpts, 1,409,891 FullOpts).

MISSED contexts: 74,543 (3.22%)

Overall (-328 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,304,700 -4
benchmarks.run_pgo.linux.arm.checked.mch 60,239,142 -4
benchmarks.run_tiered.linux.arm.checked.mch 22,645,116 -4
coreclr_tests.run.linux.arm.checked.mch 321,624,414 -24
libraries.crossgen2.linux.arm.checked.mch 35,174,564 -104
libraries.pmi.linux.arm.checked.mch 49,554,232 -98
libraries_tests.run.linux.arm.Release.mch 241,872,272 -40
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 93,042,524 -50
realworld.run.linux.arm.checked.mch 13,613,090 +0
FullOpts (-328 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,915,444 -4
benchmarks.run_pgo.linux.arm.checked.mch 49,441,540 -4
benchmarks.run_tiered.linux.arm.checked.mch 13,537,960 -4
coreclr_tests.run.linux.arm.checked.mch 108,894,280 -24
libraries.crossgen2.linux.arm.checked.mch 35,173,334 -104
libraries.pmi.linux.arm.checked.mch 49,447,728 -98
libraries_tests.run.linux.arm.Release.mch 119,869,328 -40
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 82,958,704 -50
realworld.run.linux.arm.checked.mch 13,163,144 +0

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,298,783 contexts (841,817 MinOpts, 1,456,966 FullOpts).

MISSED contexts: base: 2,552 (0.11%), diff: 2,555 (0.11%)

Overall (-1,172 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,118,376 -4
benchmarks.run_pgo.windows.x86.checked.mch 43,731,319 -17
benchmarks.run_tiered.windows.x86.checked.mch 9,520,854 -4
coreclr_tests.run.windows.x86.checked.mch 308,762,969 -8
libraries.crossgen2.windows.x86.checked.mch 31,656,762 -97
libraries.pmi.windows.x86.checked.mch 48,900,145 -153
libraries_tests.run.windows.x86.Release.mch 185,428,227 -744
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 102,142,025 -92
realworld.run.windows.x86.checked.mch 11,369,042 -53
FullOpts (-1,172 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,118,097 -4
benchmarks.run_pgo.windows.x86.checked.mch 37,101,829 -17
benchmarks.run_tiered.windows.x86.checked.mch 5,251,045 -4
coreclr_tests.run.windows.x86.checked.mch 107,091,200 -8
libraries.crossgen2.windows.x86.checked.mch 31,655,705 -97
libraries.pmi.windows.x86.checked.mch 48,804,831 -153
libraries_tests.run.windows.x86.Release.mch 87,096,720 -744
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 93,472,233 -92
realworld.run.windows.x86.checked.mch 11,073,342 -53

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.27% to -0.11%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.18%
benchmarks.run_pgo.linux.arm64.checked.mch -0.16%
benchmarks.run_tiered.linux.arm64.checked.mch -0.14%
coreclr_tests.run.linux.arm64.checked.mch -0.15%
libraries.crossgen2.linux.arm64.checked.mch -0.11%
libraries.pmi.linux.arm64.checked.mch -0.15%
libraries_tests.run.linux.arm64.Release.mch -0.17%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.18%
realworld.run.linux.arm64.checked.mch -0.15%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.27%
MinOpts (-0.10% to -0.02%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.02%
benchmarks.run_pgo.linux.arm64.checked.mch -0.10%
benchmarks.run_tiered.linux.arm64.checked.mch -0.10%
coreclr_tests.run.linux.arm64.checked.mch -0.08%
libraries.crossgen2.linux.arm64.checked.mch -0.02%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.04%
realworld.run.linux.arm64.checked.mch -0.05%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.03%
FullOpts (-0.27% to -0.11%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.18%
benchmarks.run_pgo.linux.arm64.checked.mch -0.17%
benchmarks.run_tiered.linux.arm64.checked.mch -0.19%
coreclr_tests.run.linux.arm64.checked.mch -0.19%
libraries.crossgen2.linux.arm64.checked.mch -0.11%
libraries.pmi.linux.arm64.checked.mch -0.15%
libraries_tests.run.linux.arm64.Release.mch -0.20%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.18%
realworld.run.linux.arm64.checked.mch -0.15%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.27%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.24% to -0.12%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.18%
benchmarks.run_pgo.linux.x64.checked.mch -0.17%
benchmarks.run_tiered.linux.x64.checked.mch -0.16%
coreclr_tests.run.linux.x64.checked.mch -0.16%
libraries.crossgen2.linux.x64.checked.mch -0.12%
libraries.pmi.linux.x64.checked.mch -0.15%
libraries_tests.run.linux.x64.Release.mch -0.18%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.19%
realworld.run.linux.x64.checked.mch -0.15%
smoke_tests.nativeaot.linux.x64.checked.mch -0.24%
MinOpts (-0.12% to -0.02%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.02%
benchmarks.run_pgo.linux.x64.checked.mch -0.11%
benchmarks.run_tiered.linux.x64.checked.mch -0.12%
coreclr_tests.run.linux.x64.checked.mch -0.09%
libraries.crossgen2.linux.x64.checked.mch -0.02%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.05%
realworld.run.linux.x64.checked.mch -0.07%
smoke_tests.nativeaot.linux.x64.checked.mch -0.04%
FullOpts (-0.24% to -0.12%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.18%
benchmarks.run_pgo.linux.x64.checked.mch -0.17%
benchmarks.run_tiered.linux.x64.checked.mch -0.20%
coreclr_tests.run.linux.x64.checked.mch -0.21%
libraries.crossgen2.linux.x64.checked.mch -0.12%
libraries.pmi.linux.x64.checked.mch -0.15%
libraries_tests.run.linux.x64.Release.mch -0.20%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.19%
realworld.run.linux.x64.checked.mch -0.15%
smoke_tests.nativeaot.linux.x64.checked.mch -0.24%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.18% to -0.11%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.18%
benchmarks.run_pgo.osx.arm64.checked.mch -0.18%
benchmarks.run_tiered.osx.arm64.checked.mch -0.17%
coreclr_tests.run.osx.arm64.checked.mch -0.14%
libraries.crossgen2.osx.arm64.checked.mch -0.11%
libraries.pmi.osx.arm64.checked.mch -0.15%
libraries_tests.run.osx.arm64.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.18%
realworld.run.osx.arm64.checked.mch -0.15%
MinOpts (-0.13% to -0.02%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.05%
benchmarks.run_pgo.osx.arm64.checked.mch -0.11%
benchmarks.run_tiered.osx.arm64.checked.mch -0.13%
coreclr_tests.run.osx.arm64.checked.mch -0.08%
libraries.crossgen2.osx.arm64.checked.mch -0.02%
libraries.pmi.osx.arm64.checked.mch -0.02%
libraries_tests.run.osx.arm64.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.04%
realworld.run.osx.arm64.checked.mch -0.06%
FullOpts (-0.20% to -0.11%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.18%
benchmarks.run_pgo.osx.arm64.checked.mch -0.20%
benchmarks.run_tiered.osx.arm64.checked.mch -0.20%
coreclr_tests.run.osx.arm64.checked.mch -0.20%
libraries.crossgen2.osx.arm64.checked.mch -0.11%
libraries.pmi.osx.arm64.checked.mch -0.15%
libraries_tests.run.osx.arm64.Release.mch -0.19%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.19%
realworld.run.osx.arm64.checked.mch -0.15%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.25% to -0.11%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.19%
benchmarks.run_pgo.windows.arm64.checked.mch -0.17%
benchmarks.run_tiered.windows.arm64.checked.mch -0.17%
coreclr_tests.run.windows.arm64.checked.mch -0.14%
libraries.crossgen2.windows.arm64.checked.mch -0.11%
libraries.pmi.windows.arm64.checked.mch -0.15%
libraries_tests.run.windows.arm64.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.18%
realworld.run.windows.arm64.checked.mch -0.15%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.25%
MinOpts (-0.13% to -0.02%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.05%
benchmarks.run_pgo.windows.arm64.checked.mch -0.12%
benchmarks.run_tiered.windows.arm64.checked.mch -0.13%
coreclr_tests.run.windows.arm64.checked.mch -0.07%
libraries.crossgen2.windows.arm64.checked.mch -0.02%
libraries.pmi.windows.arm64.checked.mch -0.02%
libraries_tests.run.windows.arm64.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.04%
realworld.run.windows.arm64.checked.mch -0.05%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.03%
FullOpts (-0.25% to -0.11%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.19%
benchmarks.run_pgo.windows.arm64.checked.mch -0.18%
benchmarks.run_tiered.windows.arm64.checked.mch -0.20%
coreclr_tests.run.windows.arm64.checked.mch -0.19%
libraries.crossgen2.windows.arm64.checked.mch -0.11%
libraries.pmi.windows.arm64.checked.mch -0.15%
libraries_tests.run.windows.arm64.Release.mch -0.19%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.18%
realworld.run.windows.arm64.checked.mch -0.15%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.25%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-0.23% to -0.13%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.18%
benchmarks.run.windows.x64.checked.mch -0.20%
benchmarks.run_pgo.windows.x64.checked.mch -0.18%
benchmarks.run_tiered.windows.x64.checked.mch -0.18%
coreclr_tests.run.windows.x64.checked.mch -0.16%
libraries.crossgen2.windows.x64.checked.mch -0.13%
libraries.pmi.windows.x64.checked.mch -0.16%
libraries_tests.run.windows.x64.Release.mch -0.17%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.19%
realworld.run.windows.x64.checked.mch -0.15%
smoke_tests.nativeaot.windows.x64.checked.mch -0.23%
MinOpts (-0.15% to -0.02%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.12%
benchmarks.run.windows.x64.checked.mch -0.02%
benchmarks.run_pgo.windows.x64.checked.mch -0.14%
benchmarks.run_tiered.windows.x64.checked.mch -0.15%
coreclr_tests.run.windows.x64.checked.mch -0.09%
libraries.crossgen2.windows.x64.checked.mch -0.02%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.05%
realworld.run.windows.x64.checked.mch -0.08%
smoke_tests.nativeaot.windows.x64.checked.mch -0.04%
FullOpts (-0.23% to -0.13%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.19%
benchmarks.run.windows.x64.checked.mch -0.20%
benchmarks.run_pgo.windows.x64.checked.mch -0.18%
benchmarks.run_tiered.windows.x64.checked.mch -0.20%
coreclr_tests.run.windows.x64.checked.mch -0.21%
libraries.crossgen2.windows.x64.checked.mch -0.13%
libraries.pmi.windows.x64.checked.mch -0.16%
libraries_tests.run.windows.x64.Release.mch -0.20%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.20%
realworld.run.windows.x64.checked.mch -0.15%
smoke_tests.nativeaot.windows.x64.checked.mch -0.23%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.19% to -0.13%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -0.19%
benchmarks.run_pgo.linux.arm.checked.mch -0.17%
benchmarks.run_tiered.linux.arm.checked.mch -0.18%
coreclr_tests.run.linux.arm.checked.mch -0.17%
libraries.crossgen2.linux.arm.checked.mch -0.13%
libraries.pmi.linux.arm.checked.mch -0.17%
libraries_tests.run.linux.arm.Release.mch -0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.19%
realworld.run.linux.arm.checked.mch -0.18%
MinOpts (-0.14% to -0.03%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -0.03%
benchmarks.run_pgo.linux.arm.checked.mch -0.13%
benchmarks.run_tiered.linux.arm.checked.mch -0.14%
coreclr_tests.run.linux.arm.checked.mch -0.10%
libraries.crossgen2.linux.arm.checked.mch -0.03%
libraries.pmi.linux.arm.checked.mch -0.03%
libraries_tests.run.linux.arm.Release.mch -0.09%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.05%
realworld.run.linux.arm.checked.mch -0.06%
FullOpts (-0.22% to -0.13%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -0.19%
benchmarks.run_pgo.linux.arm.checked.mch -0.18%
benchmarks.run_tiered.linux.arm.checked.mch -0.19%
coreclr_tests.run.linux.arm.checked.mch -0.22%
libraries.crossgen2.linux.arm.checked.mch -0.13%
libraries.pmi.linux.arm.checked.mch -0.17%
libraries_tests.run.linux.arm.Release.mch -0.18%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.19%
realworld.run.linux.arm.checked.mch -0.18%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.22% to -0.14%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.21%
benchmarks.run_pgo.windows.x86.checked.mch -0.17%
benchmarks.run_tiered.windows.x86.checked.mch -0.21%
coreclr_tests.run.windows.x86.checked.mch -0.21%
libraries.crossgen2.windows.x86.checked.mch -0.14%
libraries.pmi.windows.x86.checked.mch -0.18%
libraries_tests.run.windows.x86.Release.mch -0.18%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.22%
realworld.run.windows.x86.checked.mch -0.17%
MinOpts (-0.20% to -0.03%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.03%
benchmarks.run_pgo.windows.x86.checked.mch -0.18%
benchmarks.run_tiered.windows.x86.checked.mch -0.20%
coreclr_tests.run.windows.x86.checked.mch -0.12%
libraries.crossgen2.windows.x86.checked.mch -0.03%
libraries.pmi.windows.x86.checked.mch -0.04%
libraries_tests.run.windows.x86.Release.mch -0.12%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.07%
realworld.run.windows.x86.checked.mch -0.11%
FullOpts (-0.26% to -0.14%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.21%
benchmarks.run_pgo.windows.x86.checked.mch -0.17%
benchmarks.run_tiered.windows.x86.checked.mch -0.21%
coreclr_tests.run.windows.x86.checked.mch -0.26%
libraries.crossgen2.windows.x86.checked.mch -0.14%
libraries.pmi.windows.x86.checked.mch -0.18%
libraries_tests.run.windows.x86.Release.mch -0.19%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.22%
realworld.run.windows.x86.checked.mch -0.17%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.26% to -0.11%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch -0.15%
realworld.run.linux.arm64.checked.mch -0.15%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.17%
benchmarks.run_pgo.linux.arm64.checked.mch -0.15%
benchmarks.run_tiered.linux.arm64.checked.mch -0.13%
coreclr_tests.run.linux.arm64.checked.mch -0.13%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%
libraries.crossgen2.linux.arm64.checked.mch -0.11%
libraries_tests.run.linux.arm64.Release.mch -0.16%
benchmarks.run.linux.arm64.checked.mch -0.17%
MinOpts (-0.08% to 0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.03%
benchmarks.run_pgo.linux.arm64.checked.mch -0.08%
benchmarks.run_tiered.linux.arm64.checked.mch -0.08%
coreclr_tests.run.linux.arm64.checked.mch -0.07%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.06%
FullOpts (-0.26% to -0.11%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch -0.15%
realworld.run.linux.arm64.checked.mch -0.15%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.18%
benchmarks.run_pgo.linux.arm64.checked.mch -0.16%
benchmarks.run_tiered.linux.arm64.checked.mch -0.18%
coreclr_tests.run.linux.arm64.checked.mch -0.18%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%
libraries.crossgen2.linux.arm64.checked.mch -0.11%
libraries_tests.run.linux.arm64.Release.mch -0.19%
benchmarks.run.linux.arm64.checked.mch -0.17%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.23% to -0.11%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch -0.14%
realworld.run.linux.x64.checked.mch -0.15%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.18%
benchmarks.run_pgo.linux.x64.checked.mch -0.16%
libraries.crossgen2.linux.x64.checked.mch -0.11%
libraries_tests.run.linux.x64.Release.mch -0.17%
smoke_tests.nativeaot.linux.x64.checked.mch -0.23%
benchmarks.run.linux.x64.checked.mch -0.17%
benchmarks.run_tiered.linux.x64.checked.mch -0.15%
libraries.pmi.linux.x64.checked.mch -0.15%
MinOpts (-0.10% to 0.00%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch -0.07%
realworld.run.linux.x64.checked.mch -0.05%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.03%
benchmarks.run_pgo.linux.x64.checked.mch -0.09%
libraries.crossgen2.linux.x64.checked.mch -0.01%
libraries_tests.run.linux.x64.Release.mch -0.07%
benchmarks.run_tiered.linux.x64.checked.mch -0.10%
FullOpts (-0.23% to -0.11%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch -0.20%
realworld.run.linux.x64.checked.mch -0.15%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.18%
benchmarks.run_pgo.linux.x64.checked.mch -0.17%
libraries.crossgen2.linux.x64.checked.mch -0.11%
libraries_tests.run.linux.x64.Release.mch -0.20%
smoke_tests.nativeaot.linux.x64.checked.mch -0.23%
benchmarks.run.linux.x64.checked.mch -0.18%
benchmarks.run_tiered.linux.x64.checked.mch -0.19%
libraries.pmi.linux.x64.checked.mch -0.15%

Details here


@jakobbotsch
Copy link
Member Author

/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress, Fuzzlyn

Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@jakobbotsch
Copy link
Member Author

jakobbotsch commented Jan 24, 2024

cc @dotnet/jit-contrib PTAL @EgorBo, maybe @AndyAyersMS too since you've been looking at GTF_MAKE_CSE recently.

Should be ready pending CI.

Diffs. Some from the GTF_MAKE_CSE change, which allows some nested trees to be removed by assertion prop now (previously gtNodeHasSideEffects would return true for them). Some other diffs because of the removal of the gtUpdateNodeSideEffects call, as mentioned above.

@jakobbotsch jakobbotsch marked this pull request as ready for review January 24, 2024 16:36
// This is used to replace the loop iterator with the constant value when
// unrolling.
//
void Compiler::optReplaceScalarUsesWithConst(BasicBlock* block, unsigned lclNum, ssize_t cnsVal)
Copy link
Member

Choose a reason for hiding this comment

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

I am not familair with the existing logic - can you explain why it's fine to do propagation like this? can the locals be address exposed?

Copy link
Member Author

Choose a reason for hiding this comment

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

FlowGraphNaturalLoop::AnalyzeIteration checks for this (it guarantees that the iterator local is only defined once within the loop and that the loop invariant is always true).

Copy link
Member

@EgorBo EgorBo left a comment

Choose a reason for hiding this comment

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

LGTM otherwise

@ryujit-bot
Copy link

Diff results for #97411

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,501,157 contexts (1,003,806 MinOpts, 1,497,351 FullOpts).

MISSED contexts: 4,060 (0.16%)

Overall (-1,372 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,577,120 +0
benchmarks.run_pgo.linux.arm64.checked.mch 81,135,316 +8
coreclr_tests.run.linux.arm64.checked.mch 509,824,836 -60
libraries.crossgen2.linux.arm64.checked.mch 55,738,036 -108
libraries.pmi.linux.arm64.checked.mch 76,022,852 -376
libraries_tests.run.linux.arm64.Release.mch 381,450,404 -508
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 162,656,488 -264
realworld.run.linux.arm64.checked.mch 15,906,904 -64
FullOpts (-1,372 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,274,112 +0
benchmarks.run_pgo.linux.arm64.checked.mch 56,198,856 +8
coreclr_tests.run.linux.arm64.checked.mch 160,599,780 -60
libraries.crossgen2.linux.arm64.checked.mch 55,736,400 -108
libraries.pmi.linux.arm64.checked.mch 75,902,868 -376
libraries_tests.run.linux.arm64.Release.mch 166,153,264 -508
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 149,175,276 -264
realworld.run.linux.arm64.checked.mch 15,321,536 -64

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,595,007 contexts (1,052,329 MinOpts, 1,542,678 FullOpts).

MISSED contexts: 3,628 (0.14%)

Overall (-2,033 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,735,124 +0
benchmarks.run_pgo.linux.x64.checked.mch 68,635,056 -16
coreclr_tests.run.linux.x64.checked.mch 459,551,078 -50
libraries.crossgen2.linux.x64.checked.mch 38,670,232 -218
libraries.pmi.linux.x64.checked.mch 60,144,132 -460
libraries_tests.run.linux.x64.Release.mch 333,558,929 -757
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 130,468,363 -440
realworld.run.linux.x64.checked.mch 13,194,603 -92
FullOpts (-2,033 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,468,331 +0
benchmarks.run_pgo.linux.x64.checked.mch 48,805,299 -16
coreclr_tests.run.linux.x64.checked.mch 132,992,943 -50
libraries.crossgen2.linux.x64.checked.mch 38,669,030 -218
libraries.pmi.linux.x64.checked.mch 60,031,262 -460
libraries_tests.run.linux.x64.Release.mch 149,169,408 -757
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 119,809,892 -440
realworld.run.linux.x64.checked.mch 12,805,497 -92

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,262,709 contexts (930,876 MinOpts, 1,331,833 FullOpts).

MISSED contexts: 3,256 (0.14%)

Overall (-1,300 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,178,360 -24
coreclr_tests.run.osx.arm64.checked.mch 485,381,240 -60
libraries.crossgen2.osx.arm64.checked.mch 55,622,104 -108
libraries.pmi.osx.arm64.checked.mch 79,955,476 -348
libraries_tests.run.osx.arm64.Release.mch 312,903,680 -432
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 160,911,076 -264
realworld.run.osx.arm64.checked.mch 15,072,368 -64
FullOpts (-1,300 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,177,824 -24
coreclr_tests.run.osx.arm64.checked.mch 153,074,784 -60
libraries.crossgen2.osx.arm64.checked.mch 55,620,476 -108
libraries.pmi.osx.arm64.checked.mch 79,834,348 -348
libraries_tests.run.osx.arm64.Release.mch 108,963,176 -432
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 147,773,548 -264
realworld.run.osx.arm64.checked.mch 14,503,964 -64

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,318,207 contexts (931,543 MinOpts, 1,386,664 FullOpts).

MISSED contexts: 2,687 (0.12%)

Overall (-1,208 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,961,236 -24
coreclr_tests.run.windows.arm64.checked.mch 495,372,096 -60
libraries.crossgen2.windows.arm64.checked.mch 58,964,780 -108
libraries.pmi.windows.arm64.checked.mch 79,594,724 -376
libraries_tests.run.windows.arm64.Release.mch 310,511,308 -312
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 169,134,348 -264
realworld.run.windows.arm64.checked.mch 15,891,116 -64
FullOpts (-1,208 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,960,700 -24
coreclr_tests.run.windows.arm64.checked.mch 156,280,568 -60
libraries.crossgen2.windows.arm64.checked.mch 58,963,144 -108
libraries.pmi.windows.arm64.checked.mch 79,474,740 -376
libraries_tests.run.windows.arm64.Release.mch 108,929,804 -312
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 155,996,884 -264
realworld.run.windows.arm64.checked.mch 15,322,692 -64

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,492,912 contexts (983,689 MinOpts, 1,509,223 FullOpts).

MISSED contexts: 3,899 (0.16%)

Overall (-3,190 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 42,179,557 -94
benchmarks.run.windows.x64.checked.mch 8,747,570 +0
benchmarks.run_pgo.windows.x64.checked.mch 35,391,293 -16
coreclr_tests.run.windows.x64.checked.mch 393,404,923 -43
libraries.crossgen2.windows.x64.checked.mch 39,443,922 -191
libraries.pmi.windows.x64.checked.mch 61,389,190 -389
libraries_tests.run.windows.x64.Release.mch 281,642,309 -2,032
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 133,913,806 -324
realworld.run.windows.x64.checked.mch 14,170,687 -101
FullOpts (-3,190 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 27,520,832 -94
benchmarks.run.windows.x64.checked.mch 8,747,209 +0
benchmarks.run_pgo.windows.x64.checked.mch 21,156,316 -16
coreclr_tests.run.windows.x64.checked.mch 119,861,931 -43
libraries.crossgen2.windows.x64.checked.mch 39,442,733 -191
libraries.pmi.windows.x64.checked.mch 61,275,671 -389
libraries_tests.run.windows.x64.Release.mch 103,273,993 -2,032
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 123,490,436 -324
realworld.run.windows.x64.checked.mch 13,780,982 -101

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,237,690 contexts (827,812 MinOpts, 1,409,878 FullOpts).

MISSED contexts: 74,588 (3.23%)

Overall (-724 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,303,134 -16
benchmarks.run_pgo.linux.arm.checked.mch 61,262,128 -4
benchmarks.run_tiered.linux.arm.checked.mch 22,643,448 -16
coreclr_tests.run.linux.arm.checked.mch 321,791,116 -56
libraries.crossgen2.linux.arm.checked.mch 35,175,262 -104
libraries.pmi.linux.arm.checked.mch 49,615,946 -214
libraries_tests.run.linux.arm.Release.mch 242,762,120 -140
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 93,201,612 -150
realworld.run.linux.arm.checked.mch 13,613,446 -24
FullOpts (-724 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,913,878 -16
benchmarks.run_pgo.linux.arm.checked.mch 50,464,526 -4
benchmarks.run_tiered.linux.arm.checked.mch 13,536,292 -16
coreclr_tests.run.linux.arm.checked.mch 109,060,982 -56
libraries.crossgen2.linux.arm.checked.mch 35,174,032 -104
libraries.pmi.linux.arm.checked.mch 49,509,442 -214
libraries_tests.run.linux.arm.Release.mch 120,759,176 -140
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 83,117,792 -150
realworld.run.linux.arm.checked.mch 13,163,500 -24

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,296,274 contexts (841,817 MinOpts, 1,454,457 FullOpts).

MISSED contexts: base: 5,093 (0.22%), diff: 5,096 (0.22%)

Overall (-1,264 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,107,453 -4
benchmarks.run_pgo.windows.x86.checked.mch 45,222,512 -17
benchmarks.run_tiered.windows.x86.checked.mch 9,511,426 -4
coreclr_tests.run.windows.x86.checked.mch 309,179,129 -8
libraries.crossgen2.windows.x86.checked.mch 31,628,298 -97
libraries.pmi.windows.x86.checked.mch 48,827,232 -192
libraries_tests.run.windows.x86.Release.mch 185,843,933 -765
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 102,198,175 -124
realworld.run.windows.x86.checked.mch 11,363,356 -53
FullOpts (-1,264 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,107,174 -4
benchmarks.run_pgo.windows.x86.checked.mch 38,593,022 -17
benchmarks.run_tiered.windows.x86.checked.mch 5,241,617 -4
coreclr_tests.run.windows.x86.checked.mch 107,507,360 -8
libraries.crossgen2.windows.x86.checked.mch 31,627,241 -97
libraries.pmi.windows.x86.checked.mch 48,731,918 -192
libraries_tests.run.windows.x86.Release.mch 87,512,426 -765
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 93,528,383 -124
realworld.run.windows.x86.checked.mch 11,067,656 -53

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.26% to -0.11%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.17%
benchmarks.run_pgo.linux.arm64.checked.mch -0.17%
benchmarks.run_tiered.linux.arm64.checked.mch -0.13%
coreclr_tests.run.linux.arm64.checked.mch -0.14%
libraries.crossgen2.linux.arm64.checked.mch -0.11%
libraries.pmi.linux.arm64.checked.mch -0.15%
libraries_tests.run.linux.arm64.Release.mch -0.17%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.18%
realworld.run.linux.arm64.checked.mch -0.15%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%
MinOpts (-0.10% to -0.02%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.02%
benchmarks.run_pgo.linux.arm64.checked.mch -0.09%
benchmarks.run_tiered.linux.arm64.checked.mch -0.10%
coreclr_tests.run.linux.arm64.checked.mch -0.08%
libraries.crossgen2.linux.arm64.checked.mch -0.02%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.04%
realworld.run.linux.arm64.checked.mch -0.05%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.03%
FullOpts (-0.26% to -0.11%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.18%
benchmarks.run_pgo.linux.arm64.checked.mch -0.18%
benchmarks.run_tiered.linux.arm64.checked.mch -0.18%
coreclr_tests.run.linux.arm64.checked.mch -0.18%
libraries.crossgen2.linux.arm64.checked.mch -0.11%
libraries.pmi.linux.arm64.checked.mch -0.15%
libraries_tests.run.linux.arm64.Release.mch -0.20%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.18%
realworld.run.linux.arm64.checked.mch -0.15%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.26%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.23% to -0.12%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.18%
benchmarks.run_pgo.linux.x64.checked.mch -0.18%
benchmarks.run_tiered.linux.x64.checked.mch -0.16%
coreclr_tests.run.linux.x64.checked.mch -0.15%
libraries.crossgen2.linux.x64.checked.mch -0.12%
libraries.pmi.linux.x64.checked.mch -0.15%
libraries_tests.run.linux.x64.Release.mch -0.18%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.19%
realworld.run.linux.x64.checked.mch -0.15%
smoke_tests.nativeaot.linux.x64.checked.mch -0.23%
MinOpts (-0.12% to -0.02%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.02%
benchmarks.run_pgo.linux.x64.checked.mch -0.11%
benchmarks.run_tiered.linux.x64.checked.mch -0.12%
coreclr_tests.run.linux.x64.checked.mch -0.09%
libraries.crossgen2.linux.x64.checked.mch -0.02%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.05%
realworld.run.linux.x64.checked.mch -0.07%
smoke_tests.nativeaot.linux.x64.checked.mch -0.04%
FullOpts (-0.23% to -0.12%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.18%
benchmarks.run_pgo.linux.x64.checked.mch -0.19%
benchmarks.run_tiered.linux.x64.checked.mch -0.19%
coreclr_tests.run.linux.x64.checked.mch -0.20%
libraries.crossgen2.linux.x64.checked.mch -0.12%
libraries.pmi.linux.x64.checked.mch -0.15%
libraries_tests.run.linux.x64.Release.mch -0.21%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.19%
realworld.run.linux.x64.checked.mch -0.15%
smoke_tests.nativeaot.linux.x64.checked.mch -0.23%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.18% to -0.11%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.18%
benchmarks.run_pgo.osx.arm64.checked.mch -0.18%
benchmarks.run_tiered.osx.arm64.checked.mch -0.16%
coreclr_tests.run.osx.arm64.checked.mch -0.14%
libraries.crossgen2.osx.arm64.checked.mch -0.11%
libraries.pmi.osx.arm64.checked.mch -0.15%
libraries_tests.run.osx.arm64.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.18%
realworld.run.osx.arm64.checked.mch -0.15%
MinOpts (-0.13% to -0.02%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.05%
benchmarks.run_pgo.osx.arm64.checked.mch -0.11%
benchmarks.run_tiered.osx.arm64.checked.mch -0.13%
coreclr_tests.run.osx.arm64.checked.mch -0.08%
libraries.crossgen2.osx.arm64.checked.mch -0.02%
libraries.pmi.osx.arm64.checked.mch -0.02%
libraries_tests.run.osx.arm64.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.04%
realworld.run.osx.arm64.checked.mch -0.05%
FullOpts (-0.20% to -0.11%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.18%
benchmarks.run_pgo.osx.arm64.checked.mch -0.20%
benchmarks.run_tiered.osx.arm64.checked.mch -0.18%
coreclr_tests.run.osx.arm64.checked.mch -0.19%
libraries.crossgen2.osx.arm64.checked.mch -0.11%
libraries.pmi.osx.arm64.checked.mch -0.15%
libraries_tests.run.osx.arm64.Release.mch -0.19%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.18%
realworld.run.osx.arm64.checked.mch -0.15%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.24% to -0.11%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.18%
benchmarks.run_pgo.windows.arm64.checked.mch -0.18%
benchmarks.run_tiered.windows.arm64.checked.mch -0.16%
coreclr_tests.run.windows.arm64.checked.mch -0.14%
libraries.crossgen2.windows.arm64.checked.mch -0.11%
libraries.pmi.windows.arm64.checked.mch -0.15%
libraries_tests.run.windows.arm64.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.18%
realworld.run.windows.arm64.checked.mch -0.15%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.24%
MinOpts (-0.13% to -0.02%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.05%
benchmarks.run_pgo.windows.arm64.checked.mch -0.12%
benchmarks.run_tiered.windows.arm64.checked.mch -0.13%
coreclr_tests.run.windows.arm64.checked.mch -0.07%
libraries.crossgen2.windows.arm64.checked.mch -0.02%
libraries.pmi.windows.arm64.checked.mch -0.02%
libraries_tests.run.windows.arm64.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.04%
realworld.run.windows.arm64.checked.mch -0.05%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.03%
FullOpts (-0.24% to -0.11%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.18%
benchmarks.run_pgo.windows.arm64.checked.mch -0.19%
benchmarks.run_tiered.windows.arm64.checked.mch -0.18%
coreclr_tests.run.windows.arm64.checked.mch -0.19%
libraries.crossgen2.windows.arm64.checked.mch -0.11%
libraries.pmi.windows.arm64.checked.mch -0.15%
libraries_tests.run.windows.arm64.Release.mch -0.19%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.18%
realworld.run.windows.arm64.checked.mch -0.15%
smoke_tests.nativeaot.windows.arm64.checked.mch -0.24%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-0.23% to -0.12%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.18%
benchmarks.run.windows.x64.checked.mch -0.19%
benchmarks.run_pgo.windows.x64.checked.mch -0.18%
benchmarks.run_tiered.windows.x64.checked.mch -0.18%
coreclr_tests.run.windows.x64.checked.mch -0.15%
libraries.crossgen2.windows.x64.checked.mch -0.12%
libraries.pmi.windows.x64.checked.mch -0.16%
libraries_tests.run.windows.x64.Release.mch -0.17%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.19%
realworld.run.windows.x64.checked.mch -0.15%
smoke_tests.nativeaot.windows.x64.checked.mch -0.23%
MinOpts (-0.15% to -0.02%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.12%
benchmarks.run.windows.x64.checked.mch -0.02%
benchmarks.run_pgo.windows.x64.checked.mch -0.14%
benchmarks.run_tiered.windows.x64.checked.mch -0.15%
coreclr_tests.run.windows.x64.checked.mch -0.09%
libraries.crossgen2.windows.x64.checked.mch -0.02%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.05%
realworld.run.windows.x64.checked.mch -0.07%
smoke_tests.nativeaot.windows.x64.checked.mch -0.04%
FullOpts (-0.23% to -0.12%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.19%
benchmarks.run.windows.x64.checked.mch -0.19%
benchmarks.run_pgo.windows.x64.checked.mch -0.19%
benchmarks.run_tiered.windows.x64.checked.mch -0.19%
coreclr_tests.run.windows.x64.checked.mch -0.20%
libraries.crossgen2.windows.x64.checked.mch -0.12%
libraries.pmi.windows.x64.checked.mch -0.16%
libraries_tests.run.windows.x64.Release.mch -0.21%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.20%
realworld.run.windows.x64.checked.mch -0.15%
smoke_tests.nativeaot.windows.x64.checked.mch -0.23%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.25% to -0.10%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch -0.15%
benchmarks.run_tiered.linux.arm64.checked.mch -0.12%
coreclr_tests.run.linux.arm64.checked.mch -0.13%
benchmarks.run_pgo.linux.arm64.checked.mch -0.17%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.17%
libraries.crossgen2.linux.arm64.checked.mch -0.10%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.25%
libraries_tests.run.linux.arm64.Release.mch -0.16%
benchmarks.run.linux.arm64.checked.mch -0.17%
realworld.run.linux.arm64.checked.mch -0.15%
MinOpts (-0.08% to 0.00%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch -0.08%
coreclr_tests.run.linux.arm64.checked.mch -0.07%
benchmarks.run_pgo.linux.arm64.checked.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.03%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.06%
realworld.run.linux.arm64.checked.mch -0.04%
FullOpts (-0.25% to -0.10%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch -0.15%
benchmarks.run_tiered.linux.arm64.checked.mch -0.17%
coreclr_tests.run.linux.arm64.checked.mch -0.18%
benchmarks.run_pgo.linux.arm64.checked.mch -0.18%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.17%
libraries.crossgen2.linux.arm64.checked.mch -0.10%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.25%
libraries_tests.run.linux.arm64.Release.mch -0.19%
benchmarks.run.linux.arm64.checked.mch -0.17%
realworld.run.linux.arm64.checked.mch -0.15%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.23% to -0.11%)
Collection PDIFF
libraries.pmi.linux.x64.checked.mch -0.15%
benchmarks.run.linux.x64.checked.mch -0.17%
libraries_tests.run.linux.x64.Release.mch -0.17%
coreclr_tests.run.linux.x64.checked.mch -0.14%
libraries.crossgen2.linux.x64.checked.mch -0.11%
realworld.run.linux.x64.checked.mch -0.15%
benchmarks.run_tiered.linux.x64.checked.mch -0.14%
smoke_tests.nativeaot.linux.x64.checked.mch -0.23%
benchmarks.run_pgo.linux.x64.checked.mch -0.18%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.18%
MinOpts (-0.10% to 0.00%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.07%
coreclr_tests.run.linux.x64.checked.mch -0.07%
libraries.crossgen2.linux.x64.checked.mch -0.01%
realworld.run.linux.x64.checked.mch -0.05%
benchmarks.run_tiered.linux.x64.checked.mch -0.10%
benchmarks.run_pgo.linux.x64.checked.mch -0.09%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.03%
FullOpts (-0.23% to -0.11%)
Collection PDIFF
libraries.pmi.linux.x64.checked.mch -0.15%
benchmarks.run.linux.x64.checked.mch -0.17%
libraries_tests.run.linux.x64.Release.mch -0.20%
coreclr_tests.run.linux.x64.checked.mch -0.19%
libraries.crossgen2.linux.x64.checked.mch -0.11%
realworld.run.linux.x64.checked.mch -0.15%
benchmarks.run_tiered.linux.x64.checked.mch -0.18%
smoke_tests.nativeaot.linux.x64.checked.mch -0.23%
benchmarks.run_pgo.linux.x64.checked.mch -0.19%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.18%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.19% to -0.13%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -0.19%
benchmarks.run_pgo.linux.arm.checked.mch -0.19%
benchmarks.run_tiered.linux.arm.checked.mch -0.18%
coreclr_tests.run.linux.arm.checked.mch -0.16%
libraries.crossgen2.linux.arm.checked.mch -0.13%
libraries.pmi.linux.arm.checked.mch -0.17%
libraries_tests.run.linux.arm.Release.mch -0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.18%
realworld.run.linux.arm.checked.mch -0.16%
MinOpts (-0.14% to -0.03%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -0.03%
benchmarks.run_pgo.linux.arm.checked.mch -0.13%
benchmarks.run_tiered.linux.arm.checked.mch -0.14%
coreclr_tests.run.linux.arm.checked.mch -0.10%
libraries.crossgen2.linux.arm.checked.mch -0.03%
libraries.pmi.linux.arm.checked.mch -0.03%
libraries_tests.run.linux.arm.Release.mch -0.09%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.05%
realworld.run.linux.arm.checked.mch -0.06%
FullOpts (-0.20% to -0.13%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -0.19%
benchmarks.run_pgo.linux.arm.checked.mch -0.19%
benchmarks.run_tiered.linux.arm.checked.mch -0.18%
coreclr_tests.run.linux.arm.checked.mch -0.20%
libraries.crossgen2.linux.arm.checked.mch -0.13%
libraries.pmi.linux.arm.checked.mch -0.17%
libraries_tests.run.linux.arm.Release.mch -0.18%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.19%
realworld.run.linux.arm.checked.mch -0.16%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.22% to -0.14%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.21%
benchmarks.run_pgo.windows.x86.checked.mch -0.19%
benchmarks.run_tiered.windows.x86.checked.mch -0.20%
coreclr_tests.run.windows.x86.checked.mch -0.20%
libraries.crossgen2.windows.x86.checked.mch -0.14%
libraries.pmi.windows.x86.checked.mch -0.18%
libraries_tests.run.windows.x86.Release.mch -0.18%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.22%
realworld.run.windows.x86.checked.mch -0.17%
MinOpts (-0.20% to -0.03%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.03%
benchmarks.run_pgo.windows.x86.checked.mch -0.18%
benchmarks.run_tiered.windows.x86.checked.mch -0.20%
coreclr_tests.run.windows.x86.checked.mch -0.12%
libraries.crossgen2.windows.x86.checked.mch -0.03%
libraries.pmi.windows.x86.checked.mch -0.04%
libraries_tests.run.windows.x86.Release.mch -0.12%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.07%
realworld.run.windows.x86.checked.mch -0.11%
FullOpts (-0.25% to -0.14%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.21%
benchmarks.run_pgo.windows.x86.checked.mch -0.19%
benchmarks.run_tiered.windows.x86.checked.mch -0.21%
coreclr_tests.run.windows.x86.checked.mch -0.25%
libraries.crossgen2.windows.x86.checked.mch -0.14%
libraries.pmi.windows.x86.checked.mch -0.18%
libraries_tests.run.windows.x86.Release.mch -0.20%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.22%
realworld.run.windows.x86.checked.mch -0.17%

Details here


@AndyAyersMS
Copy link
Member

GTF_MAKE_CSE change is good, I had the same thing in the branch I was using to investigate why we skip doing some of them.

@ryujit-bot
Copy link

Diff results for #97411

Assembly diffs

Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,237,690 contexts (827,812 MinOpts, 1,409,878 FullOpts).

MISSED contexts: 74,588 (3.23%)

Overall (-724 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,303,134 -16
benchmarks.run_pgo.linux.arm.checked.mch 61,262,128 -4
benchmarks.run_tiered.linux.arm.checked.mch 22,643,448 -16
coreclr_tests.run.linux.arm.checked.mch 321,791,116 -56
libraries.crossgen2.linux.arm.checked.mch 35,175,262 -104
libraries.pmi.linux.arm.checked.mch 49,615,946 -214
libraries_tests.run.linux.arm.Release.mch 242,762,120 -140
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 93,201,612 -150
realworld.run.linux.arm.checked.mch 13,613,446 -24
FullOpts (-724 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,913,878 -16
benchmarks.run_pgo.linux.arm.checked.mch 50,464,526 -4
benchmarks.run_tiered.linux.arm.checked.mch 13,536,292 -16
coreclr_tests.run.linux.arm.checked.mch 109,060,982 -56
libraries.crossgen2.linux.arm.checked.mch 35,174,032 -104
libraries.pmi.linux.arm.checked.mch 49,509,442 -214
libraries_tests.run.linux.arm.Release.mch 120,759,176 -140
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 83,117,792 -150
realworld.run.linux.arm.checked.mch 13,163,500 -24

Details here


@jakobbotsch
Copy link
Member Author

Failures are #97437

@jakobbotsch jakobbotsch merged commit 0626f2a into dotnet:main Jan 25, 2024
184 of 196 checks passed
@jakobbotsch jakobbotsch deleted the cleanup-gtCloneExpr branch January 25, 2024 09:09
@github-actions github-actions bot locked and limited conversation to collaborators Feb 25, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants