-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Regressions in SeekUnroll #60626
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
Caused by #60228 |
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsRun Information
Regressions in PerfLabTests.LowLevelPerf
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'PerfLabTests.LowLevelPerf*' PayloadsHistogramPerfLabTests.LowLevelPerf.ObjectStringIsString
PerfLabTests.LowLevelPerf.GenericGenericMethod
DocsProfiling workflow for dotnet/runtime repository
Regressions in SeekUnroll
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'SeekUnroll*' PayloadsHistogramSeekUnroll.Test(boxedIndex: 3)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Char
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_Char*' PayloadsHistogramSystem.Tests.Perf_Char.GetUnicodeCategory(c: 'א')
DocsProfiling workflow for dotnet/runtime repository
|
More regressions: dotnet/perf-autofiling-issues#1926 |
Investigating now. Initial results are below. BenchmarkDotNet=v0.13.1.1611-nightly, OS=Windows 10.0.19043.1288 (21H1/May2021Update)
AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
.NET SDK=7.0.100-alpha.1.21518.14
[Host] : .NET 7.0.0 (7.0.21.48001), X64 RyuJIT
Job-VWGBDZ : .NET 7.0.0 (42.42.42.42424), X64 RyuJIT
Job-QJEQHT : .NET 7.0.0 (42.42.42.42424), X64 RyuJIT
Job-VXMGKV : .NET 7.0.0 (42.42.42.42424), X64 RyuJIT
PowerPlanMode=00000000-0000-0000-0000-000000000000 Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog IterationTime=250.0000 ms
MaxIterationCount=20 MinIterationCount=15 WarmupCount=1
It looks like we are no longer containing some immediates after f40247e. In @@ -66,10 +66,11 @@ M00_L02:
mov rsi,rcx
mov rdi,rdx
xor ebx,ebx
- mov rcx,7FFD0690BD78
+ mov rcx,7FFD0690BC80
mov edx,2A
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- cmp dword ptr [7FFD06A9C2B8],0
+ mov rax,7FFD0690C1C0
+ cmp dword ptr [rax],0
jle near ptr M01_L02
M01_L00:
vmovupd ymm0,[rdi]
@@ -104,7 +105,8 @@ M01_L01:
add eax,edx
mov [rsi],eax
inc ebx
- cmp ebx,[7FFD06A9C2B8]
+ mov rax,7FFD0690C1C0
+ cmp ebx,[rax]
jl near ptr M01_L00
M01_L02:
vzeroupper
@@ -113,5 +115,5 @@ M01_L02:
pop rsi
pop rdi
ret
-; Total bytes of code 196
+; Total bytes of code 208 |
The containment of that immediate seems to flip back and forth, which is strange. In some runs in main it is contained and in some runs it isn't. [2021/10/20 14:04:26][INFO] 00007ffd`2c989b53 48B8C0C17F2CFD7F0000 mov rax, 0x7FFD2C7FC1C0
[2021/10/20 14:04:26][INFO] 00007ffd`2c989b5d 3B18 cmp ebx, dword ptr [rax] |
Due to dotnet#60712 we cannot unconditionally generate lea for handles, since the runtime does not expect us to generate ask for reloc hints for arbitrary constants. In addition, for many Intel CPUs it looks like rip-relative lea has greater latency than mov with an 8-byte immediate. Instead of reverting the change I'm just turning it off here, since the change also unified a couple of functions to simplify the handling. Fix dotnet#60627 Fix dotnet#60626
Due to #60712 we cannot unconditionally generate lea for handles, since the runtime does not expect us to generate ask for reloc hints for arbitrary constants. In addition, for many Intel CPUs it looks like rip-relative lea has greater latency than mov with an 8-byte immediate. Instead of reverting the change I'm just turning it off here, since the change also unified a couple of functions to simplify the handling. Fix #60626 Fix #60627 Fix #60629
Run Information
Regressions in PerfLabTests.LowLevelPerf
Test Report
Repro
Payloads
Baseline
Compare
Histogram
PerfLabTests.LowLevelPerf.ObjectStringIsString
PerfLabTests.LowLevelPerf.GenericGenericMethod
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in SeekUnroll
Test Report
Repro
Payloads
Baseline
Compare
Histogram
SeekUnroll.Test(boxedIndex: 3)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Char
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Char.GetUnicodeCategory(c: 'א')
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: