dotnet / perf-autofiling-issues

A landing place for auto-filed performance issues before they receive triage
MIT License
9 stars 4 forks source link

[Perf] Windows/x86: 19 Improvements on 2/2/2023 8:18:56 AM #12756

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

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

Improvements 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
[TransformVector2ByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector4.TransformVector2ByMatrix4x4Benchmark.html>) 5.29 ns 0.25 ns 0.05 0.48 False Trace Trace
[TransformVector3ByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark.html>) 6.91 ns 0.84 ns 0.12 0.44 False 50.82561298075247 13.134623292559766 0.2584252805280246 Trace Trace
[TransformByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark.html>) 7.11 ns 0.97 ns 0.14 0.46 False 51.62384349731953 13.458663928397545 0.26070635227104627 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.TransformVector2ByMatrix4x4Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.25408402446611145 < 4.876890867215183. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/22/2023 2:59:30 AM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 61.17656596491491 (T) = (0 -0.27775861073332986) / Math.Sqrt((1.6027436213106017 / (299)) + (0.008450601787979767 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9432051145633167 = (4.890556756963335 - 0.27775861073332986) / 4.890556756963335 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector2ByMatrix4x4Benchmark() sub esp,70 vzeroupper vmovups xmm0,ds:[91E2770] vmovups [esp+30],xmm0 vmovups xmm0,ds:[91E2780] vmovups [esp+40],xmm0 vmovups xmm0,ds:[91E2790] vmovups [esp+50],xmm0 vmovups xmm0,ds:[91E27A0] vmovups [esp+60],xmm0 vmovsd xmm0,qword ptr ds:[91E27B0] vmovsd qword ptr [esp+28],xmm0 vmovsd qword ptr [esp+20],xmm0 vmovsd qword ptr [esp+18],xmm0 vmovsd qword ptr [esp+10],xmm0 vmovsd qword ptr [esp+8],xmm0 vmovsd qword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp+28] vmulss xmm0,xmm0,dword ptr [esp+30] vmovss xmm1,dword ptr [esp+24] vmulss xmm1,xmm1,dword ptr [esp+40] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+60] vmovss xmm1,dword ptr [esp+18] vmulss xmm1,xmm1,dword ptr [esp+34] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+44] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+64] vinsertps xmm0,xmm0,xmm1,10 vmovss xmm1,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+38] vmovss xmm2,dword ptr [esp+4] vmulss xmm2,xmm2,dword ptr [esp+48] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+68] vinsertps xmm0,xmm0,xmm1,20 vmovss xmm1,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+3C] vmovss xmm2,dword ptr [esp+4] vmulss xmm2,xmm2,dword ptr [esp+4C] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+6C] vinsertps xmm0,xmm0,xmm1,30 vmovups [edx],xmm0 add esp,70 ret ; Total bytes of code 267 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector2ByMatrix4x4Benchmark() sub esp,10 vzeroupper vmovups xmm0,ds:[87A27F0] vmovups xmm1,ds:[87A2800] vmovups xmm2,ds:[87A2810] vmovsd xmm3,qword ptr ds:[87A2820] vmovsd qword ptr [esp+8],xmm3 vbroadcastss xmm4,dword ptr [esp+8] vmulps xmm0,xmm0,xmm4 vmovsd qword ptr [esp],xmm3 vbroadcastss xmm3,dword ptr [esp+4] vmulps xmm1,xmm1,xmm3 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm2 vmovups [edx],xmm0 add esp,10 ret ; Total bytes of code 87 ``` #### System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.8431006807444871 < 6.608585343549167. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/22/2023 2:59:30 AM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 56.65242668320706 (T) = (0 -0.9648816381029549) / Math.Sqrt((2.1726454870775433 / (299)) + (0.018737196099222683 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8399312695003859 = (6.027920850570378 - 0.9648816381029549) / 6.027920850570378 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark() sub esp,0B0 vzeroupper vmovups xmm0,ds:[9212800] vmovups [esp+70],xmm0 vmovups xmm0,ds:[9212810] vmovups [esp+80],xmm0 vmovups xmm0,ds:[9212820] vmovups [esp+90],xmm0 vmovups xmm0,ds:[9212830] vmovups [esp+0A0],xmm0 vmovups xmm0,ds:[9212840] vmovups [esp+60],xmm0 vmovups [esp+50],xmm0 vmovups [esp+40],xmm0 vmovups [esp+30],xmm0 vmovups [esp+20],xmm0 vmovups [esp+10],xmm0 vmovups [esp],xmm0 vmovss xmm0,dword ptr [esp+60] vmulss xmm0,xmm0,dword ptr [esp+70] vmovss xmm1,dword ptr [esp+54] vmulss xmm1,xmm1,dword ptr [esp+80] vaddss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+90] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+0A0] vmovss xmm1,dword ptr [esp+40] vmulss xmm1,xmm1,dword ptr [esp+74] vmovss xmm2,dword ptr [esp+34] vmulss xmm2,xmm2,dword ptr [esp+84] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+94] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+0A4] vinsertps xmm0,xmm0,xmm1,10 vmovss xmm1,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp+78] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+88] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+98] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+0A8] vinsertps xmm0,xmm0,xmm1,20 vmovss xmm1,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp+7C] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+8C] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+9C] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+0AC] vinsertps xmm0,xmm0,xmm1,30 vmovups [edx],xmm0 add esp,0B0 ret ; Total bytes of code 388 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark() sub esp,30 vzeroupper vmovups xmm0,ds:[8862830] vmovups xmm1,ds:[8862840] vmovups xmm2,ds:[8862850] vmovups xmm3,ds:[8862860] vmovups xmm4,ds:[8862870] vmovups [esp+20],xmm4 vbroadcastss xmm5,dword ptr [esp+20] vmulps xmm0,xmm0,xmm5 vmovups [esp+10],xmm4 vbroadcastss xmm5,dword ptr [esp+14] vmulps xmm1,xmm1,xmm5 vaddps xmm0,xmm0,xmm1 vmovups [esp],xmm4 vbroadcastss xmm1,dword ptr [esp+8] vmulps xmm1,xmm2,xmm1 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm3 vmovups [edx],xmm0 add esp,30 ret ; Total bytes of code 116 ``` #### System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.9695991721373082 < 6.5719267592483925. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/22/2023 2:59:30 AM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 56.07223196381812 (T) = (0 -0.9837375042981665) / Math.Sqrt((2.146168604902526 / (299)) + (0.01794256461377234 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.834871812405727 = (5.957417195877253 - 0.9837375042981665) / 5.957417195877253 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark() sub esp,0B0 vzeroupper vmovups xmm0,ds:[8792800] vmovups [esp+70],xmm0 vmovups xmm0,ds:[8792810] vmovups [esp+80],xmm0 vmovups xmm0,ds:[8792820] vmovups [esp+90],xmm0 vmovups xmm0,ds:[8792830] vmovups [esp+0A0],xmm0 vmovups xmm0,ds:[8792840] vmovups [esp+60],xmm0 vmovups [esp+50],xmm0 vmovups [esp+40],xmm0 vmovups [esp+30],xmm0 vmovups [esp+20],xmm0 vmovups [esp+10],xmm0 vmovups [esp],xmm0 vmovss xmm0,dword ptr [esp+60] vmulss xmm0,xmm0,dword ptr [esp+70] vmovss xmm1,dword ptr [esp+54] vmulss xmm1,xmm1,dword ptr [esp+80] vaddss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+90] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+0A0] vmovss xmm1,dword ptr [esp+40] vmulss xmm1,xmm1,dword ptr [esp+74] vmovss xmm2,dword ptr [esp+34] vmulss xmm2,xmm2,dword ptr [esp+84] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+94] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+0A4] vinsertps xmm0,xmm0,xmm1,10 vmovss xmm1,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp+78] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+88] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+98] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+0A8] vinsertps xmm0,xmm0,xmm1,20 vmovss xmm1,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp+7C] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+8C] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+9C] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+0AC] vinsertps xmm0,xmm0,xmm1,30 vmovups [edx],xmm0 add esp,0B0 ret ; Total bytes of code 388 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark() sub esp,30 vzeroupper vmovups xmm0,ds:[8C62830] vmovups xmm1,ds:[8C62840] vmovups xmm2,ds:[8C62850] vmovups xmm3,ds:[8C62860] vmovups xmm4,ds:[8C62870] vmovups [esp+20],xmm4 vbroadcastss xmm5,dword ptr [esp+20] vmulps xmm0,xmm0,xmm5 vmovups [esp+10],xmm4 vbroadcastss xmm5,dword ptr [esp+14] vmulps xmm1,xmm1,xmm5 vaddps xmm0,xmm0,xmm1 vmovups [esp],xmm4 vbroadcastss xmm1,dword ptr [esp+8] vmulps xmm1,xmm2,xmm1 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm3 vmovups [edx],xmm0 add esp,30 ret ; Total bytes of code 116 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)
performanceautofiler[bot] commented 1 year ago

Run Information

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

