Skip to content

Conversation

@amanasifkhalid
Copy link
Contributor

Part of #93020. As we remove the concept of implicit fall-through from the JIT, the redundant branch opts pass shouldn't make assumptions about which predecessors of a block will fall through. This change removes JumpThreadInfo::m_fallThroughPred and the ensuing logic based on its presence.

@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jan 30, 2024
@ghost ghost assigned amanasifkhalid Jan 30, 2024
@ghost
Copy link

ghost commented Jan 30, 2024

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

Issue Details

Part of #93020. As we remove the concept of implicit fall-through from the JIT, the redundant branch opts pass shouldn't make assumptions about which predecessors of a block will fall through. This change removes JumpThreadInfo::m_fallThroughPred and the ensuing logic based on its presence.

Author: amanasifkhalid
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@amanasifkhalid
Copy link
Contributor Author

Closing in favor of #97722.

@ryujit-bot
Copy link

Diff results for #97724

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,302 contexts (1,007,092 MinOpts, 1,500,210 FullOpts).

MISSED contexts: base: 8 (0.00%), diff: 16 (0.00%)

Overall (-16,436 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,555,200 -468
benchmarks.run_pgo.linux.arm64.checked.mch 80,093,860 +168
benchmarks.run_tiered.linux.arm64.checked.mch 24,598,456 -372
coreclr_tests.run.linux.arm64.checked.mch 508,732,352 -2,216
libraries.crossgen2.linux.arm64.checked.mch 55,844,108 -1,320
libraries.pmi.linux.arm64.checked.mch 76,289,160 -1,424
libraries_tests.run.linux.arm64.Release.mch 395,683,916 -7,804
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,998,512 -2,712
realworld.run.linux.arm64.checked.mch 15,903,660 -172
smoke_tests.nativeaot.linux.arm64.checked.mch 2,946,792 -116
FullOpts (-16,436 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,250,272 -468
benchmarks.run_pgo.linux.arm64.checked.mch 54,159,076 +168
benchmarks.run_tiered.linux.arm64.checked.mch 4,860,020 -372
coreclr_tests.run.linux.arm64.checked.mch 160,584,200 -2,216
libraries.crossgen2.linux.arm64.checked.mch 55,842,472 -1,320
libraries.pmi.linux.arm64.checked.mch 76,169,176 -1,424
libraries_tests.run.linux.arm64.Release.mch 180,551,964 -7,804
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,501,048 -2,712
realworld.run.linux.arm64.checked.mch 15,322,736 -172
smoke_tests.nativeaot.linux.arm64.checked.mch 2,945,804 -116

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,901 contexts (991,070 MinOpts, 1,526,831 FullOpts).

MISSED contexts: 8 (0.00%)

Overall (-18,892 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,336,796 -440
benchmarks.run_pgo.linux.x64.checked.mch 71,590,604 +806
benchmarks.run_tiered.linux.x64.checked.mch 21,435,743 -82
coreclr_tests.run.linux.x64.checked.mch 403,711,067 -1,546
libraries.crossgen2.linux.x64.checked.mch 38,727,192 -1,312
libraries.pmi.linux.x64.checked.mch 60,419,372 -1,419
libraries_tests.run.linux.x64.Release.mch 337,107,943 -13,540
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,558,366 -1,230
realworld.run.linux.x64.checked.mch 13,175,050 -42
smoke_tests.nativeaot.linux.x64.checked.mch 4,234,485 -87
FullOpts (-18,892 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,037,493 -440
benchmarks.run_pgo.linux.x64.checked.mch 47,790,615 +806
benchmarks.run_tiered.linux.x64.checked.mch 3,694,963 -82
coreclr_tests.run.linux.x64.checked.mch 123,956,365 -1,546
libraries.crossgen2.linux.x64.checked.mch 38,725,994 -1,312
libraries.pmi.linux.x64.checked.mch 60,306,515 -1,419
libraries_tests.run.linux.x64.Release.mch 153,348,250 -13,540
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,940,598 -1,230
realworld.run.linux.x64.checked.mch 12,789,166 -42
smoke_tests.nativeaot.linux.x64.checked.mch 4,233,536 -87

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,837 contexts (932,669 MinOpts, 1,338,168 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 33 (0.00%)

Overall (-13,952 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,183,964 -460
benchmarks.run_pgo.osx.arm64.checked.mch 34,388,460 +396
benchmarks.run_tiered.osx.arm64.checked.mch 15,513,632 -384
coreclr_tests.run.osx.arm64.checked.mch 486,420,196 -1,700
libraries.crossgen2.osx.arm64.checked.mch 55,725,580 -1,276
libraries.pmi.osx.arm64.checked.mch 80,213,376 -1,636
libraries_tests.run.osx.arm64.Release.mch 324,574,672 -6,144
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 162,569,128 -2,576
realworld.run.osx.arm64.checked.mch 15,061,040 -172
FullOpts (-13,952 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,183,428 -460
benchmarks.run_pgo.osx.arm64.checked.mch 18,087,160 +396
benchmarks.run_tiered.osx.arm64.checked.mch 4,009,148 -384
coreclr_tests.run.osx.arm64.checked.mch 153,807,272 -1,700
libraries.crossgen2.osx.arm64.checked.mch 55,723,952 -1,276
libraries.pmi.osx.arm64.checked.mch 80,092,248 -1,636
libraries_tests.run.osx.arm64.Release.mch 120,858,824 -6,144
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 149,415,400 -2,576
realworld.run.osx.arm64.checked.mch 14,497,084 -172

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,104 contexts (938,449 MinOpts, 1,402,655 FullOpts).

MISSED contexts: base: 8 (0.00%), diff: 13 (0.00%)

Overall (-14,220 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,965,984 -408
benchmarks.run_pgo.windows.arm64.checked.mch 45,573,612 +256
benchmarks.run_tiered.windows.arm64.checked.mch 15,586,996 -360
coreclr_tests.run.windows.arm64.checked.mch 495,271,548 -1,956
libraries.crossgen2.windows.arm64.checked.mch 59,070,348 -1,344
libraries.pmi.windows.arm64.checked.mch 79,841,380 -1,472
libraries_tests.run.windows.arm64.Release.mch 330,789,420 -5,652
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,576,132 -2,904
realworld.run.windows.arm64.checked.mch 15,904,740 -176
smoke_tests.nativeaot.windows.arm64.checked.mch 3,970,716 -204
FullOpts (-14,220 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,965,448 -408
benchmarks.run_pgo.windows.arm64.checked.mch 29,562,216 +256
benchmarks.run_tiered.windows.arm64.checked.mch 4,409,808 -360
coreclr_tests.run.windows.arm64.checked.mch 156,582,444 -1,956
libraries.crossgen2.windows.arm64.checked.mch 59,068,712 -1,344
libraries.pmi.windows.arm64.checked.mch 79,721,396 -1,472
libraries_tests.run.windows.arm64.Release.mch 127,355,824 -5,652
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,422,384 -2,904
realworld.run.windows.arm64.checked.mch 15,340,760 -176
smoke_tests.nativeaot.windows.arm64.checked.mch 3,969,704 -204

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.00% to +0.02%)
Collection PDIFF
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
FullOpts (-0.00% to +0.02%)
Collection PDIFF
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.00% to +0.02%)
Collection PDIFF
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%
FullOpts (-0.01% to +0.02%)
Collection PDIFF
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch -0.01%
libraries_tests.run.linux.x64.Release.mch -0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%

Throughput diffs for osx/arm64 ran on windows/x64

FullOpts (-0.00% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.osx.arm64.checked.mch +0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.01% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.02%
MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch +0.01%
FullOpts (-0.01% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.02%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-0.01% to +0.03%)
Collection PDIFF
libraries_tests.run.windows.x64.Release.mch -0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.03%
FullOpts (-0.01% to +0.03%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch -0.01%
coreclr_tests.run.windows.x64.checked.mch -0.01%
libraries_tests.run.windows.x64.Release.mch -0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.03%

Details here


Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.01% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch -0.01%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch -0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.00% to +0.02%)
Collection PDIFF
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%
FullOpts (-0.00% to +0.02%)
Collection PDIFF
smoke_tests.nativeaot.linux.arm64.checked.mch +0.02%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.01% to +0.02%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%
FullOpts (-0.01% to +0.02%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97724

Assembly diffs

Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,382 contexts (829,328 MinOpts, 1,410,054 FullOpts).

MISSED contexts: base: 71,273 (3.08%), diff: 71,282 (3.08%)

Overall (-12,784 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,290,340 -314
benchmarks.run_pgo.linux.arm.checked.mch 63,958,726 +404
benchmarks.run_tiered.linux.arm.checked.mch 21,546,378 -312
coreclr_tests.run.linux.arm.checked.mch 321,753,452 -1,118
libraries.crossgen2.linux.arm.checked.mch 34,522,594 -862
libraries.pmi.linux.arm.checked.mch 49,852,844 -1,144
libraries_tests.run.linux.arm.Release.mch 243,854,234 -6,772
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 94,520,720 -2,552
realworld.run.linux.arm.checked.mch 13,606,688 -114
FullOpts (-12,784 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,901,138 -314
benchmarks.run_pgo.linux.arm.checked.mch 52,758,760 +404
benchmarks.run_tiered.linux.arm.checked.mch 12,893,378 -312
coreclr_tests.run.linux.arm.checked.mch 109,275,864 -1,118
libraries.crossgen2.linux.arm.checked.mch 34,521,364 -862
libraries.pmi.linux.arm.checked.mch 49,746,620 -1,144
libraries_tests.run.linux.arm.Release.mch 122,885,102 -6,772
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 84,449,984 -2,552
realworld.run.linux.arm.checked.mch 13,171,388 -114

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,439 contexts (839,658 MinOpts, 1,453,781 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 57 (0.00%)

Overall (-5,227 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,121,152 -349
benchmarks.run_pgo.windows.x86.checked.mch 44,984,638 +735
benchmarks.run_tiered.windows.x86.checked.mch 9,468,675 -349
coreclr_tests.run.windows.x86.checked.mch 309,389,409 -268
libraries.crossgen2.windows.x86.checked.mch 31,715,129 -1,087
libraries.pmi.windows.x86.checked.mch 49,281,531 -1,375
libraries_tests.run.windows.x86.Release.mch 186,643,263 -2,175
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 103,812,160 -579
realworld.run.windows.x86.checked.mch 11,350,878 +220
FullOpts (-5,227 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,871 -349
benchmarks.run_pgo.windows.x86.checked.mch 38,396,007 +735
benchmarks.run_tiered.windows.x86.checked.mch 5,198,854 -349
coreclr_tests.run.windows.x86.checked.mch 107,601,275 -268
libraries.crossgen2.windows.x86.checked.mch 31,714,069 -1,087
libraries.pmi.windows.x86.checked.mch 49,186,298 -1,375
libraries_tests.run.windows.x86.Release.mch 88,369,563 -2,175
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 95,132,096 -579
realworld.run.windows.x86.checked.mch 11,055,164 +220

Details here


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.

2 participants