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

Regressions in System.Numerics.Tests #81766

Open
performanceautofiler bot opened this issue Feb 7, 2023 · 5 comments
Open

Regressions in System.Numerics.Tests #81766

performanceautofiler bot opened this issue Feb 7, 2023 · 5 comments
Assignees
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI PGO
Milestone

Comments

@performanceautofiler
Copy link

performanceautofiler bot commented Feb 7, 2023

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Regressions in System.Numerics.Tests.Perf_Quaternion

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
LengthSquaredBenchmark - Duration of single invocation 0.00 ns 1.04 ns 0.06 False Trace Trace
LengthBenchmark - Duration of single invocation 0.00 ns 1.04 ns 0.06 False -0.11767803968260403 1.852401797777939 -15.741270017533898 Trace Trace
SlerpBenchmark - Duration of single invocation 8.71 ns 11.58 ns 1.33 0.07 False 87.35053552639945 96.94180164487575 1.1098020299552438 Trace Trace
LerpBenchmark - Duration of single invocation 8.71 ns 11.46 ns 1.32 0.04 False 87.36235521544053 96.45028072538463 1.1040256468307517 Trace Trace

graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Quaternion*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_Quaternion.LengthSquaredBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 1.0363166035472344 > 0.
IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -731.5907363494977 (T) = (0 -1.0367084157573616) / Math.Sqrt((5.187377291605866E-05 / (38)) + (1.577644041218473E-05 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -335.8787115919655 = (0.0030773936734032766 - 1.0367084157573616) / 0.0030773936734032766 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Quaternion.LengthSquaredBenchmark()
       vzeroupper
       vmovss    xmm0,dword ptr [7FFE7D934E80]
       ret
; Total bytes of code 12

Compare Jit Disasm

; System.Numerics.Tests.Perf_Quaternion.LengthSquaredBenchmark()
       vzeroupper
       vmovups   xmm0,[7FFB80444EB0]
       vdpps     xmm0,xmm0,[7FFB80444EB0],0FF
       ret
; Total bytes of code 22

System.Numerics.Tests.Perf_Quaternion.LengthBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 1.0356956434939693 > 0.
IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -840.0216859863431 (T) = (0 -1.0368072513018893) / Math.Sqrt((5.1986637393728984E-05 / (38)) + (3.65736932597433E-06 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -335.5468090566671 = (0.003080722275180787 - 1.0368072513018893) / 0.003080722275180787 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Quaternion.LengthBenchmark()
       vzeroupper
       vmovss    xmm0,dword ptr [7FFAA7AC4E80]
       ret
; Total bytes of code 12

Compare Jit Disasm

; System.Numerics.Tests.Perf_Quaternion.LengthBenchmark()
       vzeroupper
       vmovups   xmm0,[7FF8FF1E4EB0]
       vdpps     xmm0,xmm0,[7FF8FF1E4EB0],0FF
       vsqrtss   xmm0,xmm0,xmm0
       ret
; Total bytes of code 26

System.Numerics.Tests.Perf_Quaternion.SlerpBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 11.584437906324805 > 9.160248058426017.
IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -288.22962816383796 (T) = (0 -11.474283585002874) / Math.Sqrt((0.0006529603262924105 / (38)) + (0.0018408209869257982 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -0.31472301857383916 = (8.727529238401663 - 11.474283585002874) / 8.727529238401663 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Quaternion.SlerpBenchmark()
       push      rsi
       sub       rsp,40
       vzeroupper
       mov       rsi,rdx
       vxorps    xmm3,xmm3,xmm3
       vmovups   [rsp+30],xmm3
       xor       ecx,ecx
       mov       [rsp+20],ecx
       mov       [rsp+24],ecx
       mov       [rsp+28],ecx
       mov       dword ptr [rsp+2C],3F800000
       mov       rcx,rsi
       lea       r8,[rsp+20]
       lea       rdx,[rsp+30]
       vmovss    xmm3,dword ptr [7FFC1D725030]
       call      qword ptr [7FFC1DAE1CF0]; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       mov       rax,rsi
       add       rsp,40
       pop       rsi
       ret
; Total bytes of code 79
; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovss    xmm0,dword ptr [r8]
       vmovss    xmm1,dword ptr [r8+4]
       vmovss    xmm2,dword ptr [r8+8]
       vmovss    xmm4,dword ptr [r8+0C]
       vmovss    xmm5,dword ptr [rdx]
       vmovss    xmm6,dword ptr [rdx+4]
       vmovss    xmm7,dword ptr [rdx+8]
       vmovss    xmm8,dword ptr [rdx+0C]
       vmovss    xmm9,dword ptr [7FFC1D7251F0]
       vsubss    xmm10,xmm9,xmm3
       vmulss    xmm11,xmm5,xmm0
       vmulss    xmm12,xmm6,xmm1
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm7,xmm2
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm8,xmm4
       vaddss    xmm11,xmm11,xmm12
       vxorps    xmm12,xmm12,xmm12
       vucomiss  xmm11,xmm12
       jb        short M01_L00
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vaddss    xmm0,xmm5,xmm0
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vaddss    xmm1,xmm5,xmm1
       vmulss    xmm5,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vaddss    xmm2,xmm5,xmm2
       vmulss    xmm5,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vaddss    xmm3,xmm5,xmm3
       jmp       short M01_L01
M01_L00:
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vsubss    xmm0,xmm5,xmm0
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vsubss    xmm1,xmm5,xmm1
       vmulss    xmm5,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vsubss    xmm2,xmm5,xmm2
       vmulss    xmm5,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vsubss    xmm3,xmm5,xmm3
M01_L01:
       vmulss    xmm4,xmm0,xmm0
       vmulss    xmm5,xmm1,xmm1
       vaddss    xmm4,xmm4,xmm5
       vmulss    xmm5,xmm2,xmm2
       vaddss    xmm4,xmm4,xmm5
       vmulss    xmm5,xmm3,xmm3
       vaddss    xmm4,xmm4,xmm5
       vsqrtss   xmm4,xmm4,xmm4
       vdivss    xmm4,xmm9,xmm4
       vmulss    xmm0,xmm0,xmm4
       vmulss    xmm1,xmm1,xmm4
       vmulss    xmm2,xmm2,xmm4
       vmulss    xmm3,xmm3,xmm4
       vmovss    dword ptr [rcx],xmm0
       vmovss    dword ptr [rcx+4],xmm1
       vmovss    dword ptr [rcx+8],xmm2
       vmovss    dword ptr [rcx+0C],xmm3
       mov       rax,rcx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 365

Compare Jit Disasm

; System.Numerics.Tests.Perf_Quaternion.SlerpBenchmark()
       push      rsi
       sub       rsp,40
       vzeroupper
       mov       rsi,rdx
       vxorps    xmm3,xmm3,xmm3
       vmovaps   [rsp+30],xmm3
       vmovups   xmm3,[7FF8FF1E5030]
       vmovaps   [rsp+20],xmm3
       mov       rcx,rsi
       lea       r8,[rsp+20]
       lea       rdx,[rsp+30]
       vmovss    xmm3,dword ptr [7FF8FF1E5040]
       call      qword ptr [7FF8FF5A1CA8]; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       mov       rax,rsi
       add       rsp,40
       pop       rsi
       ret
; Total bytes of code 71
; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovss    xmm0,dword ptr [r8]
       vmovss    xmm1,dword ptr [r8+4]
       vmovss    xmm2,dword ptr [r8+8]
       vmovss    xmm4,dword ptr [r8+0C]
       vmovss    xmm5,dword ptr [rdx]
       vmovss    xmm6,dword ptr [rdx+4]
       vmovss    xmm7,dword ptr [rdx+8]
       vmovss    xmm8,dword ptr [rdx+0C]
       vmovss    xmm9,dword ptr [7FF8FF1E5228]
       vsubss    xmm10,xmm9,xmm3
       vmulss    xmm11,xmm5,xmm0
       vmulss    xmm12,xmm6,xmm1
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm7,xmm2
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm8,xmm4
       vaddss    xmm11,xmm11,xmm12
       vxorps    xmm12,xmm12,xmm12
       vucomiss  xmm11,xmm12
       jb        short M01_L00
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vaddss    xmm0,xmm5,xmm0
       vinsertps xmm0,xmm0,xmm0,0E
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vaddss    xmm1,xmm5,xmm1
       vinsertps xmm0,xmm0,xmm1,10
       vmulss    xmm1,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vmulss    xmm1,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vaddss    xmm4,xmm1,xmm3
       vinsertps xmm0,xmm0,xmm4,30
       jmp       short M01_L01
M01_L00:
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vsubss    xmm0,xmm5,xmm0
       vinsertps xmm0,xmm0,xmm0,0E
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vsubss    xmm1,xmm5,xmm1
       vinsertps xmm0,xmm0,xmm1,10
       vmulss    xmm1,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vsubss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vmulss    xmm1,xmm10,xmm8
       vmulss    xmm2,xmm3,xmm4
       vsubss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,30
M01_L01:
       vmovaps   xmm1,xmm0
       vmulss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vunpckhps xmm3,xmm0,xmm0
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vshufps   xmm3,xmm0,xmm0,0FF
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vsqrtss   xmm2,xmm2,xmm2
       vdivss    xmm2,xmm9,xmm2
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,0
       vmovshdup xmm1,xmm0
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,10
       vunpckhps xmm1,xmm0,xmm0
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vshufps   xmm1,xmm0,xmm0,0FF
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,30
       vmovups   [rcx],xmm0
       mov       rax,rcx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 452

System.Numerics.Tests.Perf_Quaternion.LerpBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 11.46262173778344 > 9.185412534754093.
IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -334.0209415723982 (T) = (0 -11.474521821264013) / Math.Sqrt((0.00044598270122739417 / (38)) + (0.0013920109515264938 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -0.31408453364314826 = (8.731951048424731 - 11.474521821264013) / 8.731951048424731 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Quaternion.LerpBenchmark()
       push      rsi
       sub       rsp,40
       vzeroupper
       mov       rsi,rdx
       vxorps    xmm3,xmm3,xmm3
       vmovups   [rsp+30],xmm3
       xor       ecx,ecx
       mov       [rsp+20],ecx
       mov       [rsp+24],ecx
       mov       [rsp+28],ecx
       mov       dword ptr [rsp+2C],3F800000
       mov       rcx,rsi
       lea       r8,[rsp+20]
       lea       rdx,[rsp+30]
       vmovss    xmm3,dword ptr [7FFBA68B5030]
       call      qword ptr [7FFBA6C71CF0]; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       mov       rax,rsi
       add       rsp,40
       pop       rsi
       ret
; Total bytes of code 79
; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovss    xmm0,dword ptr [r8]
       vmovss    xmm1,dword ptr [r8+4]
       vmovss    xmm2,dword ptr [r8+8]
       vmovss    xmm4,dword ptr [r8+0C]
       vmovss    xmm5,dword ptr [rdx]
       vmovss    xmm6,dword ptr [rdx+4]
       vmovss    xmm7,dword ptr [rdx+8]
       vmovss    xmm8,dword ptr [rdx+0C]
       vmovss    xmm9,dword ptr [7FFBA68B51F0]
       vsubss    xmm10,xmm9,xmm3
       vmulss    xmm11,xmm5,xmm0
       vmulss    xmm12,xmm6,xmm1
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm7,xmm2
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm8,xmm4
       vaddss    xmm11,xmm11,xmm12
       vxorps    xmm12,xmm12,xmm12
       vucomiss  xmm11,xmm12
       jb        short M01_L00
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vaddss    xmm0,xmm5,xmm0
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vaddss    xmm1,xmm5,xmm1
       vmulss    xmm5,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vaddss    xmm2,xmm5,xmm2
       vmulss    xmm5,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vaddss    xmm3,xmm5,xmm3
       jmp       short M01_L01
M01_L00:
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vsubss    xmm0,xmm5,xmm0
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vsubss    xmm1,xmm5,xmm1
       vmulss    xmm5,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vsubss    xmm2,xmm5,xmm2
       vmulss    xmm5,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vsubss    xmm3,xmm5,xmm3
M01_L01:
       vmulss    xmm4,xmm0,xmm0
       vmulss    xmm5,xmm1,xmm1
       vaddss    xmm4,xmm4,xmm5
       vmulss    xmm5,xmm2,xmm2
       vaddss    xmm4,xmm4,xmm5
       vmulss    xmm5,xmm3,xmm3
       vaddss    xmm4,xmm4,xmm5
       vsqrtss   xmm4,xmm4,xmm4
       vdivss    xmm4,xmm9,xmm4
       vmulss    xmm0,xmm0,xmm4
       vmulss    xmm1,xmm1,xmm4
       vmulss    xmm2,xmm2,xmm4
       vmulss    xmm3,xmm3,xmm4
       vmovss    dword ptr [rcx],xmm0
       vmovss    dword ptr [rcx+4],xmm1
       vmovss    dword ptr [rcx+8],xmm2
       vmovss    dword ptr [rcx+0C],xmm3
       mov       rax,rcx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 365

Compare Jit Disasm

; System.Numerics.Tests.Perf_Quaternion.LerpBenchmark()
       push      rsi
       sub       rsp,40
       vzeroupper
       mov       rsi,rdx
       vxorps    xmm3,xmm3,xmm3
       vmovaps   [rsp+30],xmm3
       vmovups   xmm3,[7FFDA9A45030]
       vmovaps   [rsp+20],xmm3
       mov       rcx,rsi
       lea       r8,[rsp+20]
       lea       rdx,[rsp+30]
       vmovss    xmm3,dword ptr [7FFDA9A45040]
       call      qword ptr [7FFDA9E01CA8]; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       mov       rax,rsi
       add       rsp,40
       pop       rsi
       ret
; Total bytes of code 71
; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovss    xmm0,dword ptr [r8]
       vmovss    xmm1,dword ptr [r8+4]
       vmovss    xmm2,dword ptr [r8+8]
       vmovss    xmm4,dword ptr [r8+0C]
       vmovss    xmm5,dword ptr [rdx]
       vmovss    xmm6,dword ptr [rdx+4]
       vmovss    xmm7,dword ptr [rdx+8]
       vmovss    xmm8,dword ptr [rdx+0C]
       vmovss    xmm9,dword ptr [7FFDA9A45228]
       vsubss    xmm10,xmm9,xmm3
       vmulss    xmm11,xmm5,xmm0
       vmulss    xmm12,xmm6,xmm1
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm7,xmm2
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm8,xmm4
       vaddss    xmm11,xmm11,xmm12
       vxorps    xmm12,xmm12,xmm12
       vucomiss  xmm11,xmm12
       jb        short M01_L00
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vaddss    xmm0,xmm5,xmm0
       vinsertps xmm0,xmm0,xmm0,0E
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vaddss    xmm1,xmm5,xmm1
       vinsertps xmm0,xmm0,xmm1,10
       vmulss    xmm1,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vmulss    xmm1,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vaddss    xmm4,xmm1,xmm3
       vinsertps xmm0,xmm0,xmm4,30
       jmp       short M01_L01
M01_L00:
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vsubss    xmm0,xmm5,xmm0
       vinsertps xmm0,xmm0,xmm0,0E
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vsubss    xmm1,xmm5,xmm1
       vinsertps xmm0,xmm0,xmm1,10
       vmulss    xmm1,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vsubss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vmulss    xmm1,xmm10,xmm8
       vmulss    xmm2,xmm3,xmm4
       vsubss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,30
M01_L01:
       vmovaps   xmm1,xmm0
       vmulss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vunpckhps xmm3,xmm0,xmm0
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vshufps   xmm3,xmm0,xmm0,0FF
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vsqrtss   xmm2,xmm2,xmm2
       vdivss    xmm2,xmm9,xmm2
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,0
       vmovshdup xmm1,xmm0
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,10
       vunpckhps xmm1,xmm0,xmm0
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vshufps   xmm1,xmm0,xmm0,0FF
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,30
       vmovups   [rcx],xmm0
       mov       rax,rcx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 452

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Regressions in System.Numerics.Tests.Perf_Vector2

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TransformByQuaternionBenchmark - Duration of single invocation 0.48 ns 2.35 ns 4.90 0.05 False 11.868376639215034 38.79794674413647 3.2690188324443445 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Vector2*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_Vector2.TransformByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 2.348510100717621 > 0.5011597860031543.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -549.5060160365665 (T) = (0 -2.3426211298263793) / Math.Sqrt((0.00037146637253266084 / (38)) + (4.617113394953245E-05 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -3.9920016364506417 = (0.4692749122358069 - 2.3426211298263793) / 0.4692749122358069 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector2.TransformByQuaternionBenchmark()
       vzeroupper
       vmovsd    xmm0,qword ptr [7FFBC9A45220]
       vmovaps   xmm1,xmm0
       vmulss    xmm2,xmm1,dword ptr [7FFBC9A45228]
       vmovshdup xmm0,xmm0
       vxorps    xmm3,xmm3,xmm3
       vmulss    xmm3,xmm0,xmm3
       vaddss    xmm2,xmm2,xmm3
       vxorps    xmm3,xmm3,xmm3
       vmulss    xmm1,xmm1,xmm3
       vaddss    xmm0,xmm1,xmm0
       vinsertps xmm0,xmm2,xmm0,1C
       vmovq     rax,xmm0
       ret
; Total bytes of code 63

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector2.TransformByQuaternionBenchmark()
       sub       rsp,38
       vzeroupper
       vmovaps   [rsp+20],xmm6
       vmovaps   [rsp+10],xmm7
       vmovaps   [rsp],xmm8
       vmovups   xmm0,[7FF99F7F5280]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm1,xmm4,xmm1
       vmulss    xmm3,xmm4,xmm3
       vmulss    xmm4,xmm6,xmm5
       vmovss    xmm5,dword ptr [7FF99F7F5290]
       vsubss    xmm3,xmm5,xmm3
       vsubss    xmm3,xmm3,xmm4
       vmovsd    xmm6,qword ptr [7FF99F7F5298]
       vmovaps   xmm7,xmm6
       vmulss    xmm3,xmm3,xmm7
       vsubss    xmm8,xmm1,xmm0
       vmovshdup xmm6,xmm6
       vmulss    xmm8,xmm8,xmm6
       vaddss    xmm3,xmm3,xmm8
       vaddss    xmm0,xmm1,xmm0
       vmulss    xmm0,xmm0,xmm7
       vsubss    xmm1,xmm5,xmm2
       vsubss    xmm1,xmm1,xmm4
       vmulss    xmm1,xmm1,xmm6
       vaddss    xmm0,xmm0,xmm1
       vinsertps xmm0,xmm3,xmm0,1C
       vmovq     rax,xmm0
       vmovaps   xmm6,[rsp+20]
       vmovaps   xmm7,[rsp+10]
       vmovaps   xmm8,[rsp]
       add       rsp,38
       ret
; Total bytes of code 187

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Regressions in System.Numerics.Tests.Perf_Vector4

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TransformVector3ByQuaternionBenchmark - Duration of single invocation 1.72 ns 5.77 ns 3.35 0.03 False 29.838415371780584 74.33215468594643 2.491156241368146 Trace Trace
TransformByQuaternionBenchmark - Duration of single invocation 1.71 ns 5.67 ns 3.30 0.04 False Trace Trace
TransformVector2ByQuaternionBenchmark - Duration of single invocation 0.76 ns 4.10 ns 5.36 0.02 False 17.856500875766532 59.73140213643394 3.345078778423874 Trace Trace

graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Vector4*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_Vector4.TransformVector3ByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.76689777048781 > 1.8014469428774322.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -202.71081880573607 (T) = (0 -5.643370412680244) / Math.Sqrt((5.149061247893137E-05 / (38)) + (0.009334782051756746 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -2.28251717057742 = (1.7192203785753637 - 5.643370412680244) / 1.7192203785753637 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector4.TransformVector3ByQuaternionBenchmark()
       sub       rsp,28
       vzeroupper
       vmovaps   [rsp+10],xmm6
       vmovaps   [rsp],xmm7
       vmovss    xmm0,dword ptr [7FFBB5D15330]
       vmovups   xmm1,[7FFBB5D15340]
       vmovaps   xmm2,xmm1
       vmulss    xmm3,xmm2,dword ptr [7FFBB5D15330]
       vmovshdup xmm4,xmm1
       vxorps    xmm5,xmm5,xmm5
       vmulss    xmm5,xmm4,xmm5
       vaddss    xmm3,xmm3,xmm5
       vunpckhps xmm1,xmm1,xmm1
       vxorps    xmm6,xmm6,xmm6
       vmulss    xmm6,xmm1,xmm6
       vaddss    xmm3,xmm3,xmm6
       vxorps    xmm7,xmm7,xmm7
       vmulss    xmm2,xmm2,xmm7
       vaddss    xmm4,xmm2,xmm4
       vaddss    xmm4,xmm4,xmm6
       vinsertps xmm3,xmm3,xmm4,10
       vaddss    xmm2,xmm5,xmm2
       vaddss    xmm1,xmm2,xmm1
       vinsertps xmm1,xmm3,xmm1,20
       vinsertps xmm0,xmm1,xmm0,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+10]
       vmovaps   xmm7,[rsp]
       add       rsp,28
       ret
; Total bytes of code 143

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector4.TransformVector3ByQuaternionBenchmark()
       sub       rsp,98
       vzeroupper
       vmovaps   [rsp+80],xmm6
       vmovaps   [rsp+70],xmm7
       vmovaps   [rsp+60],xmm8
       vmovaps   [rsp+50],xmm9
       vmovaps   [rsp+40],xmm10
       vmovaps   [rsp+30],xmm11
       vmovaps   [rsp+20],xmm12
       vmovaps   [rsp+10],xmm13
       vmovaps   [rsp],xmm14
       vmovups   xmm0,[7FF7D5035400]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm7,xmm2,xmm0
       vmulss    xmm8,xmm4,xmm0
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm9,xmm4,xmm1
       vmulss    xmm1,xmm6,xmm1
       vmulss    xmm4,xmm4,xmm3
       vmulss    xmm3,xmm6,xmm3
       vmulss    xmm5,xmm6,xmm5
       vmovss    xmm6,dword ptr [7FF7D5035410]
       vsubss    xmm10,xmm6,xmm4
       vsubss    xmm10,xmm10,xmm5
       vmovups   xmm11,[7FF7D5035420]
       vmovaps   xmm12,xmm11
       vmulss    xmm10,xmm10,xmm12
       vsubss    xmm13,xmm9,xmm0
       vmovshdup xmm14,xmm11
       vmulss    xmm13,xmm13,xmm14
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm13,xmm1,xmm8
       vunpckhps xmm11,xmm11,xmm11
       vmulss    xmm13,xmm13,xmm11
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm0,xmm9,xmm0
       vmulss    xmm0,xmm0,xmm12
       vsubss    xmm2,xmm6,xmm2
       vsubss    xmm5,xmm2,xmm5
       vmulss    xmm5,xmm5,xmm14
       vaddss    xmm0,xmm0,xmm5
       vsubss    xmm5,xmm3,xmm7
       vmulss    xmm5,xmm5,xmm11
       vaddss    xmm0,xmm0,xmm5
       vinsertps xmm0,xmm10,xmm0,10
       vsubss    xmm1,xmm1,xmm8
       vmulss    xmm1,xmm1,xmm12
       vaddss    xmm3,xmm3,xmm7
       vmulss    xmm3,xmm3,xmm14
       vaddss    xmm1,xmm1,xmm3
       vsubss    xmm2,xmm2,xmm4
       vmulss    xmm2,xmm2,xmm11
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vinsertps xmm0,xmm0,xmm6,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+80]
       vmovaps   xmm7,[rsp+70]
       vmovaps   xmm8,[rsp+60]
       vmovaps   xmm9,[rsp+50]
       vmovaps   xmm10,[rsp+40]
       vmovaps   xmm11,[rsp+30]
       vmovaps   xmm12,[rsp+20]
       vmovaps   xmm13,[rsp+10]
       vmovaps   xmm14,[rsp]
       add       rsp,98
       ret
; Total bytes of code 376

System.Numerics.Tests.Perf_Vector4.TransformByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.667508672725275 > 1.8007705628396937.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -272.4541331568984 (T) = (0 -5.577559804268514) / Math.Sqrt((5.4883813116301784E-05 / (37)) + (0.004977484602390882 / (25))) is less than -2.0002978220134566 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (37) + (25) - 2, .025) and -2.2449042241690633 = (1.7188673128547527 - 5.577559804268514) / 1.7188673128547527 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector4.TransformByQuaternionBenchmark()
       sub       rsp,28
       vzeroupper
       vmovaps   [rsp+10],xmm6
       vmovaps   [rsp],xmm7
       vmovss    xmm0,dword ptr [7FFB80435330]
       vmovups   xmm1,[7FFB80435340]
       vmovaps   xmm2,xmm1
       vmulss    xmm3,xmm2,dword ptr [7FFB80435330]
       vmovshdup xmm4,xmm1
       vxorps    xmm5,xmm5,xmm5
       vmulss    xmm5,xmm4,xmm5
       vaddss    xmm3,xmm3,xmm5
       vunpckhps xmm1,xmm1,xmm1
       vxorps    xmm6,xmm6,xmm6
       vmulss    xmm6,xmm1,xmm6
       vaddss    xmm3,xmm3,xmm6
       vxorps    xmm7,xmm7,xmm7
       vmulss    xmm2,xmm2,xmm7
       vaddss    xmm4,xmm2,xmm4
       vaddss    xmm4,xmm4,xmm6
       vinsertps xmm3,xmm3,xmm4,10
       vaddss    xmm2,xmm5,xmm2
       vaddss    xmm1,xmm2,xmm1
       vinsertps xmm1,xmm3,xmm1,20
       vinsertps xmm0,xmm1,xmm0,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+10]
       vmovaps   xmm7,[rsp]
       add       rsp,28
       ret
; Total bytes of code 143

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector4.TransformByQuaternionBenchmark()
       sub       rsp,98
       vzeroupper
       vmovaps   [rsp+80],xmm6
       vmovaps   [rsp+70],xmm7
       vmovaps   [rsp+60],xmm8
       vmovaps   [rsp+50],xmm9
       vmovaps   [rsp+40],xmm10
       vmovaps   [rsp+30],xmm11
       vmovaps   [rsp+20],xmm12
       vmovaps   [rsp+10],xmm13
       vmovaps   [rsp],xmm14
       vmovups   xmm0,[7FFE7D935400]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm7,xmm2,xmm0
       vmulss    xmm8,xmm4,xmm0
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm9,xmm4,xmm1
       vmulss    xmm1,xmm6,xmm1
       vmulss    xmm4,xmm4,xmm3
       vmulss    xmm3,xmm6,xmm3
       vmulss    xmm5,xmm6,xmm5
       vmovss    xmm6,dword ptr [7FFE7D935410]
       vsubss    xmm10,xmm6,xmm4
       vsubss    xmm10,xmm10,xmm5
       vmovups   xmm11,[7FFE7D935420]
       vmovaps   xmm12,xmm11
       vmulss    xmm10,xmm10,xmm12
       vsubss    xmm13,xmm9,xmm0
       vmovshdup xmm14,xmm11
       vmulss    xmm13,xmm13,xmm14
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm13,xmm1,xmm8
       vunpckhps xmm11,xmm11,xmm11
       vmulss    xmm13,xmm13,xmm11
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm0,xmm9,xmm0
       vmulss    xmm0,xmm0,xmm12
       vsubss    xmm2,xmm6,xmm2
       vsubss    xmm5,xmm2,xmm5
       vmulss    xmm5,xmm5,xmm14
       vaddss    xmm0,xmm0,xmm5
       vsubss    xmm5,xmm3,xmm7
       vmulss    xmm5,xmm5,xmm11
       vaddss    xmm0,xmm0,xmm5
       vinsertps xmm0,xmm10,xmm0,10
       vsubss    xmm1,xmm1,xmm8
       vmulss    xmm1,xmm1,xmm12
       vaddss    xmm3,xmm3,xmm7
       vmulss    xmm3,xmm3,xmm14
       vaddss    xmm1,xmm1,xmm3
       vsubss    xmm2,xmm2,xmm4
       vmulss    xmm2,xmm2,xmm11
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vinsertps xmm0,xmm0,xmm6,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+80]
       vmovaps   xmm7,[rsp+70]
       vmovaps   xmm8,[rsp+60]
       vmovaps   xmm9,[rsp+50]
       vmovaps   xmm10,[rsp+40]
       vmovaps   xmm11,[rsp+30]
       vmovaps   xmm12,[rsp+20]
       vmovaps   xmm13,[rsp+10]
       vmovaps   xmm14,[rsp]
       add       rsp,98
       ret
; Total bytes of code 376

System.Numerics.Tests.Perf_Vector4.TransformVector2ByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 4.100956090738956 > 0.802830786398839.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -507.1357585803219 (T) = (0 -4.090488857232078) / Math.Sqrt((3.958503924877104E-05 / (38)) + (0.0010506206069021665 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -4.365240949280058 = (0.7624054345184563 - 4.090488857232078) / 0.7624054345184563 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector4.TransformVector2ByQuaternionBenchmark()
       vzeroupper
       vmovss    xmm0,dword ptr [7FF7DE105300]
       vmovsd    xmm1,qword ptr [7FF7DE105308]
       vmovaps   xmm2,xmm1
       vmulss    xmm3,xmm2,dword ptr [7FF7DE105300]
       vmovshdup xmm1,xmm1
       vxorps    xmm4,xmm4,xmm4
       vmulss    xmm4,xmm1,xmm4
       vaddss    xmm3,xmm3,xmm4
       vxorps    xmm5,xmm5,xmm5
       vmulss    xmm2,xmm2,xmm5
       vaddss    xmm1,xmm2,xmm1
       vinsertps xmm1,xmm3,xmm1,10
       vaddss    xmm2,xmm4,xmm2
       vinsertps xmm1,xmm1,xmm2,20
       vinsertps xmm0,xmm1,xmm0,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       ret
; Total bytes of code 89

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector4.TransformVector2ByQuaternionBenchmark()
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovups   xmm0,[7FFBC9A453B0]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm7,xmm2,xmm0
       vmulss    xmm8,xmm4,xmm0
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm9,xmm4,xmm1
       vmulss    xmm1,xmm6,xmm1
       vmulss    xmm4,xmm4,xmm3
       vmulss    xmm3,xmm6,xmm3
       vmulss    xmm5,xmm6,xmm5
       vmovss    xmm6,dword ptr [7FFBC9A453C0]
       vsubss    xmm4,xmm6,xmm4
       vsubss    xmm4,xmm4,xmm5
       vmovsd    xmm10,qword ptr [7FFBC9A453C8]
       vmovaps   xmm11,xmm10
       vmulss    xmm4,xmm4,xmm11
       vsubss    xmm12,xmm9,xmm0
       vmovshdup xmm10,xmm10
       vmulss    xmm12,xmm12,xmm10
       vaddss    xmm4,xmm4,xmm12
       vaddss    xmm0,xmm9,xmm0
       vmulss    xmm0,xmm0,xmm11
       vsubss    xmm2,xmm6,xmm2
       vsubss    xmm2,xmm2,xmm5
       vmulss    xmm2,xmm2,xmm10
       vaddss    xmm0,xmm0,xmm2
       vinsertps xmm0,xmm4,xmm0,10
       vsubss    xmm1,xmm1,xmm8
       vmulss    xmm1,xmm1,xmm11
       vaddss    xmm2,xmm3,xmm7
       vmulss    xmm2,xmm2,xmm10
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vinsertps xmm0,xmm0,xmm6,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 294

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

@performanceautofiler
Copy link
Author

performanceautofiler bot commented Feb 7, 2023

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Regressions in System.Numerics.Tests.Perf_Vector3

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TransformByQuaternionBenchmark - Duration of single invocation 1.56 ns 5.84 ns 3.75 0.10 False 26.822726022539733 74.35922798789504 2.7722472326418024 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Vector3*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_Vector3.TransformByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.844514006980181 > 1.63706632739755.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -305.4018472080218 (T) = (0 -5.70248256631275) / Math.Sqrt((5.9585790443678345E-05 / (38)) + (0.004553061603072814 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -2.647730967229928 = (1.5632958180145595 - 5.70248256631275) / 1.5632958180145595 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector3.TransformByQuaternionBenchmark()
       sub       rsp,18
       vzeroupper
       vmovaps   [rsp],xmm6
       vmovups   xmm0,[7FF99F815320]
       vmovaps   xmm1,xmm0
       vmulss    xmm2,xmm1,dword ptr [7FF99F815330]
       vmovshdup xmm3,xmm0
       vxorps    xmm4,xmm4,xmm4
       vmulss    xmm4,xmm3,xmm4
       vaddss    xmm2,xmm2,xmm4
       vunpckhps xmm0,xmm0,xmm0
       vxorps    xmm5,xmm5,xmm5
       vmulss    xmm5,xmm0,xmm5
       vaddss    xmm2,xmm2,xmm5
       vxorps    xmm6,xmm6,xmm6
       vmulss    xmm1,xmm1,xmm6
       vaddss    xmm3,xmm1,xmm3
       vaddss    xmm3,xmm3,xmm5
       vinsertps xmm2,xmm2,xmm3,10
       vaddss    xmm1,xmm4,xmm1
       vaddss    xmm0,xmm1,xmm0
       vinsertps xmm0,xmm2,xmm0,28
       vmovsd    qword ptr [rdx],xmm0
       vextractps dword ptr [rdx+8],xmm0,2
       mov       rax,rdx
       vmovaps   xmm6,[rsp]
       add       rsp,18
       ret
; Total bytes of code 124

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector3.TransformByQuaternionBenchmark()
       sub       rsp,98
       vzeroupper
       vmovaps   [rsp+80],xmm6
       vmovaps   [rsp+70],xmm7
       vmovaps   [rsp+60],xmm8
       vmovaps   [rsp+50],xmm9
       vmovaps   [rsp+40],xmm10
       vmovaps   [rsp+30],xmm11
       vmovaps   [rsp+20],xmm12
       vmovaps   [rsp+10],xmm13
       vmovaps   [rsp],xmm14
       vmovups   xmm0,[7FF9AB2D5400]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm7,xmm2,xmm0
       vmulss    xmm8,xmm4,xmm0
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm9,xmm4,xmm1
       vmulss    xmm1,xmm6,xmm1
       vmulss    xmm4,xmm4,xmm3
       vmulss    xmm3,xmm6,xmm3
       vmulss    xmm5,xmm6,xmm5
       vmovss    xmm6,dword ptr [7FF9AB2D5410]
       vsubss    xmm10,xmm6,xmm4
       vsubss    xmm10,xmm10,xmm5
       vmovups   xmm11,[7FF9AB2D5420]
       vmovaps   xmm12,xmm11
       vmulss    xmm10,xmm10,xmm12
       vsubss    xmm13,xmm9,xmm0
       vmovshdup xmm14,xmm11
       vmulss    xmm13,xmm13,xmm14
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm13,xmm1,xmm8
       vunpckhps xmm11,xmm11,xmm11
       vmulss    xmm13,xmm13,xmm11
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm0,xmm9,xmm0
       vmulss    xmm0,xmm0,xmm12
       vsubss    xmm2,xmm6,xmm2
       vsubss    xmm5,xmm2,xmm5
       vmulss    xmm5,xmm5,xmm14
       vaddss    xmm0,xmm0,xmm5
       vsubss    xmm5,xmm3,xmm7
       vmulss    xmm5,xmm5,xmm11
       vaddss    xmm0,xmm0,xmm5
       vinsertps xmm0,xmm10,xmm0,10
       vsubss    xmm1,xmm1,xmm8
       vmulss    xmm1,xmm1,xmm12
       vaddss    xmm3,xmm3,xmm7
       vmulss    xmm3,xmm3,xmm14
       vaddss    xmm1,xmm1,xmm3
       vsubss    xmm2,xmm2,xmm4
       vmulss    xmm2,xmm2,xmm11
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,28
       vmovsd    qword ptr [rdx],xmm0
       vextractps dword ptr [rdx+8],xmm0,2
       mov       rax,rdx
       vmovaps   xmm6,[rsp+80]
       vmovaps   xmm7,[rsp+70]
       vmovaps   xmm8,[rsp+60]
       vmovaps   xmm9,[rsp+50]
       vmovaps   xmm10,[rsp+40]
       vmovaps   xmm11,[rsp+30]
       vmovaps   xmm12,[rsp+20]
       vmovaps   xmm13,[rsp+10]
       vmovaps   xmm14,[rsp]
       add       rsp,98
       ret
; Total bytes of code 377

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Regressions in System.Numerics.Tests.Perf_Plane

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TransformByQuaternionBenchmark - Duration of single invocation 2.18 ns 5.12 ns 2.34 0.12 False 33.80725905186875 70.5680541873443 2.0873639616591024 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Plane*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_Plane.TransformByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.1163400022657095 > 2.296761345559043.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -104.26129292419427 (T) = (0 -5.156024010271373) / Math.Sqrt((0.025449562617220162 / (38)) + (0.0030903719971422643 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -1.3231930342000449 = (2.2193696065582293 - 5.156024010271373) / 2.2193696065582293 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Plane.TransformByQuaternionBenchmark()
       sub       rsp,28
       vzeroupper
       vmovaps   [rsp+10],xmm6
       vmovaps   [rsp],xmm7
       mov       rax,1264C406A68
       mov       rax,[rax]
       add       rax,8
       vmovsd    xmm0,qword ptr [rax]
       vinsertps xmm0,xmm0,dword ptr [rax+8],28
       vmovss    xmm1,dword ptr [rax+0C]
       vmovaps   xmm2,xmm0
       vmovshdup xmm3,xmm0
       vunpckhps xmm0,xmm0,xmm0
       vxorps    xmm4,xmm4,xmm4
       vmulss    xmm4,xmm3,xmm4
       vaddss    xmm5,xmm2,xmm4
       vxorps    xmm6,xmm6,xmm6
       vmulss    xmm6,xmm0,xmm6
       vaddss    xmm5,xmm5,xmm6
       vxorps    xmm7,xmm7,xmm7
       vmulss    xmm2,xmm2,xmm7
       vaddss    xmm3,xmm2,xmm3
       vaddss    xmm3,xmm3,xmm6
       vinsertps xmm3,xmm5,xmm3,10
       vaddss    xmm2,xmm4,xmm2
       vaddss    xmm0,xmm2,xmm0
       vinsertps xmm0,xmm3,xmm0,28
       vmovsd    qword ptr [rdx],xmm0
       vextractps dword ptr [rdx+8],xmm0,2
       vmovss    dword ptr [rdx+0C],xmm1
       mov       rax,rdx
       vmovaps   xmm6,[rsp+10]
       vmovaps   xmm7,[rsp]
       add       rsp,28
       ret
; Total bytes of code 158

Compare Jit Disasm

; System.Numerics.Tests.Perf_Plane.TransformByQuaternionBenchmark()
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovups   xmm0,[7FF9B8F753D0]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm7,xmm2,xmm0
       vmulss    xmm8,xmm4,xmm0
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm9,xmm4,xmm1
       vmulss    xmm1,xmm6,xmm1
       vmulss    xmm4,xmm4,xmm3
       vmulss    xmm3,xmm6,xmm3
       vmulss    xmm5,xmm6,xmm5
       vmovss    xmm6,dword ptr [7FF9B8F753E0]
       vsubss    xmm10,xmm6,xmm4
       vsubss    xmm10,xmm10,xmm5
       vsubss    xmm11,xmm9,xmm0
       vaddss    xmm12,xmm1,xmm8
       vaddss    xmm0,xmm9,xmm0
       vsubss    xmm2,xmm6,xmm2
       vsubss    xmm5,xmm2,xmm5
       vsubss    xmm6,xmm3,xmm7
       vsubss    xmm1,xmm1,xmm8
       vaddss    xmm3,xmm3,xmm7
       vsubss    xmm2,xmm2,xmm4
       vmovups   xmm4,[7FF9B8F753F0]
       vmovaps   xmm7,xmm4
       vmovshdup xmm8,xmm4
       vunpckhps xmm9,xmm4,xmm4
       vmulss    xmm10,xmm7,xmm10
       vmulss    xmm11,xmm8,xmm11
       vaddss    xmm10,xmm10,xmm11
       vmulss    xmm11,xmm9,xmm12
       vaddss    xmm10,xmm10,xmm11
       vmulss    xmm0,xmm7,xmm0
       vmulss    xmm5,xmm8,xmm5
       vaddss    xmm0,xmm0,xmm5
       vmulss    xmm5,xmm9,xmm6
       vaddss    xmm0,xmm0,xmm5
       vinsertps xmm0,xmm10,xmm0,10
       vmulss    xmm1,xmm7,xmm1
       vmulss    xmm3,xmm8,xmm3
       vaddss    xmm1,xmm1,xmm3
       vmulss    xmm2,xmm9,xmm2
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vshufps   xmm1,xmm4,xmm4,0FF
       vinsertps xmm0,xmm0,xmm1,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 336

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

@performanceautofiler performanceautofiler bot added PGO untriaged New issue has not been triaged by the area owner labels Feb 7, 2023
@EgorBo EgorBo changed the title [Perf] Windows/x64: 10 Regressions on 2/2/2023 8:18:56 AM Regressions in System.Numerics.Tests Feb 7, 2023
@EgorBo EgorBo removed the untriaged New issue has not been triaged by the area owner label Feb 7, 2023
@EgorBo EgorBo transferred this issue from dotnet/perf-autofiling-issues Feb 7, 2023
@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 Feb 7, 2023
@ghost ghost added the untriaged New issue has not been triaged by the area owner label Feb 7, 2023
@ghost
Copy link

ghost commented Feb 7, 2023

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

Issue Details

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Regressions in System.Numerics.Tests.Perf_Quaternion

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
LengthSquaredBenchmark - Duration of single invocation 0.00 ns 1.04 ns 0.06 False Trace Trace
LengthBenchmark - Duration of single invocation 0.00 ns 1.04 ns 0.06 False -0.11767803968260403 1.852401797777939 -15.741270017533898 Trace Trace
SlerpBenchmark - Duration of single invocation 8.71 ns 11.58 ns 1.33 0.07 False 87.35053552639945 96.94180164487575 1.1098020299552438 Trace Trace
LerpBenchmark - Duration of single invocation 8.71 ns 11.46 ns 1.32 0.04 False 87.36235521544053 96.45028072538463 1.1040256468307517 Trace Trace

graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Quaternion*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_Quaternion.LengthSquaredBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 1.0363166035472344 > 0.
IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -731.5907363494977 (T) = (0 -1.0367084157573616) / Math.Sqrt((5.187377291605866E-05 / (38)) + (1.577644041218473E-05 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -335.8787115919655 = (0.0030773936734032766 - 1.0367084157573616) / 0.0030773936734032766 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Quaternion.LengthSquaredBenchmark()
       vzeroupper
       vmovss    xmm0,dword ptr [7FFE7D934E80]
       ret
; Total bytes of code 12

Compare Jit Disasm

; System.Numerics.Tests.Perf_Quaternion.LengthSquaredBenchmark()
       vzeroupper
       vmovups   xmm0,[7FFB80444EB0]
       vdpps     xmm0,xmm0,[7FFB80444EB0],0FF
       ret
; Total bytes of code 22

System.Numerics.Tests.Perf_Quaternion.LengthBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 1.0356956434939693 > 0.
IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -840.0216859863431 (T) = (0 -1.0368072513018893) / Math.Sqrt((5.1986637393728984E-05 / (38)) + (3.65736932597433E-06 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -335.5468090566671 = (0.003080722275180787 - 1.0368072513018893) / 0.003080722275180787 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Quaternion.LengthBenchmark()
       vzeroupper
       vmovss    xmm0,dword ptr [7FFAA7AC4E80]
       ret
; Total bytes of code 12

Compare Jit Disasm

; System.Numerics.Tests.Perf_Quaternion.LengthBenchmark()
       vzeroupper
       vmovups   xmm0,[7FF8FF1E4EB0]
       vdpps     xmm0,xmm0,[7FF8FF1E4EB0],0FF
       vsqrtss   xmm0,xmm0,xmm0
       ret
; Total bytes of code 26

System.Numerics.Tests.Perf_Quaternion.SlerpBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 11.584437906324805 > 9.160248058426017.
IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -288.22962816383796 (T) = (0 -11.474283585002874) / Math.Sqrt((0.0006529603262924105 / (38)) + (0.0018408209869257982 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -0.31472301857383916 = (8.727529238401663 - 11.474283585002874) / 8.727529238401663 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Quaternion.SlerpBenchmark()
       push      rsi
       sub       rsp,40
       vzeroupper
       mov       rsi,rdx
       vxorps    xmm3,xmm3,xmm3
       vmovups   [rsp+30],xmm3
       xor       ecx,ecx
       mov       [rsp+20],ecx
       mov       [rsp+24],ecx
       mov       [rsp+28],ecx
       mov       dword ptr [rsp+2C],3F800000
       mov       rcx,rsi
       lea       r8,[rsp+20]
       lea       rdx,[rsp+30]
       vmovss    xmm3,dword ptr [7FFC1D725030]
       call      qword ptr [7FFC1DAE1CF0]; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       mov       rax,rsi
       add       rsp,40
       pop       rsi
       ret
; Total bytes of code 79
; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovss    xmm0,dword ptr [r8]
       vmovss    xmm1,dword ptr [r8+4]
       vmovss    xmm2,dword ptr [r8+8]
       vmovss    xmm4,dword ptr [r8+0C]
       vmovss    xmm5,dword ptr [rdx]
       vmovss    xmm6,dword ptr [rdx+4]
       vmovss    xmm7,dword ptr [rdx+8]
       vmovss    xmm8,dword ptr [rdx+0C]
       vmovss    xmm9,dword ptr [7FFC1D7251F0]
       vsubss    xmm10,xmm9,xmm3
       vmulss    xmm11,xmm5,xmm0
       vmulss    xmm12,xmm6,xmm1
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm7,xmm2
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm8,xmm4
       vaddss    xmm11,xmm11,xmm12
       vxorps    xmm12,xmm12,xmm12
       vucomiss  xmm11,xmm12
       jb        short M01_L00
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vaddss    xmm0,xmm5,xmm0
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vaddss    xmm1,xmm5,xmm1
       vmulss    xmm5,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vaddss    xmm2,xmm5,xmm2
       vmulss    xmm5,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vaddss    xmm3,xmm5,xmm3
       jmp       short M01_L01
M01_L00:
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vsubss    xmm0,xmm5,xmm0
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vsubss    xmm1,xmm5,xmm1
       vmulss    xmm5,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vsubss    xmm2,xmm5,xmm2
       vmulss    xmm5,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vsubss    xmm3,xmm5,xmm3
M01_L01:
       vmulss    xmm4,xmm0,xmm0
       vmulss    xmm5,xmm1,xmm1
       vaddss    xmm4,xmm4,xmm5
       vmulss    xmm5,xmm2,xmm2
       vaddss    xmm4,xmm4,xmm5
       vmulss    xmm5,xmm3,xmm3
       vaddss    xmm4,xmm4,xmm5
       vsqrtss   xmm4,xmm4,xmm4
       vdivss    xmm4,xmm9,xmm4
       vmulss    xmm0,xmm0,xmm4
       vmulss    xmm1,xmm1,xmm4
       vmulss    xmm2,xmm2,xmm4
       vmulss    xmm3,xmm3,xmm4
       vmovss    dword ptr [rcx],xmm0
       vmovss    dword ptr [rcx+4],xmm1
       vmovss    dword ptr [rcx+8],xmm2
       vmovss    dword ptr [rcx+0C],xmm3
       mov       rax,rcx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 365

Compare Jit Disasm

; System.Numerics.Tests.Perf_Quaternion.SlerpBenchmark()
       push      rsi
       sub       rsp,40
       vzeroupper
       mov       rsi,rdx
       vxorps    xmm3,xmm3,xmm3
       vmovaps   [rsp+30],xmm3
       vmovups   xmm3,[7FF8FF1E5030]
       vmovaps   [rsp+20],xmm3
       mov       rcx,rsi
       lea       r8,[rsp+20]
       lea       rdx,[rsp+30]
       vmovss    xmm3,dword ptr [7FF8FF1E5040]
       call      qword ptr [7FF8FF5A1CA8]; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       mov       rax,rsi
       add       rsp,40
       pop       rsi
       ret
; Total bytes of code 71
; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovss    xmm0,dword ptr [r8]
       vmovss    xmm1,dword ptr [r8+4]
       vmovss    xmm2,dword ptr [r8+8]
       vmovss    xmm4,dword ptr [r8+0C]
       vmovss    xmm5,dword ptr [rdx]
       vmovss    xmm6,dword ptr [rdx+4]
       vmovss    xmm7,dword ptr [rdx+8]
       vmovss    xmm8,dword ptr [rdx+0C]
       vmovss    xmm9,dword ptr [7FF8FF1E5228]
       vsubss    xmm10,xmm9,xmm3
       vmulss    xmm11,xmm5,xmm0
       vmulss    xmm12,xmm6,xmm1
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm7,xmm2
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm8,xmm4
       vaddss    xmm11,xmm11,xmm12
       vxorps    xmm12,xmm12,xmm12
       vucomiss  xmm11,xmm12
       jb        short M01_L00
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vaddss    xmm0,xmm5,xmm0
       vinsertps xmm0,xmm0,xmm0,0E
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vaddss    xmm1,xmm5,xmm1
       vinsertps xmm0,xmm0,xmm1,10
       vmulss    xmm1,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vmulss    xmm1,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vaddss    xmm4,xmm1,xmm3
       vinsertps xmm0,xmm0,xmm4,30
       jmp       short M01_L01
M01_L00:
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vsubss    xmm0,xmm5,xmm0
       vinsertps xmm0,xmm0,xmm0,0E
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vsubss    xmm1,xmm5,xmm1
       vinsertps xmm0,xmm0,xmm1,10
       vmulss    xmm1,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vsubss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vmulss    xmm1,xmm10,xmm8
       vmulss    xmm2,xmm3,xmm4
       vsubss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,30
M01_L01:
       vmovaps   xmm1,xmm0
       vmulss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vunpckhps xmm3,xmm0,xmm0
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vshufps   xmm3,xmm0,xmm0,0FF
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vsqrtss   xmm2,xmm2,xmm2
       vdivss    xmm2,xmm9,xmm2
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,0
       vmovshdup xmm1,xmm0
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,10
       vunpckhps xmm1,xmm0,xmm0
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vshufps   xmm1,xmm0,xmm0,0FF
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,30
       vmovups   [rcx],xmm0
       mov       rax,rcx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 452

System.Numerics.Tests.Perf_Quaternion.LerpBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 11.46262173778344 > 9.185412534754093.
IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -334.0209415723982 (T) = (0 -11.474521821264013) / Math.Sqrt((0.00044598270122739417 / (38)) + (0.0013920109515264938 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -0.31408453364314826 = (8.731951048424731 - 11.474521821264013) / 8.731951048424731 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Quaternion.LerpBenchmark()
       push      rsi
       sub       rsp,40
       vzeroupper
       mov       rsi,rdx
       vxorps    xmm3,xmm3,xmm3
       vmovups   [rsp+30],xmm3
       xor       ecx,ecx
       mov       [rsp+20],ecx
       mov       [rsp+24],ecx
       mov       [rsp+28],ecx
       mov       dword ptr [rsp+2C],3F800000
       mov       rcx,rsi
       lea       r8,[rsp+20]
       lea       rdx,[rsp+30]
       vmovss    xmm3,dword ptr [7FFBA68B5030]
       call      qword ptr [7FFBA6C71CF0]; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       mov       rax,rsi
       add       rsp,40
       pop       rsi
       ret
; Total bytes of code 79
; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovss    xmm0,dword ptr [r8]
       vmovss    xmm1,dword ptr [r8+4]
       vmovss    xmm2,dword ptr [r8+8]
       vmovss    xmm4,dword ptr [r8+0C]
       vmovss    xmm5,dword ptr [rdx]
       vmovss    xmm6,dword ptr [rdx+4]
       vmovss    xmm7,dword ptr [rdx+8]
       vmovss    xmm8,dword ptr [rdx+0C]
       vmovss    xmm9,dword ptr [7FFBA68B51F0]
       vsubss    xmm10,xmm9,xmm3
       vmulss    xmm11,xmm5,xmm0
       vmulss    xmm12,xmm6,xmm1
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm7,xmm2
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm8,xmm4
       vaddss    xmm11,xmm11,xmm12
       vxorps    xmm12,xmm12,xmm12
       vucomiss  xmm11,xmm12
       jb        short M01_L00
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vaddss    xmm0,xmm5,xmm0
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vaddss    xmm1,xmm5,xmm1
       vmulss    xmm5,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vaddss    xmm2,xmm5,xmm2
       vmulss    xmm5,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vaddss    xmm3,xmm5,xmm3
       jmp       short M01_L01
M01_L00:
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vsubss    xmm0,xmm5,xmm0
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vsubss    xmm1,xmm5,xmm1
       vmulss    xmm5,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vsubss    xmm2,xmm5,xmm2
       vmulss    xmm5,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vsubss    xmm3,xmm5,xmm3
M01_L01:
       vmulss    xmm4,xmm0,xmm0
       vmulss    xmm5,xmm1,xmm1
       vaddss    xmm4,xmm4,xmm5
       vmulss    xmm5,xmm2,xmm2
       vaddss    xmm4,xmm4,xmm5
       vmulss    xmm5,xmm3,xmm3
       vaddss    xmm4,xmm4,xmm5
       vsqrtss   xmm4,xmm4,xmm4
       vdivss    xmm4,xmm9,xmm4
       vmulss    xmm0,xmm0,xmm4
       vmulss    xmm1,xmm1,xmm4
       vmulss    xmm2,xmm2,xmm4
       vmulss    xmm3,xmm3,xmm4
       vmovss    dword ptr [rcx],xmm0
       vmovss    dword ptr [rcx+4],xmm1
       vmovss    dword ptr [rcx+8],xmm2
       vmovss    dword ptr [rcx+0C],xmm3
       mov       rax,rcx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 365

Compare Jit Disasm

; System.Numerics.Tests.Perf_Quaternion.LerpBenchmark()
       push      rsi
       sub       rsp,40
       vzeroupper
       mov       rsi,rdx
       vxorps    xmm3,xmm3,xmm3
       vmovaps   [rsp+30],xmm3
       vmovups   xmm3,[7FFDA9A45030]
       vmovaps   [rsp+20],xmm3
       mov       rcx,rsi
       lea       r8,[rsp+20]
       lea       rdx,[rsp+30]
       vmovss    xmm3,dword ptr [7FFDA9A45040]
       call      qword ptr [7FFDA9E01CA8]; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       mov       rax,rsi
       add       rsp,40
       pop       rsi
       ret
; Total bytes of code 71
; System.Numerics.Quaternion.Lerp(System.Numerics.Quaternion, System.Numerics.Quaternion, Single)
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovss    xmm0,dword ptr [r8]
       vmovss    xmm1,dword ptr [r8+4]
       vmovss    xmm2,dword ptr [r8+8]
       vmovss    xmm4,dword ptr [r8+0C]
       vmovss    xmm5,dword ptr [rdx]
       vmovss    xmm6,dword ptr [rdx+4]
       vmovss    xmm7,dword ptr [rdx+8]
       vmovss    xmm8,dword ptr [rdx+0C]
       vmovss    xmm9,dword ptr [7FFDA9A45228]
       vsubss    xmm10,xmm9,xmm3
       vmulss    xmm11,xmm5,xmm0
       vmulss    xmm12,xmm6,xmm1
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm7,xmm2
       vaddss    xmm11,xmm11,xmm12
       vmulss    xmm12,xmm8,xmm4
       vaddss    xmm11,xmm11,xmm12
       vxorps    xmm12,xmm12,xmm12
       vucomiss  xmm11,xmm12
       jb        short M01_L00
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vaddss    xmm0,xmm5,xmm0
       vinsertps xmm0,xmm0,xmm0,0E
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vaddss    xmm1,xmm5,xmm1
       vinsertps xmm0,xmm0,xmm1,10
       vmulss    xmm1,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vmulss    xmm1,xmm10,xmm8
       vmulss    xmm3,xmm3,xmm4
       vaddss    xmm4,xmm1,xmm3
       vinsertps xmm0,xmm0,xmm4,30
       jmp       short M01_L01
M01_L00:
       vmulss    xmm5,xmm10,xmm5
       vmulss    xmm0,xmm3,xmm0
       vsubss    xmm0,xmm5,xmm0
       vinsertps xmm0,xmm0,xmm0,0E
       vmulss    xmm5,xmm10,xmm6
       vmulss    xmm1,xmm3,xmm1
       vsubss    xmm1,xmm5,xmm1
       vinsertps xmm0,xmm0,xmm1,10
       vmulss    xmm1,xmm10,xmm7
       vmulss    xmm2,xmm3,xmm2
       vsubss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vmulss    xmm1,xmm10,xmm8
       vmulss    xmm2,xmm3,xmm4
       vsubss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,30
M01_L01:
       vmovaps   xmm1,xmm0
       vmulss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vunpckhps xmm3,xmm0,xmm0
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vshufps   xmm3,xmm0,xmm0,0FF
       vmulss    xmm3,xmm3,xmm3
       vaddss    xmm2,xmm2,xmm3
       vsqrtss   xmm2,xmm2,xmm2
       vdivss    xmm2,xmm9,xmm2
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,0
       vmovshdup xmm1,xmm0
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,10
       vunpckhps xmm1,xmm0,xmm0
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vshufps   xmm1,xmm0,xmm0,0FF
       vmulss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,30
       vmovups   [rcx],xmm0
       mov       rax,rcx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 452

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Regressions in System.Numerics.Tests.Perf_Vector2

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TransformByQuaternionBenchmark - Duration of single invocation 0.48 ns 2.35 ns 4.90 0.05 False 11.868376639215034 38.79794674413647 3.2690188324443445 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Vector2*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_Vector2.TransformByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 2.348510100717621 > 0.5011597860031543.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -549.5060160365665 (T) = (0 -2.3426211298263793) / Math.Sqrt((0.00037146637253266084 / (38)) + (4.617113394953245E-05 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -3.9920016364506417 = (0.4692749122358069 - 2.3426211298263793) / 0.4692749122358069 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector2.TransformByQuaternionBenchmark()
       vzeroupper
       vmovsd    xmm0,qword ptr [7FFBC9A45220]
       vmovaps   xmm1,xmm0
       vmulss    xmm2,xmm1,dword ptr [7FFBC9A45228]
       vmovshdup xmm0,xmm0
       vxorps    xmm3,xmm3,xmm3
       vmulss    xmm3,xmm0,xmm3
       vaddss    xmm2,xmm2,xmm3
       vxorps    xmm3,xmm3,xmm3
       vmulss    xmm1,xmm1,xmm3
       vaddss    xmm0,xmm1,xmm0
       vinsertps xmm0,xmm2,xmm0,1C
       vmovq     rax,xmm0
       ret
; Total bytes of code 63

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector2.TransformByQuaternionBenchmark()
       sub       rsp,38
       vzeroupper
       vmovaps   [rsp+20],xmm6
       vmovaps   [rsp+10],xmm7
       vmovaps   [rsp],xmm8
       vmovups   xmm0,[7FF99F7F5280]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm1,xmm4,xmm1
       vmulss    xmm3,xmm4,xmm3
       vmulss    xmm4,xmm6,xmm5
       vmovss    xmm5,dword ptr [7FF99F7F5290]
       vsubss    xmm3,xmm5,xmm3
       vsubss    xmm3,xmm3,xmm4
       vmovsd    xmm6,qword ptr [7FF99F7F5298]
       vmovaps   xmm7,xmm6
       vmulss    xmm3,xmm3,xmm7
       vsubss    xmm8,xmm1,xmm0
       vmovshdup xmm6,xmm6
       vmulss    xmm8,xmm8,xmm6
       vaddss    xmm3,xmm3,xmm8
       vaddss    xmm0,xmm1,xmm0
       vmulss    xmm0,xmm0,xmm7
       vsubss    xmm1,xmm5,xmm2
       vsubss    xmm1,xmm1,xmm4
       vmulss    xmm1,xmm1,xmm6
       vaddss    xmm0,xmm0,xmm1
       vinsertps xmm0,xmm3,xmm0,1C
       vmovq     rax,xmm0
       vmovaps   xmm6,[rsp+20]
       vmovaps   xmm7,[rsp+10]
       vmovaps   xmm8,[rsp]
       add       rsp,38
       ret
; Total bytes of code 187

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Regressions in System.Numerics.Tests.Perf_Vector4

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TransformVector3ByQuaternionBenchmark - Duration of single invocation 1.72 ns 5.77 ns 3.35 0.03 False 29.838415371780584 74.33215468594643 2.491156241368146 Trace Trace
TransformByQuaternionBenchmark - Duration of single invocation 1.71 ns 5.67 ns 3.30 0.04 False Trace Trace
TransformVector2ByQuaternionBenchmark - Duration of single invocation 0.76 ns 4.10 ns 5.36 0.02 False 17.856500875766532 59.73140213643394 3.345078778423874 Trace Trace

graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Vector4*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_Vector4.TransformVector3ByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.76689777048781 > 1.8014469428774322.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -202.71081880573607 (T) = (0 -5.643370412680244) / Math.Sqrt((5.149061247893137E-05 / (38)) + (0.009334782051756746 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -2.28251717057742 = (1.7192203785753637 - 5.643370412680244) / 1.7192203785753637 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector4.TransformVector3ByQuaternionBenchmark()
       sub       rsp,28
       vzeroupper
       vmovaps   [rsp+10],xmm6
       vmovaps   [rsp],xmm7
       vmovss    xmm0,dword ptr [7FFBB5D15330]
       vmovups   xmm1,[7FFBB5D15340]
       vmovaps   xmm2,xmm1
       vmulss    xmm3,xmm2,dword ptr [7FFBB5D15330]
       vmovshdup xmm4,xmm1
       vxorps    xmm5,xmm5,xmm5
       vmulss    xmm5,xmm4,xmm5
       vaddss    xmm3,xmm3,xmm5
       vunpckhps xmm1,xmm1,xmm1
       vxorps    xmm6,xmm6,xmm6
       vmulss    xmm6,xmm1,xmm6
       vaddss    xmm3,xmm3,xmm6
       vxorps    xmm7,xmm7,xmm7
       vmulss    xmm2,xmm2,xmm7
       vaddss    xmm4,xmm2,xmm4
       vaddss    xmm4,xmm4,xmm6
       vinsertps xmm3,xmm3,xmm4,10
       vaddss    xmm2,xmm5,xmm2
       vaddss    xmm1,xmm2,xmm1
       vinsertps xmm1,xmm3,xmm1,20
       vinsertps xmm0,xmm1,xmm0,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+10]
       vmovaps   xmm7,[rsp]
       add       rsp,28
       ret
; Total bytes of code 143

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector4.TransformVector3ByQuaternionBenchmark()
       sub       rsp,98
       vzeroupper
       vmovaps   [rsp+80],xmm6
       vmovaps   [rsp+70],xmm7
       vmovaps   [rsp+60],xmm8
       vmovaps   [rsp+50],xmm9
       vmovaps   [rsp+40],xmm10
       vmovaps   [rsp+30],xmm11
       vmovaps   [rsp+20],xmm12
       vmovaps   [rsp+10],xmm13
       vmovaps   [rsp],xmm14
       vmovups   xmm0,[7FF7D5035400]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm7,xmm2,xmm0
       vmulss    xmm8,xmm4,xmm0
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm9,xmm4,xmm1
       vmulss    xmm1,xmm6,xmm1
       vmulss    xmm4,xmm4,xmm3
       vmulss    xmm3,xmm6,xmm3
       vmulss    xmm5,xmm6,xmm5
       vmovss    xmm6,dword ptr [7FF7D5035410]
       vsubss    xmm10,xmm6,xmm4
       vsubss    xmm10,xmm10,xmm5
       vmovups   xmm11,[7FF7D5035420]
       vmovaps   xmm12,xmm11
       vmulss    xmm10,xmm10,xmm12
       vsubss    xmm13,xmm9,xmm0
       vmovshdup xmm14,xmm11
       vmulss    xmm13,xmm13,xmm14
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm13,xmm1,xmm8
       vunpckhps xmm11,xmm11,xmm11
       vmulss    xmm13,xmm13,xmm11
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm0,xmm9,xmm0
       vmulss    xmm0,xmm0,xmm12
       vsubss    xmm2,xmm6,xmm2
       vsubss    xmm5,xmm2,xmm5
       vmulss    xmm5,xmm5,xmm14
       vaddss    xmm0,xmm0,xmm5
       vsubss    xmm5,xmm3,xmm7
       vmulss    xmm5,xmm5,xmm11
       vaddss    xmm0,xmm0,xmm5
       vinsertps xmm0,xmm10,xmm0,10
       vsubss    xmm1,xmm1,xmm8
       vmulss    xmm1,xmm1,xmm12
       vaddss    xmm3,xmm3,xmm7
       vmulss    xmm3,xmm3,xmm14
       vaddss    xmm1,xmm1,xmm3
       vsubss    xmm2,xmm2,xmm4
       vmulss    xmm2,xmm2,xmm11
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vinsertps xmm0,xmm0,xmm6,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+80]
       vmovaps   xmm7,[rsp+70]
       vmovaps   xmm8,[rsp+60]
       vmovaps   xmm9,[rsp+50]
       vmovaps   xmm10,[rsp+40]
       vmovaps   xmm11,[rsp+30]
       vmovaps   xmm12,[rsp+20]
       vmovaps   xmm13,[rsp+10]
       vmovaps   xmm14,[rsp]
       add       rsp,98
       ret
; Total bytes of code 376

System.Numerics.Tests.Perf_Vector4.TransformByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.667508672725275 > 1.8007705628396937.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -272.4541331568984 (T) = (0 -5.577559804268514) / Math.Sqrt((5.4883813116301784E-05 / (37)) + (0.004977484602390882 / (25))) is less than -2.0002978220134566 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (37) + (25) - 2, .025) and -2.2449042241690633 = (1.7188673128547527 - 5.577559804268514) / 1.7188673128547527 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector4.TransformByQuaternionBenchmark()
       sub       rsp,28
       vzeroupper
       vmovaps   [rsp+10],xmm6
       vmovaps   [rsp],xmm7
       vmovss    xmm0,dword ptr [7FFB80435330]
       vmovups   xmm1,[7FFB80435340]
       vmovaps   xmm2,xmm1
       vmulss    xmm3,xmm2,dword ptr [7FFB80435330]
       vmovshdup xmm4,xmm1
       vxorps    xmm5,xmm5,xmm5
       vmulss    xmm5,xmm4,xmm5
       vaddss    xmm3,xmm3,xmm5
       vunpckhps xmm1,xmm1,xmm1
       vxorps    xmm6,xmm6,xmm6
       vmulss    xmm6,xmm1,xmm6
       vaddss    xmm3,xmm3,xmm6
       vxorps    xmm7,xmm7,xmm7
       vmulss    xmm2,xmm2,xmm7
       vaddss    xmm4,xmm2,xmm4
       vaddss    xmm4,xmm4,xmm6
       vinsertps xmm3,xmm3,xmm4,10
       vaddss    xmm2,xmm5,xmm2
       vaddss    xmm1,xmm2,xmm1
       vinsertps xmm1,xmm3,xmm1,20
       vinsertps xmm0,xmm1,xmm0,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+10]
       vmovaps   xmm7,[rsp]
       add       rsp,28
       ret
; Total bytes of code 143

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector4.TransformByQuaternionBenchmark()
       sub       rsp,98
       vzeroupper
       vmovaps   [rsp+80],xmm6
       vmovaps   [rsp+70],xmm7
       vmovaps   [rsp+60],xmm8
       vmovaps   [rsp+50],xmm9
       vmovaps   [rsp+40],xmm10
       vmovaps   [rsp+30],xmm11
       vmovaps   [rsp+20],xmm12
       vmovaps   [rsp+10],xmm13
       vmovaps   [rsp],xmm14
       vmovups   xmm0,[7FFE7D935400]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm7,xmm2,xmm0
       vmulss    xmm8,xmm4,xmm0
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm9,xmm4,xmm1
       vmulss    xmm1,xmm6,xmm1
       vmulss    xmm4,xmm4,xmm3
       vmulss    xmm3,xmm6,xmm3
       vmulss    xmm5,xmm6,xmm5
       vmovss    xmm6,dword ptr [7FFE7D935410]
       vsubss    xmm10,xmm6,xmm4
       vsubss    xmm10,xmm10,xmm5
       vmovups   xmm11,[7FFE7D935420]
       vmovaps   xmm12,xmm11
       vmulss    xmm10,xmm10,xmm12
       vsubss    xmm13,xmm9,xmm0
       vmovshdup xmm14,xmm11
       vmulss    xmm13,xmm13,xmm14
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm13,xmm1,xmm8
       vunpckhps xmm11,xmm11,xmm11
       vmulss    xmm13,xmm13,xmm11
       vaddss    xmm10,xmm10,xmm13
       vaddss    xmm0,xmm9,xmm0
       vmulss    xmm0,xmm0,xmm12
       vsubss    xmm2,xmm6,xmm2
       vsubss    xmm5,xmm2,xmm5
       vmulss    xmm5,xmm5,xmm14
       vaddss    xmm0,xmm0,xmm5
       vsubss    xmm5,xmm3,xmm7
       vmulss    xmm5,xmm5,xmm11
       vaddss    xmm0,xmm0,xmm5
       vinsertps xmm0,xmm10,xmm0,10
       vsubss    xmm1,xmm1,xmm8
       vmulss    xmm1,xmm1,xmm12
       vaddss    xmm3,xmm3,xmm7
       vmulss    xmm3,xmm3,xmm14
       vaddss    xmm1,xmm1,xmm3
       vsubss    xmm2,xmm2,xmm4
       vmulss    xmm2,xmm2,xmm11
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vinsertps xmm0,xmm0,xmm6,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+80]
       vmovaps   xmm7,[rsp+70]
       vmovaps   xmm8,[rsp+60]
       vmovaps   xmm9,[rsp+50]
       vmovaps   xmm10,[rsp+40]
       vmovaps   xmm11,[rsp+30]
       vmovaps   xmm12,[rsp+20]
       vmovaps   xmm13,[rsp+10]
       vmovaps   xmm14,[rsp]
       add       rsp,98
       ret
; Total bytes of code 376

System.Numerics.Tests.Perf_Vector4.TransformVector2ByQuaternionBenchmark


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 4.100956090738956 > 0.802830786398839.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 2/2/2023 5:46:53 AM, 2/7/2023 2:48:42 AM falls between 1/29/2023 12:56:15 AM and 2/7/2023 2:48:42 AM.
IsRegressionStdDev: Marked as regression because -507.1357585803219 (T) = (0 -4.090488857232078) / Math.Sqrt((3.958503924877104E-05 / (38)) + (0.0010506206069021665 / (25))) is less than -1.9996235849941724 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (38) + (25) - 2, .025) and -4.365240949280058 = (0.7624054345184563 - 4.090488857232078) / 0.7624054345184563 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Numerics.Tests.Perf_Vector4.TransformVector2ByQuaternionBenchmark()
       vzeroupper
       vmovss    xmm0,dword ptr [7FF7DE105300]
       vmovsd    xmm1,qword ptr [7FF7DE105308]
       vmovaps   xmm2,xmm1
       vmulss    xmm3,xmm2,dword ptr [7FF7DE105300]
       vmovshdup xmm1,xmm1
       vxorps    xmm4,xmm4,xmm4
       vmulss    xmm4,xmm1,xmm4
       vaddss    xmm3,xmm3,xmm4
       vxorps    xmm5,xmm5,xmm5
       vmulss    xmm2,xmm2,xmm5
       vaddss    xmm1,xmm2,xmm1
       vinsertps xmm1,xmm3,xmm1,10
       vaddss    xmm2,xmm4,xmm2
       vinsertps xmm1,xmm1,xmm2,20
       vinsertps xmm0,xmm1,xmm0,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       ret
; Total bytes of code 89

Compare Jit Disasm

; System.Numerics.Tests.Perf_Vector4.TransformVector2ByQuaternionBenchmark()
       sub       rsp,78
       vzeroupper
       vmovaps   [rsp+60],xmm6
       vmovaps   [rsp+50],xmm7
       vmovaps   [rsp+40],xmm8
       vmovaps   [rsp+30],xmm9
       vmovaps   [rsp+20],xmm10
       vmovaps   [rsp+10],xmm11
       vmovaps   [rsp],xmm12
       vmovups   xmm0,[7FFBC9A453B0]
       vmovaps   xmm1,xmm0
       vaddss    xmm2,xmm1,xmm1
       vmovshdup xmm3,xmm0
       vaddss    xmm4,xmm3,xmm3
       vunpckhps xmm5,xmm0,xmm0
       vaddss    xmm6,xmm5,xmm5
       vshufps   xmm0,xmm0,xmm0,0FF
       vmulss    xmm7,xmm2,xmm0
       vmulss    xmm8,xmm4,xmm0
       vmulss    xmm0,xmm6,xmm0
       vmulss    xmm2,xmm2,xmm1
       vmulss    xmm9,xmm4,xmm1
       vmulss    xmm1,xmm6,xmm1
       vmulss    xmm4,xmm4,xmm3
       vmulss    xmm3,xmm6,xmm3
       vmulss    xmm5,xmm6,xmm5
       vmovss    xmm6,dword ptr [7FFBC9A453C0]
       vsubss    xmm4,xmm6,xmm4
       vsubss    xmm4,xmm4,xmm5
       vmovsd    xmm10,qword ptr [7FFBC9A453C8]
       vmovaps   xmm11,xmm10
       vmulss    xmm4,xmm4,xmm11
       vsubss    xmm12,xmm9,xmm0
       vmovshdup xmm10,xmm10
       vmulss    xmm12,xmm12,xmm10
       vaddss    xmm4,xmm4,xmm12
       vaddss    xmm0,xmm9,xmm0
       vmulss    xmm0,xmm0,xmm11
       vsubss    xmm2,xmm6,xmm2
       vsubss    xmm2,xmm2,xmm5
       vmulss    xmm2,xmm2,xmm10
       vaddss    xmm0,xmm0,xmm2
       vinsertps xmm0,xmm4,xmm0,10
       vsubss    xmm1,xmm1,xmm8
       vmulss    xmm1,xmm1,xmm11
       vaddss    xmm2,xmm3,xmm7
       vmulss    xmm2,xmm2,xmm10
       vaddss    xmm1,xmm1,xmm2
       vinsertps xmm0,xmm0,xmm1,20
       vinsertps xmm0,xmm0,xmm6,30
       vmovups   [rdx],xmm0
       mov       rax,rdx
       vmovaps   xmm6,[rsp+60]
       vmovaps   xmm7,[rsp+50]
       vmovaps   xmm8,[rsp+40]
       vmovaps   xmm9,[rsp+30]
       vmovaps   xmm10,[rsp+20]
       vmovaps   xmm11,[rsp+10]
       vmovaps   xmm12,[rsp]
       add       rsp,78
       ret
; Total bytes of code 294

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Author: performanceautofiler[bot]
Assignees: DrewScoggins
Labels:

area-CodeGen-coreclr, untriaged, PGO

Milestone: -

@EgorBo EgorBo assigned tannergooding and unassigned DrewScoggins Feb 7, 2023
@EgorBo
Copy link
Member

EgorBo commented Feb 7, 2023

#81335 cc @tannergooding

@tannergooding
Copy link
Member

Thanks!

Many of these were known ahead of time and were due to them being "bad benchmarks". That is, they only involved constant inputs of promotable structs and so had large amounts of constant folding leading to non-representative results in the benchmarks.

Will leave this open until we finish the work to "fix" the tests.

@tannergooding
Copy link
Member

Moving to future as this is a benchmark issue and not something critical to shipping .NET 8.

The actual code for the types in question has been significantly improved for real world scenarios.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI PGO
Projects
None yet
Development

No branches or pull requests

4 participants