Improvements 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
[EqualsBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.EqualsBenchmark.html>) 11.66 ns 0.23 ns 0.02 0.01 False Trace Trace
[NormalizeBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.NormalizeBenchmark.html>) 4.08 ns 0.00 ns 0.00 0.07 False 37.209506646391326 -1.791220460855435 -0.048138785549556654 Trace Trace
[InverseBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.InverseBenchmark.html>) 3.37 ns 0.00 ns 0.00 0.10 False 39.026390739269225 -1.7797175133568226 -0.045602923551063386 Trace Trace
[CreateFromVector3WithScalarBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.CreateFromVector3WithScalarBenchmark.html>) 7.06 ns 0.00 ns 0.00 0.40 False Trace Trace
[DivisionOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.DivisionOperatorBenchmark.html>) 15.01 ns 13.05 ns 0.87 0.15 False 98.09310220243341 90.68338442328046 0.9244623973267598 Trace Trace
[ConcatenateBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.ConcatenateBenchmark.html>) 8.48 ns 6.93 ns 0.82 0.06 False 82.13539642184624 68.82560261121002 0.8379530094153645 Trace Trace
[MultiplyByQuaternionBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.MultiplyByQuaternionBenchmark.html>) 9.76 ns 6.84 ns 0.70 0.07 False Trace Trace
[MultiplyByQuaternionOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.MultiplyByQuaternionOperatorBenchmark.html>) 8.43 ns 6.72 ns 0.80 0.04 False 81.74544223198554 68.84035311711125 0.8421307810868414 Trace Trace

graph graph graph graph 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.EqualsBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.23393255783377445 < 11.078150937920453. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 827.74091660793 (T) = (0 -0.23433143645117985) / Math.Sqrt((0.031409726633706975 / (299)) + (0.0023942855679331258 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9802356570887547 = (11.856272556263583 - 0.23433143645117985) / 11.856272556263583 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.EqualsBenchmark() sub esp,20 vzeroupper xor eax,eax mov [esp+10],eax mov [esp+14],eax mov [esp+18],eax mov [esp+1C],eax xor eax,eax mov [esp+10],eax mov [esp+14],eax mov [esp+18],eax mov dword ptr [esp+1C],3F800000 mov [esp],eax mov [esp+4],eax mov [esp+8],eax mov dword ptr [esp+0C],3F800000 vmovups xmm0,[esp+10] vmovups xmm1,[esp] vcmpeqps xmm2,xmm0,xmm0 vcmpeqps xmm3,xmm1,xmm1 vorps xmm2,xmm2,xmm3 vpcmpeqd xmm3,xmm3,xmm3 vxorps xmm2,xmm2,xmm3 vcmpeqps xmm0,xmm0,xmm1 vorps xmm0,xmm0,xmm2 vpcmpeqd xmm0,xmm0,xmm3 vpmovmskb eax,xmm0 cmp eax,0FFFF sete al movzx eax,al add esp,20 ret ; Total bytes of code 130 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.EqualsBenchmark() vzeroupper vmovups xmm0,ds:[86B22B0] vcmpeqps xmm0,xmm0,ds:[86B22B0] vorps xmm1,xmm0,xmm0 vpcmpeqd xmm2,xmm2,xmm2 vxorps xmm1,xmm1,xmm2 vorps xmm0,xmm0,xmm1 vpcmpeqd xmm0,xmm0,xmm2 vpmovmskb eax,xmm0 cmp eax,0FFFF sete al movzx eax,al ret ; Total bytes of code 56 ``` #### System.Numerics.Tests.Perf_Quaternion.NormalizeBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0 < 3.878377028516098. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 250.30432703922605 (T) = (0 -0.027287847131121604) / Math.Sqrt((0.011221437295310182 / (299)) + (0.005802296136403389 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9932932526687802 = (4.068715546222764 - 0.027287847131121604) / 4.068715546222764 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.NormalizeBenchmark() push ebp mov ebp,esp vzeroupper vxorps xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vxorps xmm2,xmm2,xmm2 vmovss xmm3,dword ptr ds:[0B4423DC] sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 mov ecx,edx call dword ptr ds:[0AB39300]; System.Numerics.Quaternion.Normalize(System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 68 ``` ```assembly ; System.Numerics.Quaternion.Normalize(System.Numerics.Quaternion) push ebp mov ebp,esp vzeroupper vmovss xmm0,dword ptr [ebp+8] vmulss xmm1,xmm0,xmm0 vmovss xmm2,dword ptr [ebp+0C] vmulss xmm3,xmm2,xmm2 vaddss xmm1,xmm1,xmm3 vmovss xmm3,dword ptr [ebp+10] vmulss xmm4,xmm3,xmm3 vaddss xmm1,xmm1,xmm4 vmovss xmm4,dword ptr [ebp+14] vmulss xmm5,xmm4,xmm4 vaddss xmm1,xmm1,xmm5 vsqrtss xmm1,xmm1,xmm1 vmovss xmm5,dword ptr ds:[0B442488] vdivss xmm1,xmm5,xmm1 vmulss xmm0,xmm0,xmm1 vmulss xmm2,xmm2,xmm1 vmulss xmm3,xmm3,xmm1 vmulss xmm1,xmm4,xmm1 vmovss dword ptr [ecx],xmm0 vmovss dword ptr [ecx+4],xmm2 vmovss dword ptr [ecx+8],xmm3 vmovss dword ptr [ecx+0C],xmm1 pop ebp ret 10 ; Total bytes of code 109 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.NormalizeBenchmark() vzeroupper vmovups xmm0,ds:[82F2540] vdpps xmm1,xmm0,xmm0,0FF vsqrtps xmm1,xmm1 vdivps xmm0,xmm0,xmm1 vmovups [edx],xmm0 ret ; Total bytes of code 30 ``` #### System.Numerics.Tests.Perf_Quaternion.InverseBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0 < 3.171405870334263. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 503.1956729768552 (T) = (0 -0.004855037948258622) / Math.Sqrt((0.007863548730352712 / (299)) + (0.0004855828010736343 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9985633792616572 = (3.3794847997665127 - 0.004855037948258622) / 3.3794847997665127 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.InverseBenchmark() push ebp mov ebp,esp vzeroupper vxorps xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vxorps xmm2,xmm2,xmm2 vmovss xmm3,dword ptr ds:[8C723DC] sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 mov ecx,edx call dword ptr ds:[0ADD9288]; System.Numerics.Quaternion.Inverse(System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 68 ``` ```assembly ; System.Numerics.Quaternion.Inverse(System.Numerics.Quaternion) push ebp mov ebp,esp vzeroupper vmovss xmm0,dword ptr [ebp+8] vmulss xmm1,xmm0,xmm0 vmovss xmm2,dword ptr [ebp+0C] vmulss xmm3,xmm2,xmm2 vaddss xmm1,xmm1,xmm3 vmovss xmm3,dword ptr [ebp+10] vmulss xmm4,xmm3,xmm3 vaddss xmm1,xmm1,xmm4 vmovss xmm4,dword ptr [ebp+14] vmulss xmm5,xmm4,xmm4 vaddss xmm1,xmm1,xmm5 vmovss xmm5,dword ptr ds:[8C724A0] vdivss xmm1,xmm5,xmm1 vxorps xmm0,xmm0,ds:[8C724B0] vmulss xmm0,xmm0,xmm1 vxorps xmm2,xmm2,ds:[8C724B0] vmulss xmm2,xmm2,xmm1 vxorps xmm3,xmm3,ds:[8C724B0] vmulss xmm3,xmm3,xmm1 vmulss xmm1,xmm4,xmm1 vmovss dword ptr [ecx],xmm0 vmovss dword ptr [ecx+4],xmm2 vmovss dword ptr [ecx+8],xmm3 vmovss dword ptr [ecx+0C],xmm1 pop ebp ret 10 ; Total bytes of code 129 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.InverseBenchmark() vzeroupper vmovups xmm0,ds:[8D72560] vmulps xmm1,xmm0,ds:[8D72570] vdpps xmm0,xmm0,xmm0,0FF vdivps xmm0,xmm1,xmm0 vmovups [edx],xmm0 ret ; Total bytes of code 34 ``` #### System.Numerics.Tests.Perf_Quaternion.CreateFromVector3WithScalarBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0 < 6.704158440220178. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 265.67354660166455 (T) = (0 -0) / Math.Sqrt((0.1750365508008632 / (299)) + (0 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 1 = (6.428018123846707 - 0) / 6.428018123846707 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.CreateFromVector3WithScalarBenchmark() sub esp,20 vzeroupper vmovups xmm0,ds:[0AE12420] vmovups [esp],xmm0 vxorps xmm0,xmm0,xmm0 vmovups [esp+10],xmm0 vmovups xmm0,[esp] vmovsd qword ptr [esp+10],xmm0 vextractps dword ptr [esp+18],xmm0,2 mov dword ptr [esp+1C],40800000 vmovups xmm0,[esp+10] vmovups [edx],xmm0 add esp,20 ret ; Total bytes of code 70 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.CreateFromVector3WithScalarBenchmark() vzeroupper vmovups xmm0,ds:[8512530] vmovups [edx],xmm0 ret ; Total bytes of code 16 ``` #### System.Numerics.Tests.Perf_Quaternion.DivisionOperatorBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 13.045560032310425 < 14.292767955285134. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 18.871113088039845 (T) = (0 -13.538901058477485) / Math.Sqrt((0.3189801326476834 / (299)) + (0.14328856461177306 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.10156521978688483 = (15.069431144758177 - 13.538901058477485) / 15.069431144758177 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.DivisionOperatorBenchmark() push ebp mov ebp,esp vzeroupper vxorps xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vxorps xmm2,xmm2,xmm2 vmovss xmm3,dword ptr ds:[9002444] sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 mov ecx,edx call dword ptr ds:[0B069120]; System.Numerics.Quaternion.op_Division(System.Numerics.Quaternion, System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 100 ``` ```assembly ; System.Numerics.Quaternion.op_Division(System.Numerics.Quaternion, System.Numerics.Quaternion) push ebp mov ebp,esp sub esp,24 vzeroupper vmovss xmm0,dword ptr [ebp+18] vmovss xmm1,dword ptr [ebp+1C] vmovss xmm2,dword ptr [ebp+20] vmovss xmm3,dword ptr [ebp+24] vmovss dword ptr [ebp-4],xmm3 vmovss xmm4,dword ptr [ebp+8] vmulss xmm5,xmm4,xmm4 vmovss xmm6,dword ptr [ebp+0C] vmulss xmm7,xmm6,xmm6 vaddss xmm5,xmm5,xmm7 vmovss xmm7,dword ptr [ebp+10] vmovss dword ptr [ebp-18],xmm7 vmulss xmm7,xmm7,xmm7 vaddss xmm5,xmm5,xmm7 vmovss xmm7,dword ptr [ebp+14] vmovss dword ptr [ebp-1C],xmm7 vmulss xmm7,xmm7,xmm7 vaddss xmm5,xmm5,xmm7 vmovss xmm7,dword ptr ds:[90025D0] vdivss xmm5,xmm7,xmm5 vxorps xmm4,xmm4,ds:[90025E0] vmulss xmm4,xmm4,xmm5 vxorps xmm6,xmm6,ds:[90025E0] vmulss xmm6,xmm6,xmm5 vmovss xmm3,dword ptr [ebp-18] vxorps xmm3,xmm3,ds:[90025E0] vmulss xmm3,xmm3,xmm5 vmulss xmm5,xmm5,dword ptr [ebp-1C] vmulss xmm7,xmm1,xmm3 vmovss dword ptr [ebp-20],xmm7 vmulss xmm7,xmm2,xmm6 vmovss dword ptr [ebp-24],xmm7 vmovss xmm7,dword ptr [ebp-20] vsubss xmm7,xmm7,dword ptr [ebp-24] vmovss dword ptr [ebp-8],xmm7 vmulss xmm7,xmm2,xmm4 vmovss dword ptr [ebp-24],xmm7 vmulss xmm7,xmm0,xmm3 vmovss dword ptr [ebp-20],xmm7 vmovss xmm7,dword ptr [ebp-24] vsubss xmm7,xmm7,dword ptr [ebp-20] vmovss dword ptr [ebp-0C],xmm7 vmulss xmm7,xmm0,xmm6 vmovss dword ptr [ebp-20],xmm7 vmulss xmm7,xmm1,xmm4 vmovss dword ptr [ebp-24],xmm7 vmovss xmm7,dword ptr [ebp-20] vsubss xmm7,xmm7,dword ptr [ebp-24] vmovss dword ptr [ebp-10],xmm7 vmulss xmm7,xmm0,xmm4 vmovss dword ptr [ebp-24],xmm7 vmulss xmm7,xmm1,xmm6 vaddss xmm7,xmm7,dword ptr [ebp-24] vmovss dword ptr [ebp-24],xmm7 vmulss xmm7,xmm2,xmm3 vaddss xmm7,xmm7,dword ptr [ebp-24] vmovss dword ptr [ebp-14],xmm7 vmulss xmm0,xmm0,xmm5 vmovss xmm7,dword ptr [ebp-4] vmulss xmm4,xmm4,xmm7 vaddss xmm0,xmm0,xmm4 vaddss xmm0,xmm0,dword ptr [ebp-8] vmulss xmm1,xmm1,xmm5 vmulss xmm4,xmm6,xmm7 vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [ebp-0C] vmulss xmm2,xmm2,xmm5 vmulss xmm3,xmm3,xmm7 vaddss xmm2,xmm2,xmm3 vaddss xmm2,xmm2,dword ptr [ebp-10] vmulss xmm3,xmm7,xmm5 vsubss xmm3,xmm3,dword ptr [ebp-14] vmovss dword ptr [ecx],xmm0 vmovss dword ptr [ecx+4],xmm1 vmovss dword ptr [ecx+8],xmm2 vmovss dword ptr [ecx+0C],xmm3 mov esp,ebp pop ebp ret 20 ; Total bytes of code 376 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.DivisionOperatorBenchmark() push ebp mov ebp,esp vzeroupper vmovups xmm0,ds:[9242540] sub esp,10 vmovups [esp],xmm0 sub esp,10 vmovups [esp],xmm0 mov ecx,edx call dword ptr ds:[0B2A90C0]; System.Numerics.Quaternion.op_Division(System.Numerics.Quaternion, System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 40 ``` ```assembly ; System.Numerics.Quaternion.op_Division(System.Numerics.Quaternion, System.Numerics.Quaternion) push ebp mov ebp,esp sub esp,28 vzeroupper vmovups xmm0,[ebp+18] vmovups xmm1,[ebp+8] vmovaps xmm2,xmm0 vmovshdup xmm3,xmm0 vunpckhps xmm4,xmm0,xmm0 vshufps xmm0,xmm0,xmm0,0FF vmovss dword ptr [ebp-4],xmm0 vmovaps xmm5,xmm1 vmulss xmm6,xmm5,xmm5 vmovshdup xmm7,xmm1 vmovss dword ptr [ebp-18],xmm7 vmulss xmm7,xmm7,xmm7 vaddss xmm6,xmm6,xmm7 vunpckhps xmm7,xmm1,xmm1 vmovss dword ptr [ebp-1C],xmm7 vmulss xmm7,xmm7,xmm7 vaddss xmm6,xmm6,xmm7 vshufps xmm1,xmm1,xmm1,0FF vmovss dword ptr [ebp-20],xmm1 vmulss xmm7,xmm1,xmm1 vaddss xmm6,xmm6,xmm7 vmovss xmm7,dword ptr ds:[9242700] vdivss xmm6,xmm7,xmm6 vxorps xmm5,xmm5,ds:[9242710] vmulss xmm5,xmm5,xmm6 vmovss xmm1,dword ptr [ebp-18] vxorps xmm1,xmm1,ds:[9242710] vmulss xmm1,xmm1,xmm6 vmovss xmm0,dword ptr [ebp-1C] vxorps xmm0,xmm0,ds:[9242710] vmulss xmm0,xmm0,xmm6 vmulss xmm6,xmm6,dword ptr [ebp-20] vmulss xmm7,xmm3,xmm0 vmovss dword ptr [ebp-24],xmm7 vmulss xmm7,xmm4,xmm1 vmovss dword ptr [ebp-28],xmm7 vmovss xmm7,dword ptr [ebp-24] vsubss xmm7,xmm7,dword ptr [ebp-28] vmovss dword ptr [ebp-8],xmm7 vmulss xmm7,xmm4,xmm5 vmovss dword ptr [ebp-28],xmm7 vmulss xmm7,xmm2,xmm0 vmovss dword ptr [ebp-24],xmm7 vmovss xmm7,dword ptr [ebp-28] vsubss xmm7,xmm7,dword ptr [ebp-24] vmovss dword ptr [ebp-0C],xmm7 vmulss xmm7,xmm2,xmm1 vmovss dword ptr [ebp-24],xmm7 vmulss xmm7,xmm3,xmm5 vmovss dword ptr [ebp-28],xmm7 vmovss xmm7,dword ptr [ebp-24] vsubss xmm7,xmm7,dword ptr [ebp-28] vmovss dword ptr [ebp-10],xmm7 vmulss xmm7,xmm2,xmm5 vmovss dword ptr [ebp-28],xmm7 vmulss xmm7,xmm3,xmm1 vaddss xmm7,xmm7,dword ptr [ebp-28] vmovss dword ptr [ebp-28],xmm7 vmulss xmm7,xmm4,xmm0 vaddss xmm7,xmm7,dword ptr [ebp-28] vmovss dword ptr [ebp-14],xmm7 vmulss xmm2,xmm2,xmm6 vmovss xmm7,dword ptr [ebp-4] vmulss xmm5,xmm5,xmm7 vaddss xmm2,xmm2,xmm5 vaddss xmm2,xmm2,dword ptr [ebp-8] vmulss xmm3,xmm3,xmm6 vmulss xmm1,xmm1,xmm7 vaddss xmm1,xmm3,xmm1 vaddss xmm1,xmm1,dword ptr [ebp-0C] vmulss xmm3,xmm4,xmm6 vmulss xmm0,xmm0,xmm7 vaddss xmm0,xmm3,xmm0 vaddss xmm0,xmm0,dword ptr [ebp-10] vmulss xmm3,xmm7,xmm6 vsubss xmm3,xmm3,dword ptr [ebp-14] vmovss dword ptr [ecx],xmm2 vmovss dword ptr [ecx+4],xmm1 vmovss dword ptr [ecx+8],xmm0 vmovss dword ptr [ecx+0C],xmm3 mov esp,ebp pop ebp ret 20 ; Total bytes of code 390 ``` #### System.Numerics.Tests.Perf_Quaternion.ConcatenateBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 6.93376123108242 < 8.024735657616587. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/5/2023 4:54:05 PM, 2/6/2023 4:11:28 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 17.77795303054447 (T) = (0 -6.845769326865397) / Math.Sqrt((0.23168089887981708 / (299)) + (0.03426939173114104 / (5))) is greater than 1.9678502273660254 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (5) - 2, .975) and 0.18488598803112638 = (8.398542076745471 - 6.845769326865397) / 8.398542076745471 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.ConcatenateBenchmark() push ebp mov ebp,esp vzeroupper vxorps xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vxorps xmm2,xmm2,xmm2 vmovss xmm3,dword ptr ds:[8AC2444] sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 mov ecx,edx call dword ptr ds:[0AC291E0]; System.Numerics.Quaternion.Concatenate(System.Numerics.Quaternion, System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 100 ``` ```assembly ; System.Numerics.Quaternion.Concatenate(System.Numerics.Quaternion, System.Numerics.Quaternion) push ebp mov ebp,esp sub esp,1C vzeroupper vmovss xmm0,dword ptr [ebp+8] vmovss xmm1,dword ptr [ebp+0C] vmovss xmm2,dword ptr [ebp+10] vmovss xmm3,dword ptr [ebp+14] vmovss dword ptr [ebp-4],xmm3 vmovss xmm4,dword ptr [ebp+18] vmovss xmm5,dword ptr [ebp+1C] vmovss xmm6,dword ptr [ebp+20] vmovss xmm7,dword ptr [ebp+24] vmulss xmm3,xmm1,xmm6 vmovss dword ptr [ebp-18],xmm3 vmulss xmm3,xmm2,xmm5 vmovss dword ptr [ebp-1C],xmm3 vmovss xmm3,dword ptr [ebp-18] vsubss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-8],xmm3 vmulss xmm3,xmm2,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm0,xmm6 vmovss dword ptr [ebp-18],xmm3 vmovss xmm3,dword ptr [ebp-1C] vsubss xmm3,xmm3,dword ptr [ebp-18] vmovss dword ptr [ebp-0C],xmm3 vmulss xmm3,xmm0,xmm5 vmovss dword ptr [ebp-18],xmm3 vmulss xmm3,xmm1,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmovss xmm3,dword ptr [ebp-18] vsubss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-10],xmm3 vmulss xmm3,xmm0,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm1,xmm5 vaddss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm2,xmm6 vaddss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-14],xmm3 vmulss xmm0,xmm0,xmm7 vmovss xmm3,dword ptr [ebp-4] vmulss xmm4,xmm4,xmm3 vaddss xmm0,xmm0,xmm4 vaddss xmm0,xmm0,dword ptr [ebp-8] vmulss xmm1,xmm1,xmm7 vmulss xmm4,xmm5,xmm3 vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [ebp-0C] vmulss xmm2,xmm2,xmm7 vmulss xmm4,xmm6,xmm3 vaddss xmm2,xmm2,xmm4 vaddss xmm2,xmm2,dword ptr [ebp-10] vmulss xmm3,xmm3,xmm7 vsubss xmm3,xmm3,dword ptr [ebp-14] vmovss dword ptr [ecx],xmm0 vmovss dword ptr [ecx+4],xmm1 vmovss dword ptr [ecx+8],xmm2 vmovss dword ptr [ecx+0C],xmm3 mov esp,ebp pop ebp ret 20 ; Total bytes of code 280 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.ConcatenateBenchmark() push ebp mov ebp,esp vzeroupper vmovups xmm0,ds:[0B5F2540] sub esp,10 vmovups [esp],xmm0 sub esp,10 vmovups [esp],xmm0 mov ecx,edx call dword ptr ds:[0ACE9180]; System.Numerics.Quaternion.Concatenate(System.Numerics.Quaternion, System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 40 ``` ```assembly ; System.Numerics.Quaternion.Concatenate(System.Numerics.Quaternion, System.Numerics.Quaternion) push ebp mov ebp,esp sub esp,1C vzeroupper vmovups xmm0,[ebp+18] vmovups xmm1,[ebp+8] vmovaps xmm2,xmm1 vmovshdup xmm3,xmm1 vunpckhps xmm4,xmm1,xmm1 vshufps xmm1,xmm1,xmm1,0FF vmovss dword ptr [ebp-4],xmm1 vmovaps xmm5,xmm0 vmovshdup xmm6,xmm0 vunpckhps xmm7,xmm0,xmm0 vshufps xmm0,xmm0,xmm0,0FF vmulss xmm1,xmm3,xmm7 vmovss dword ptr [ebp-18],xmm1 vmulss xmm1,xmm4,xmm6 vmovss dword ptr [ebp-1C],xmm1 vmovss xmm1,dword ptr [ebp-18] vsubss xmm1,xmm1,dword ptr [ebp-1C] vmovss dword ptr [ebp-8],xmm1 vmulss xmm1,xmm4,xmm5 vmovss dword ptr [ebp-1C],xmm1 vmulss xmm1,xmm2,xmm7 vmovss dword ptr [ebp-18],xmm1 vmovss xmm1,dword ptr [ebp-1C] vsubss xmm1,xmm1,dword ptr [ebp-18] vmovss dword ptr [ebp-0C],xmm1 vmulss xmm1,xmm2,xmm6 vmovss dword ptr [ebp-18],xmm1 vmulss xmm1,xmm3,xmm5 vmovss dword ptr [ebp-1C],xmm1 vmovss xmm1,dword ptr [ebp-18] vsubss xmm1,xmm1,dword ptr [ebp-1C] vmovss dword ptr [ebp-10],xmm1 vmulss xmm1,xmm2,xmm5 vmovss dword ptr [ebp-1C],xmm1 vmulss xmm1,xmm3,xmm6 vaddss xmm1,xmm1,dword ptr [ebp-1C] vmovss dword ptr [ebp-1C],xmm1 vmulss xmm1,xmm4,xmm7 vaddss xmm1,xmm1,dword ptr [ebp-1C] vmovss dword ptr [ebp-14],xmm1 vmulss xmm2,xmm2,xmm0 vmovss xmm1,dword ptr [ebp-4] vmulss xmm5,xmm5,xmm1 vaddss xmm2,xmm2,xmm5 vaddss xmm2,xmm2,dword ptr [ebp-8] vmulss xmm3,xmm3,xmm0 vmulss xmm5,xmm6,xmm1 vaddss xmm3,xmm3,xmm5 vaddss xmm3,xmm3,dword ptr [ebp-0C] vmulss xmm4,xmm4,xmm0 vmulss xmm5,xmm7,xmm1 vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [ebp-10] vmulss xmm0,xmm1,xmm0 vsubss xmm0,xmm0,dword ptr [ebp-14] vmovss dword ptr [ecx],xmm2 vmovss dword ptr [ecx+4],xmm3 vmovss dword ptr [ecx+8],xmm4 vmovss dword ptr [ecx+0C],xmm0 mov esp,ebp pop ebp ret 20 ; Total bytes of code 284 ``` #### System.Numerics.Tests.Perf_Quaternion.MultiplyByQuaternionBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 6.840627115731862 < 7.967496656154931. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 49.68162976569417 (T) = (0 -6.904010056493021) / Math.Sqrt((0.032775171823764715 / (299)) + (0.02086157597122613 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.1785193948435216 = (8.40434943096182 - 6.904010056493021) / 8.40434943096182 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.MultiplyByQuaternionBenchmark() push ebp mov ebp,esp vzeroupper vxorps xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vxorps xmm2,xmm2,xmm2 vmovss xmm3,dword ptr ds:[0B9F2444] sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 mov ecx,edx call dword ptr ds:[0B0E9168]; System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion, System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 100 ``` ```assembly ; System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion, System.Numerics.Quaternion) push ebp mov ebp,esp sub esp,1C vzeroupper vmovss xmm0,dword ptr [ebp+18] vmovss xmm1,dword ptr [ebp+1C] vmovss xmm2,dword ptr [ebp+20] vmovss xmm3,dword ptr [ebp+24] vmovss dword ptr [ebp-4],xmm3 vmovss xmm4,dword ptr [ebp+8] vmovss xmm5,dword ptr [ebp+0C] vmovss xmm6,dword ptr [ebp+10] vmovss xmm7,dword ptr [ebp+14] vmulss xmm3,xmm1,xmm6 vmovss dword ptr [ebp-18],xmm3 vmulss xmm3,xmm2,xmm5 vmovss dword ptr [ebp-1C],xmm3 vmovss xmm3,dword ptr [ebp-18] vsubss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-8],xmm3 vmulss xmm3,xmm2,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm0,xmm6 vmovss dword ptr [ebp-18],xmm3 vmovss xmm3,dword ptr [ebp-1C] vsubss xmm3,xmm3,dword ptr [ebp-18] vmovss dword ptr [ebp-0C],xmm3 vmulss xmm3,xmm0,xmm5 vmovss dword ptr [ebp-18],xmm3 vmulss xmm3,xmm1,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmovss xmm3,dword ptr [ebp-18] vsubss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-10],xmm3 vmulss xmm3,xmm0,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm1,xmm5 vaddss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm2,xmm6 vaddss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-14],xmm3 vmulss xmm0,xmm0,xmm7 vmovss xmm3,dword ptr [ebp-4] vmulss xmm4,xmm4,xmm3 vaddss xmm0,xmm0,xmm4 vaddss xmm0,xmm0,dword ptr [ebp-8] vmulss xmm1,xmm1,xmm7 vmulss xmm4,xmm5,xmm3 vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [ebp-0C] vmulss xmm2,xmm2,xmm7 vmulss xmm4,xmm6,xmm3 vaddss xmm2,xmm2,xmm4 vaddss xmm2,xmm2,dword ptr [ebp-10] vmulss xmm3,xmm3,xmm7 vsubss xmm3,xmm3,dword ptr [ebp-14] vmovss dword ptr [ecx],xmm0 vmovss dword ptr [ecx+4],xmm1 vmovss dword ptr [ecx+8],xmm2 vmovss dword ptr [ecx+0C],xmm3 mov esp,ebp pop ebp ret 20 ; Total bytes of code 280 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.MultiplyByQuaternionBenchmark() push ebp mov ebp,esp vzeroupper vmovups xmm0,ds:[86D2540] sub esp,10 vmovups [esp],xmm0 sub esp,10 vmovups [esp],xmm0 mov ecx,edx call dword ptr ds:[0A8A9108]; System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion, System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 40 ``` ```assembly ; System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion, System.Numerics.Quaternion) push ebp mov ebp,esp sub esp,1C vzeroupper vmovups xmm0,[ebp+18] vmovups xmm1,[ebp+8] vmovaps xmm2,xmm0 vmovshdup xmm3,xmm0 vunpckhps xmm4,xmm0,xmm0 vshufps xmm0,xmm0,xmm0,0FF vmovss dword ptr [ebp-4],xmm0 vmovaps xmm5,xmm1 vmovshdup xmm6,xmm1 vunpckhps xmm7,xmm1,xmm1 vshufps xmm1,xmm1,xmm1,0FF vmulss xmm0,xmm3,xmm7 vmovss dword ptr [ebp-18],xmm0 vmulss xmm0,xmm4,xmm6 vmovss dword ptr [ebp-1C],xmm0 vmovss xmm0,dword ptr [ebp-18] vsubss xmm0,xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-8],xmm0 vmulss xmm0,xmm4,xmm5 vmovss dword ptr [ebp-1C],xmm0 vmulss xmm0,xmm2,xmm7 vmovss dword ptr [ebp-18],xmm0 vmovss xmm0,dword ptr [ebp-1C] vsubss xmm0,xmm0,dword ptr [ebp-18] vmovss dword ptr [ebp-0C],xmm0 vmulss xmm0,xmm2,xmm6 vmovss dword ptr [ebp-18],xmm0 vmulss xmm0,xmm3,xmm5 vmovss dword ptr [ebp-1C],xmm0 vmovss xmm0,dword ptr [ebp-18] vsubss xmm0,xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-10],xmm0 vmulss xmm0,xmm2,xmm5 vmovss dword ptr [ebp-1C],xmm0 vmulss xmm0,xmm3,xmm6 vaddss xmm0,xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-1C],xmm0 vmulss xmm0,xmm4,xmm7 vaddss xmm0,xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-14],xmm0 vmulss xmm2,xmm2,xmm1 vmovss xmm0,dword ptr [ebp-4] vmulss xmm5,xmm5,xmm0 vaddss xmm2,xmm2,xmm5 vaddss xmm2,xmm2,dword ptr [ebp-8] vmulss xmm3,xmm3,xmm1 vmulss xmm5,xmm6,xmm0 vaddss xmm3,xmm3,xmm5 vaddss xmm3,xmm3,dword ptr [ebp-0C] vmulss xmm4,xmm4,xmm1 vmulss xmm5,xmm7,xmm0 vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [ebp-10] vmulss xmm0,xmm0,xmm1 vsubss xmm0,xmm0,dword ptr [ebp-14] vmovss dword ptr [ecx],xmm2 vmovss dword ptr [ecx+4],xmm3 vmovss dword ptr [ecx+8],xmm4 vmovss dword ptr [ecx+0C],xmm0 mov esp,ebp pop ebp ret 20 ; Total bytes of code 284 ``` #### System.Numerics.Tests.Perf_Quaternion.MultiplyByQuaternionOperatorBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 6.718215029197604 < 7.996098336471087. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 15.174744478618011 (T) = (0 -6.985729601046254) / Math.Sqrt((0.014516440176524117 / (299)) + (0.2260371157037907 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.16881783175878687 = (8.404571065122948 - 6.985729601046254) / 8.404571065122948 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.MultiplyByQuaternionOperatorBenchmark() push ebp mov ebp,esp vzeroupper vxorps xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vxorps xmm2,xmm2,xmm2 vmovss xmm3,dword ptr ds:[8972444] sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 sub esp,4 vmovss dword ptr [esp],xmm3 sub esp,4 vmovss dword ptr [esp],xmm2 sub esp,4 vmovss dword ptr [esp],xmm1 sub esp,4 vmovss dword ptr [esp],xmm0 mov ecx,edx call dword ptr ds:[0AAD9168]; System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion, System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 100 ``` ```assembly ; System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion, System.Numerics.Quaternion) push ebp mov ebp,esp sub esp,1C vzeroupper vmovss xmm0,dword ptr [ebp+18] vmovss xmm1,dword ptr [ebp+1C] vmovss xmm2,dword ptr [ebp+20] vmovss xmm3,dword ptr [ebp+24] vmovss dword ptr [ebp-4],xmm3 vmovss xmm4,dword ptr [ebp+8] vmovss xmm5,dword ptr [ebp+0C] vmovss xmm6,dword ptr [ebp+10] vmovss xmm7,dword ptr [ebp+14] vmulss xmm3,xmm1,xmm6 vmovss dword ptr [ebp-18],xmm3 vmulss xmm3,xmm2,xmm5 vmovss dword ptr [ebp-1C],xmm3 vmovss xmm3,dword ptr [ebp-18] vsubss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-8],xmm3 vmulss xmm3,xmm2,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm0,xmm6 vmovss dword ptr [ebp-18],xmm3 vmovss xmm3,dword ptr [ebp-1C] vsubss xmm3,xmm3,dword ptr [ebp-18] vmovss dword ptr [ebp-0C],xmm3 vmulss xmm3,xmm0,xmm5 vmovss dword ptr [ebp-18],xmm3 vmulss xmm3,xmm1,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmovss xmm3,dword ptr [ebp-18] vsubss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-10],xmm3 vmulss xmm3,xmm0,xmm4 vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm1,xmm5 vaddss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-1C],xmm3 vmulss xmm3,xmm2,xmm6 vaddss xmm3,xmm3,dword ptr [ebp-1C] vmovss dword ptr [ebp-14],xmm3 vmulss xmm0,xmm0,xmm7 vmovss xmm3,dword ptr [ebp-4] vmulss xmm4,xmm4,xmm3 vaddss xmm0,xmm0,xmm4 vaddss xmm0,xmm0,dword ptr [ebp-8] vmulss xmm1,xmm1,xmm7 vmulss xmm4,xmm5,xmm3 vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [ebp-0C] vmulss xmm2,xmm2,xmm7 vmulss xmm4,xmm6,xmm3 vaddss xmm2,xmm2,xmm4 vaddss xmm2,xmm2,dword ptr [ebp-10] vmulss xmm3,xmm3,xmm7 vsubss xmm3,xmm3,dword ptr [ebp-14] vmovss dword ptr [ecx],xmm0 vmovss dword ptr [ecx+4],xmm1 vmovss dword ptr [ecx+8],xmm2 vmovss dword ptr [ecx+0C],xmm3 mov esp,ebp pop ebp ret 20 ; Total bytes of code 280 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.MultiplyByQuaternionOperatorBenchmark() push ebp mov ebp,esp vzeroupper vmovups xmm0,ds:[8392540] sub esp,10 vmovups [esp],xmm0 sub esp,10 vmovups [esp],xmm0 mov ecx,edx call dword ptr ds:[0A4F9108]; System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion, System.Numerics.Quaternion) pop ebp ret ; Total bytes of code 40 ``` ```assembly ; System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion, System.Numerics.Quaternion) push ebp mov ebp,esp sub esp,1C vzeroupper vmovups xmm0,[ebp+18] vmovups xmm1,[ebp+8] vmovaps xmm2,xmm0 vmovshdup xmm3,xmm0 vunpckhps xmm4,xmm0,xmm0 vshufps xmm0,xmm0,xmm0,0FF vmovss dword ptr [ebp-4],xmm0 vmovaps xmm5,xmm1 vmovshdup xmm6,xmm1 vunpckhps xmm7,xmm1,xmm1 vshufps xmm1,xmm1,xmm1,0FF vmulss xmm0,xmm3,xmm7 vmovss dword ptr [ebp-18],xmm0 vmulss xmm0,xmm4,xmm6 vmovss dword ptr [ebp-1C],xmm0 vmovss xmm0,dword ptr [ebp-18] vsubss xmm0,xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-8],xmm0 vmulss xmm0,xmm4,xmm5 vmovss dword ptr [ebp-1C],xmm0 vmulss xmm0,xmm2,xmm7 vmovss dword ptr [ebp-18],xmm0 vmovss xmm0,dword ptr [ebp-1C] vsubss xmm0,xmm0,dword ptr [ebp-18] vmovss dword ptr [ebp-0C],xmm0 vmulss xmm0,xmm2,xmm6 vmovss dword ptr [ebp-18],xmm0 vmulss xmm0,xmm3,xmm5 vmovss dword ptr [ebp-1C],xmm0 vmovss xmm0,dword ptr [ebp-18] vsubss xmm0,xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-10],xmm0 vmulss xmm0,xmm2,xmm5 vmovss dword ptr [ebp-1C],xmm0 vmulss xmm0,xmm3,xmm6 vaddss xmm0,xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-1C],xmm0 vmulss xmm0,xmm4,xmm7 vaddss xmm0,xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-14],xmm0 vmulss xmm2,xmm2,xmm1 vmovss xmm0,dword ptr [ebp-4] vmulss xmm5,xmm5,xmm0 vaddss xmm2,xmm2,xmm5 vaddss xmm2,xmm2,dword ptr [ebp-8] vmulss xmm3,xmm3,xmm1 vmulss xmm5,xmm6,xmm0 vaddss xmm3,xmm3,xmm5 vaddss xmm3,xmm3,dword ptr [ebp-0C] vmulss xmm4,xmm4,xmm1 vmulss xmm5,xmm7,xmm0 vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [ebp-10] vmulss xmm0,xmm0,xmm1 vsubss xmm0,xmm0,dword ptr [ebp-14] vmovss dword ptr [ecx],xmm2 vmovss dword ptr [ecx+4],xmm3 vmovss dword ptr [ecx+8],xmm4 vmovss dword ptr [ecx+0C],xmm0 mov esp,ebp pop ebp ret 20 ; Total bytes of code 284 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)
performanceautofiler[bot] commented 1 year ago

Run Information

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

Improvements 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
[TransformNormalByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark.html>) 2.57 ns 0.02 ns 0.01 0.50 False 18.103430561003087 6.458801799997503 0.35677225806640867 Trace Trace
[TransformByMatrix3x2Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector2.TransformByMatrix3x2Benchmark.html>) 2.34 ns 0.53 ns 0.22 0.51 False Trace Trace
[TransformByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark.html>) 2.78 ns 0.15 ns 0.05 0.50 False 20.073479378583563 8.197763692104605 0.40838778058829284 Trace Trace
[TransformNormalByMatrix3x2Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix3x2Benchmark.html>) 1.83 ns 0.19 ns 0.10 0.52 False 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_Vector2*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.016693387586673478 < 2.1484643931931644. IsChangePoint: Marked as a change because one of 12/14/2022 12:26:48 AM, 1/6/2023 2:04:15 PM, 1/22/2023 2:59:30 AM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 43.518614321108146 (T) = (0 -0.09509789196778845) / Math.Sqrt((0.9977941684175871 / (299)) + (0.002866114555525761 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9641174138604314 = (2.6502518965020094 - 0.09509789196778845) / 2.6502518965020094 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark() sub esp,50 vzeroupper vmovups xmm0,ds:[8FE26D0] vmovups [esp+10],xmm0 vmovups xmm0,ds:[8FE26E0] vmovups [esp+20],xmm0 vmovups xmm0,ds:[8FE26F0] vmovups [esp+30],xmm0 vmovups xmm0,ds:[8FE2700] vmovups [esp+40],xmm0 vmovsd xmm0,qword ptr ds:[8FE2710] vmovsd qword ptr [esp+8],xmm0 vmovsd qword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp+8] vmulss xmm0,xmm0,dword ptr [esp+10] vmovss xmm1,dword ptr [esp+4] vmulss xmm1,xmm1,dword ptr [esp+20] vaddss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+14] vmovss xmm2,dword ptr [esp+4] vmulss xmm2,xmm2,dword ptr [esp+24] vaddss xmm1,xmm1,xmm2 vinsertps xmm0,xmm0,xmm1,1C vmovsd qword ptr [edx],xmm0 add esp,50 ret ; Total bytes of code 151 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark() sub esp,10 vzeroupper vmovups xmm0,ds:[83F27D0] vmovups xmm1,ds:[83F27E0] vmovsd xmm2,qword ptr ds:[83F27F0] vmovsd qword ptr [esp+8],xmm2 vbroadcastss xmm3,dword ptr [esp+8] vmulps xmm0,xmm0,xmm3 vmovsd qword ptr [esp],xmm2 vbroadcastss xmm2,dword ptr [esp+4] vmulps xmm1,xmm1,xmm2 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 add esp,10 ret ; Total bytes of code 75 ``` #### System.Numerics.Tests.Perf_Vector2.TransformByMatrix3x2Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.5251094755750522 < 2.0220191338227207. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 35.25488349407313 (T) = (0 -0.5069236431278228) / Math.Sqrt((1.2686678757628171 / (299)) + (0.0007609944630483727 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8196825324814005 = (2.8112841762018133 - 0.5069236431278228) / 2.8112841762018133 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformByMatrix3x2Benchmark() sub esp,28 vzeroupper vmovsd xmm0,qword ptr ds:[0BC726D0] vmovsd qword ptr [esp+10],xmm0 vmovsd xmm0,qword ptr ds:[0BC726D8] vmovsd qword ptr [esp+18],xmm0 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp+20],xmm0 vmovsd xmm0,qword ptr ds:[0BC726E0] vmovsd qword ptr [esp+8],xmm0 vmovsd qword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp+8] vmulss xmm0,xmm0,dword ptr [esp+10] vmovss xmm1,dword ptr [esp+4] vmulss xmm1,xmm1,dword ptr [esp+18] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+20] vmovss xmm1,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+14] vmovss xmm2,dword ptr [esp+4] vmulss xmm2,xmm2,dword ptr [esp+1C] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+24] vinsertps xmm0,xmm0,xmm1,1C vmovsd qword ptr [edx],xmm0 add esp,28 ret ; Total bytes of code 145 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformByMatrix3x2Benchmark() sub esp,10 vzeroupper vmovsd xmm0,qword ptr ds:[83427D8] vmovsd xmm1,qword ptr ds:[83427E0] vmovsd xmm2,qword ptr ds:[83427E8] vmovsd qword ptr [esp+8],xmm2 vmovss xmm3,dword ptr [esp+8] vbroadcastss xmm3,xmm3 vmulps xmm0,xmm0,xmm3 vmovsd qword ptr [esp],xmm2 vmovss xmm2,dword ptr [esp+4] vbroadcastss xmm2,xmm2 vmulps xmm1,xmm1,xmm2 vaddps xmm0,xmm0,xmm1 vxorps xmm1,xmm1,xmm1 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 add esp,10 ret ; Total bytes of code 91 ``` #### System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.14628467177604237 < 2.6605731190521875. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 50.346286212002276 (T) = (0 -0.25268329666010814) / Math.Sqrt((1.0146515598519794 / (299)) + (0.0012923015085766108 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.921207274438515 = (3.2069368696089806 - 0.25268329666010814) / 3.2069368696089806 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark() sub esp,50 vzeroupper vmovups xmm0,ds:[85026E0] vmovups [esp+10],xmm0 vmovups xmm0,ds:[85026F0] vmovups [esp+20],xmm0 vmovups xmm0,ds:[8502700] vmovups [esp+30],xmm0 vmovups xmm0,ds:[8502710] vmovups [esp+40],xmm0 vmovsd xmm0,qword ptr ds:[8502720] vmovsd qword ptr [esp+8],xmm0 vmovsd qword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp+8] vmulss xmm0,xmm0,dword ptr [esp+10] vmovss xmm1,dword ptr [esp+4] vmulss xmm1,xmm1,dword ptr [esp+20] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+40] vmovss xmm1,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+14] vmovss xmm2,dword ptr [esp+4] vmulss xmm2,xmm2,dword ptr [esp+24] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+44] vinsertps xmm0,xmm0,xmm1,1C vmovsd qword ptr [edx],xmm0 add esp,50 ret ; Total bytes of code 163 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark() sub esp,10 vzeroupper vmovups xmm0,ds:[85E27D0] vmovups xmm1,ds:[85E27E0] vmovups xmm2,ds:[85E27F0] vmovsd xmm3,qword ptr ds:[85E2800] vmovsd qword ptr [esp+8],xmm3 vbroadcastss xmm4,dword ptr [esp+8] vmulps xmm0,xmm0,xmm4 vmovsd qword ptr [esp],xmm3 vbroadcastss xmm3,dword ptr [esp+4] vmulps xmm1,xmm1,xmm3 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm2 vmovsd qword ptr [edx],xmm0 add esp,10 ret ; Total bytes of code 87 ``` #### System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix3x2Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.18686491392156238 < 1.7786791880468598. IsChangePoint: Marked as a change because one of 1/7/2023 3:37:16 AM, 1/22/2023 2:59:30 AM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 43.509577124355225 (T) = (0 -0.2012300509588873) / Math.Sqrt((0.6169416412003788 / (299)) + (0.000654460669033643 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9080987201430168 = (2.189632737128817 - 0.2012300509588873) / 2.189632737128817 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix3x2Benchmark() sub esp,28 vzeroupper vmovsd xmm0,qword ptr ds:[8D526C0] vmovsd qword ptr [esp+10],xmm0 vmovsd xmm0,qword ptr ds:[8D526C8] vmovsd qword ptr [esp+18],xmm0 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp+20],xmm0 vmovsd xmm0,qword ptr ds:[8D526D0] vmovsd qword ptr [esp+8],xmm0 vmovsd qword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp+8] vmulss xmm0,xmm0,dword ptr [esp+10] vmovss xmm1,dword ptr [esp+4] vmulss xmm1,xmm1,dword ptr [esp+18] vaddss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+14] vmovss xmm2,dword ptr [esp+4] vmulss xmm2,xmm2,dword ptr [esp+1C] vaddss xmm1,xmm1,xmm2 vinsertps xmm0,xmm0,xmm1,1C vmovsd qword ptr [edx],xmm0 add esp,28 ret ; Total bytes of code 133 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix3x2Benchmark() sub esp,10 vzeroupper vmovsd xmm0,qword ptr ds:[89927D0] vmovsd xmm1,qword ptr ds:[89927D8] vmovsd xmm2,qword ptr ds:[89927E0] vmovsd qword ptr [esp+8],xmm2 vmovss xmm3,dword ptr [esp+8] vbroadcastss xmm3,xmm3 vmulps xmm0,xmm0,xmm3 vmovsd qword ptr [esp],xmm2 vmovss xmm2,dword ptr [esp+4] vbroadcastss xmm2,xmm2 vmulps xmm1,xmm1,xmm2 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 add esp,10 ret ; Total bytes of code 83 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

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

Improvements 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
[TransformByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark.html>) 5.65 ns 1.04 ns 0.18 0.48 False 40.76296087982492 14.454022844509575 0.35458716767710075 Trace Trace
[TransformNormalByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark.html>) 4.62 ns 0.90 ns 0.19 0.49 False Trace Trace

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_Vector3*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 1.0432348131058835 < 5.372860236914408. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/22/2023 2:59:30 AM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 54.54570649785535 (T) = (0 -1.0378077657630633) / Math.Sqrt((1.53632605083076 / (299)) + (0.016439049374838727 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.7997013571693079 = (5.1813020352828785 - 1.0378077657630633) / 5.1813020352828785 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark() sub esp,0A0 vzeroupper vmovups xmm0,ds:[8DB27B0] vmovups [esp+60],xmm0 vmovups xmm0,ds:[8DB27C0] vmovups [esp+70],xmm0 vmovups xmm0,ds:[8DB27D0] vmovups [esp+80],xmm0 vmovups xmm0,ds:[8DB27E0] vmovups [esp+90],xmm0 vmovups xmm0,ds:[8DB27F0] vmovups [esp+50],xmm0 vmovups [esp+40],xmm0 vmovups [esp+30],xmm0 vmovups [esp+20],xmm0 vmovups [esp+10],xmm0 vmovups [esp],xmm0 vmovss xmm0,dword ptr [esp+50] vmulss xmm0,xmm0,dword ptr [esp+60] vmovss xmm1,dword ptr [esp+44] vmulss xmm1,xmm1,dword ptr [esp+70] vaddss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [esp+38] vmulss xmm1,xmm1,dword ptr [esp+80] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+90] vmovss xmm1,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp+64] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+74] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+84] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+94] vinsertps xmm0,xmm0,xmm1,10 vmovss xmm1,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp+68] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+78] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+88] vaddss xmm1,xmm1,xmm2 vaddss xmm1,xmm1,dword ptr [esp+98] vinsertps xmm0,xmm0,xmm1,28 vmovsd qword ptr [edx],xmm0 vextractps dword ptr [edx+8],xmm0,2 add esp,0A0 ret ; Total bytes of code 312 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark() sub esp,30 vzeroupper vmovups xmm0,ds:[8352840] vmovups xmm1,ds:[8352850] vmovups xmm2,ds:[8352860] vmovups xmm3,ds:[8352870] vmovups xmm4,ds:[8352880] vmovups [esp+20],xmm4 vbroadcastss xmm5,dword ptr [esp+20] vmulps xmm0,xmm0,xmm5 vmovups [esp+10],xmm4 vbroadcastss xmm5,dword ptr [esp+14] vmulps xmm1,xmm1,xmm5 vaddps xmm0,xmm0,xmm1 vmovups [esp],xmm4 vbroadcastss xmm1,dword ptr [esp+8] vmulps xmm1,xmm2,xmm1 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm3 vmovsd qword ptr [edx],xmm0 vextractps dword ptr [edx+8],xmm0,2 add esp,30 ret ; Total bytes of code 123 ``` #### System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.9017214445280582 < 4.476929924191333. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/22/2023 2:59:30 AM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 47.90824075470188 (T) = (0 -0.8237966076159507) / Math.Sqrt((1.4829288189109089 / (299)) + (0.02967222782087244 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8195729703284775 = (4.565815937422008 - 0.8237966076159507) / 4.565815937422008 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark() sub esp,0A0 vzeroupper vmovups xmm0,ds:[0BC227A0] vmovups [esp+60],xmm0 vmovups xmm0,ds:[0BC227B0] vmovups [esp+70],xmm0 vmovups xmm0,ds:[0BC227C0] vmovups [esp+80],xmm0 vmovups xmm0,ds:[0BC227D0] vmovups [esp+90],xmm0 vmovups xmm0,ds:[0BC227E0] vmovups [esp+50],xmm0 vmovups [esp+40],xmm0 vmovups [esp+30],xmm0 vmovups [esp+20],xmm0 vmovups [esp+10],xmm0 vmovups [esp],xmm0 vmovss xmm0,dword ptr [esp+50] vmulss xmm0,xmm0,dword ptr [esp+60] vmovss xmm1,dword ptr [esp+44] vmulss xmm1,xmm1,dword ptr [esp+70] vaddss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [esp+38] vmulss xmm1,xmm1,dword ptr [esp+80] vaddss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp+64] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+74] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+84] vaddss xmm1,xmm1,xmm2 vinsertps xmm0,xmm0,xmm1,10 vmovss xmm1,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp+68] vmovss xmm2,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+78] vaddss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [esp+8] vmulss xmm2,xmm2,dword ptr [esp+88] vaddss xmm1,xmm1,xmm2 vinsertps xmm0,xmm0,xmm1,28 vmovsd qword ptr [edx],xmm0 vextractps dword ptr [edx+8],xmm0,2 add esp,0A0 ret ; Total bytes of code 285 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark() sub esp,30 vzeroupper vmovups xmm0,ds:[8652830] vmovups xmm1,ds:[8652840] vmovups xmm2,ds:[8652850] vmovups xmm3,ds:[8652860] vmovups [esp+20],xmm3 vbroadcastss xmm4,dword ptr [esp+20] vmulps xmm0,xmm0,xmm4 vmovups [esp+10],xmm3 vbroadcastss xmm4,dword ptr [esp+14] vmulps xmm1,xmm1,xmm4 vaddps xmm0,xmm0,xmm1 vmovups [esp],xmm3 vbroadcastss xmm1,dword ptr [esp+8] vmulps xmm1,xmm2,xmm1 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 vextractps dword ptr [edx+8],xmm0,2 add esp,30 ret ; Total bytes of code 111 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

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

Improvements in System.Numerics.Tests.Perf_Matrix4x4

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Transpose - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix4x4.Transpose.html>) 8.77 ns 0.61 ns 0.07 0.09 False Trace Trace
[CreateConstrainedBillboardBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix4x4.CreateConstrainedBillboardBenchmark.html>) 44.40 ns 19.86 ns 0.45 0.21 False Trace Trace

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_Matrix4x4*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Matrix4x4.Transpose ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 0.6092977257304982 < 8.193138879158726. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 119.1570533005417 (T) = (0 -0.6307895138977896) / Math.Sqrt((1.5430276379149035 / (299)) + (0.019431180925773405 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9355653732383178 = (9.789604527870189 - 0.6307895138977896) / 9.789604527870189 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix4x4.Transpose() push esi sub esp,80 vzeroupper mov esi,edx vmovups xmm0,ds:[8F32450] vmovups [esp+40],xmm0 vmovups xmm0,ds:[8F32460] vmovups [esp+50],xmm0 vmovups xmm0,ds:[8F32470] vmovups [esp+60],xmm0 vmovups xmm0,ds:[8F32480] vmovups [esp+70],xmm0 lea ecx,[esp] lea edx,[esp+40] call dword ptr ds:[0B8FB480]; System.Numerics.Matrix4x4+Impl.Transpose(Impl ByRef) vmovdqu ymm0,ymmword ptr [esp] vmovdqu ymmword ptr [esi],ymm0 vmovdqu ymm0,ymmword ptr [esp+20] vmovdqu ymmword ptr [esi+20],ymm0 add esp,80 pop esi ret ; Total bytes of code 109 ``` ```assembly ; System.Numerics.Matrix4x4+Impl.Transpose(Impl ByRef) push ebp mov ebp,esp vzeroupper vmovups xmm0,[edx] vmovups xmm1,[edx+10] vmovups xmm2,[edx+20] vmovups xmm3,[edx+30] vunpcklps xmm4,xmm0,xmm2 vunpcklps xmm5,xmm1,xmm3 vunpckhps xmm0,xmm0,xmm2 vunpckhps xmm1,xmm1,xmm3 vunpcklps xmm2,xmm4,xmm5 vunpckhps xmm3,xmm4,xmm5 vunpcklps xmm4,xmm0,xmm1 vunpckhps xmm0,xmm0,xmm1 vmovups [ecx],xmm2 vmovups [ecx+10],xmm3 vmovups [ecx+20],xmm4 vmovups [ecx+30],xmm0 pop ebp ret ; Total bytes of code 78 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix4x4.Transpose() vzeroupper vmovups xmm0,ds:[85625A0] vunpcklps xmm0,xmm0,ds:[85625B0] vmovups xmm1,ds:[85625C0] vunpcklps xmm1,xmm1,ds:[85625D0] vmovups xmm2,ds:[85625A0] vunpckhps xmm2,xmm2,ds:[85625B0] vmovups xmm3,ds:[85625C0] vunpckhps xmm3,xmm3,ds:[85625D0] vunpcklps xmm4,xmm0,xmm1 vunpckhps xmm0,xmm0,xmm1 vunpcklps xmm1,xmm2,xmm3 vunpckhps xmm2,xmm2,xmm3 vmovups [edx],xmm4 vmovups [edx+10],xmm0 vmovups [edx+20],xmm1 vmovups [edx+30],xmm2 ret ; Total bytes of code 103 ``` #### System.Numerics.Tests.Perf_Matrix4x4.CreateConstrainedBillboardBenchmark ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed:Marked as improvement because 19.862609291088066 < 42.249758562361016. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 34.38209867903566 (T) = (0 -20.468648947563565) / Math.Sqrt((353.73603783995327 / (299)) + (4.694494141598197 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.6623341807616101 = (60.61806609188605 - 20.468648947563565) / 60.61806609188605 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix4x4.CreateConstrainedBillboardBenchmark() push ebp mov ebp,esp sub esp,0E0 vzeroupper vmovups xmm0,ds:[8422770] vmovups [ebp-10],xmm0 vmovups xmm0,ds:[8422780] vmovups [ebp-20],xmm0 vmovups xmm0,ds:[8422790] vmovups [ebp-30],xmm0 vmovss xmm0,dword ptr [ebp-20] vmovss dword ptr [ebp-40],xmm0 vmovss xmm0,dword ptr [ebp-1C] vmovss dword ptr [ebp-3C],xmm0 vmovss xmm0,dword ptr [ebp-18] vmovss dword ptr [ebp-38],xmm0 vmovups xmm0,[ebp-30] vmovss xmm1,dword ptr [ebp-10] vmovss dword ptr [ebp-50],xmm1 vmovss xmm1,dword ptr [ebp-0C] vmovss dword ptr [ebp-4C],xmm1 vmovss xmm1,dword ptr [ebp-8] vmovss dword ptr [ebp-48],xmm1 vmovups xmm1,[ebp-10] vxorps xmm2,xmm2,xmm2 vsubps xmm1,xmm2,xmm1 vdpps xmm2,xmm1,xmm1,71 vmovss xmm3,dword ptr ds:[84227A0] vucomiss xmm3,xmm2 jbe short M00_L00 vxorps xmm1,xmm1,xmm1 vsubps xmm1,xmm1,xmm0 jmp short M00_L01 M00_L00: vsqrtss xmm2,xmm2,xmm2 vmovss xmm0,dword ptr ds:[8422780] vdivss xmm0,xmm0,xmm2 vbroadcastss xmm0,xmm0 vmulps xmm1,xmm1,xmm0 M00_L01: vmovups xmm0,[ebp-40] vmovups xmm2,[ebp-40] vdpps xmm2,xmm2,xmm1,71 vandps xmm2,xmm2,ds:[84227B0] vmovss xmm3,dword ptr ds:[84227C0] vucomiss xmm2,xmm3 jbe short M00_L04 vmovups xmm1,[ebp-50] vmovups xmm2,[ebp-50] vdpps xmm2,xmm0,xmm2,71 vandps xmm2,xmm2,ds:[84227B0] vucomiss xmm2,xmm3 jbe short M00_L04 vunpckhps xmm1,xmm0,xmm0 vandps xmm1,xmm1,ds:[84227B0] vucomiss xmm1,xmm3 ja short M00_L02 vmovups xmm1,ds:[84227D0] vmovups [ebp-60],xmm1 jmp short M00_L03 M00_L02: vmovups xmm1,ds:[8422780] vmovups [ebp-60],xmm1 M00_L03: vmovups xmm1,[ebp-60] M00_L04: vmovups [ebp-70],xmm0 vmovups [ebp-80],xmm1 vmovss xmm1,dword ptr [ebp-6C] vmulss xmm1,xmm1,dword ptr [ebp-78] vmovss xmm2,dword ptr [ebp-68] vmulss xmm2,xmm2,dword ptr [ebp-7C] vsubss xmm1,xmm1,xmm2 vmovss xmm2,dword ptr [ebp-68] vmulss xmm2,xmm2,dword ptr [ebp-80] vmovss xmm3,dword ptr [ebp-70] vmulss xmm3,xmm3,dword ptr [ebp-78] vsubss xmm2,xmm2,xmm3 vinsertps xmm1,xmm1,xmm2,10 vmovss xmm2,dword ptr [ebp-70] vmulss xmm2,xmm2,dword ptr [ebp-7C] vmovss xmm3,dword ptr [ebp-6C] vmulss xmm3,xmm3,dword ptr [ebp-80] vsubss xmm2,xmm2,xmm3 vinsertps xmm1,xmm1,xmm2,28 vdpps xmm2,xmm1,xmm1,71 vsqrtss xmm2,xmm2,xmm2 vbroadcastss xmm2,xmm2 vdivps xmm1,xmm1,xmm2 vmovups [ebp-90],xmm1 vmovups [ebp-0A0],xmm0 vmovss xmm2,dword ptr [ebp-8C] vmulss xmm2,xmm2,dword ptr [ebp-98] vmovss xmm3,dword ptr [ebp-88] vmulss xmm3,xmm3,dword ptr [ebp-9C] vsubss xmm2,xmm2,xmm3 vmovss xmm3,dword ptr [ebp-88] vmulss xmm3,xmm3,dword ptr [ebp-0A0] vmovss xmm4,dword ptr [ebp-90] vmulss xmm4,xmm4,dword ptr [ebp-98] vsubss xmm3,xmm3,xmm4 vinsertps xmm2,xmm2,xmm3,10 vmovss xmm3,dword ptr [ebp-90] vmulss xmm3,xmm3,dword ptr [ebp-9C] vmovss xmm4,dword ptr [ebp-8C] vmulss xmm4,xmm4,dword ptr [ebp-0A0] vsubss xmm3,xmm3,xmm4 vinsertps xmm2,xmm2,xmm3,28 vdpps xmm3,xmm2,xmm2,71 vsqrtss xmm3,xmm3,xmm3 vbroadcastss xmm3,xmm3 vdivps xmm2,xmm2,xmm3 vmovups [ebp-0B0],xmm1 vmovss xmm1,dword ptr [ebp-0B0] vinsertps xmm1,xmm1,dword ptr [ebp-0AC],10 vinsertps xmm1,xmm1,dword ptr [ebp-0A8],28 vmovups [ebp-0C0],xmm0 vmovss xmm0,dword ptr [ebp-0C0] vinsertps xmm0,xmm0,dword ptr [ebp-0BC],10 vinsertps xmm0,xmm0,dword ptr [ebp-0B8],28 vmovups [ebp-0D0],xmm2 vmovss xmm2,dword ptr [ebp-0D0] vinsertps xmm2,xmm2,dword ptr [ebp-0CC],10 vinsertps xmm2,xmm2,dword ptr [ebp-0C8],28 vxorps xmm3,xmm3,xmm3 vmovups [ebp-0E0],xmm3 vmovss xmm3,dword ptr [ebp-0E0] vinsertps xmm3,xmm3,dword ptr [ebp-0DC],10 vinsertps xmm3,xmm3,dword ptr [ebp-0D8],20 vinsertps xmm3,xmm3,dword ptr ds:[84227E0],30 vmovups [edx],xmm1 vmovups [edx+10],xmm0 vmovups [edx+20],xmm2 vmovups [edx+30],xmm3 mov esp,ebp pop ebp ret ; Total bytes of code 752 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix4x4.CreateConstrainedBillboardBenchmark() push ebp mov ebp,esp sub esp,44 vzeroupper vmovups xmm0,ds:[84C2780] vmovups xmm1,ds:[84C2790] vmovups [ebp-10],xmm1 vmovups [ebp-20],xmm0 vxorps xmm0,xmm0,xmm0 vmovups xmm1,ds:[84C2780] vsubps xmm0,xmm0,xmm1 vdpps xmm1,xmm0,xmm0,7F vmovss xmm2,dword ptr ds:[84C27A0] vucomiss xmm2,xmm1 jbe short M00_L00 vmovups xmm0,ds:[84C27B0] vxorps xmm1,xmm1,xmm1 vsubps xmm0,xmm1,xmm0 jmp short M00_L01 M00_L00: vsqrtss xmm1,xmm1,xmm1 vmovss xmm2,dword ptr ds:[84C2790] vdivss xmm1,xmm2,xmm1 vbroadcastss xmm1,xmm1 vmulps xmm0,xmm0,xmm1 M00_L01: vmovups xmm1,[ebp-10] vmovups xmm2,[ebp-10] vdpps xmm2,xmm2,xmm0,7F vandps xmm2,xmm2,ds:[84C27C0] vmovss xmm3,dword ptr ds:[84C27D0] vucomiss xmm2,xmm3 jbe short M00_L04 vmovups xmm0,[ebp-20] vmovups xmm2,[ebp-20] vdpps xmm2,xmm1,xmm2,7F vandps xmm2,xmm2,ds:[84C27C0] vucomiss xmm2,xmm3 jbe short M00_L04 vunpckhps xmm2,xmm1,xmm1 vandps xmm2,xmm2,ds:[84C27C0] vucomiss xmm2,xmm3 ja short M00_L02 vmovups xmm0,ds:[84C27E0] vmovups [ebp-30],xmm0 jmp short M00_L03 M00_L02: vmovups xmm0,ds:[84C2790] vmovups [ebp-30],xmm0 M00_L03: vmovups xmm0,[ebp-30] M00_L04: vmovups [ebp-40],xmm0 vmovshdup xmm0,xmm1 vmulss xmm2,xmm0,dword ptr [ebp-38] vunpckhps xmm3,xmm1,xmm1 vmulss xmm4,xmm3,dword ptr [ebp-3C] vsubss xmm2,xmm2,xmm4 vmulss xmm4,xmm3,dword ptr [ebp-40] vmovaps xmm5,xmm1 vmulss xmm6,xmm5,dword ptr [ebp-38] vsubss xmm4,xmm4,xmm6 vinsertps xmm2,xmm2,xmm4,10 vmulss xmm4,xmm5,dword ptr [ebp-3C] vmulss xmm6,xmm0,dword ptr [ebp-40] vsubss xmm4,xmm4,xmm6 vinsertps xmm2,xmm2,xmm4,28 vdpps xmm4,xmm2,xmm2,7F vsqrtps xmm4,xmm4 vdivps xmm2,xmm2,xmm4 vmovshdup xmm4,xmm2 vmovss dword ptr [ebp-44],xmm4 vmulss xmm6,xmm4,xmm3 vunpckhps xmm7,xmm2,xmm2 vmulss xmm4,xmm7,xmm0 vsubss xmm4,xmm6,xmm4 vmulss xmm6,xmm7,xmm5 vmovaps xmm7,xmm2 vmulss xmm3,xmm7,xmm3 vsubss xmm3,xmm6,xmm3 vinsertps xmm3,xmm4,xmm3,10 vmulss xmm0,xmm7,xmm0 vmulss xmm4,xmm5,dword ptr [ebp-44] vsubss xmm0,xmm0,xmm4 vinsertps xmm0,xmm3,xmm0,28 vdpps xmm3,xmm0,xmm0,7F vsqrtps xmm3,xmm3 vdivps xmm0,xmm0,xmm3 vinsertps xmm2,xmm2,xmm2,38 vinsertps xmm1,xmm1,xmm1,38 vinsertps xmm0,xmm0,xmm0,38 vinsertps xmm3,xmm3,dword ptr ds:[84C27F0],37 vmovups [edx],xmm2 vmovups [edx+10],xmm1 vmovups [edx+20],xmm0 vmovups [edx+30],xmm3 mov esp,ebp pop ebp ret ; Total bytes of code 449 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)