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: 107 Improvements on 1/7/2023 12:45:06 AM #11528

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<Int16>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementBenchmark - 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_VectorOf(Int16).OnesComplementBenchmark.html>) 9.92 ns 0.35 ns 0.04 0.02 False
[OnesComplementOperatorBenchmark - 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_VectorOf(Int16).OnesComplementOperatorBenchmark.html>) 10.31 ns 0.35 ns 0.03 0.03 False

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_VectorOf&lt;Int16&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Int16>.OnesComplementBenchmark ```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.3509222883518552 < 9.424572981572748. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 568.1502791361997 (T) = (0 -0.3641376066831087) / Math.Sqrt((0.03532129450861077 / (299)) + (0.002613970117881732 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.963872643887231 = (10.079276367373232 - 0.3641376066831087) / 10.079276367373232 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<Int16>.OnesComplementOperatorBenchmark ```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.3507686993360266 < 9.752579687748735. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 579.1538225019741 (T) = (0 -0.3575034209587745) / Math.Sqrt((0.0712412012079439 / (299)) + (0.0006557270856515291 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9645432592464137 = (10.08280550779656 - 0.3575034209587745) / 10.08280550779656 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements 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
[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_Plane.TransformByMatrix4x4Benchmark.html>) 38.37 ns 31.60 ns 0.82 0.17 False 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.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 31.595696739362747 < 36.07368958105265. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 24.058252650370477 (T) = (0 -31.1127784031706) / Math.Sqrt((1.5595334811026225 / (299)) + (0.8648323179012387 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.16240069371365012 = (37.1451816753703 - 31.1127784031706) / 37.1451816753703 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Plane.TransformByMatrix4x4Benchmark() push ebp mov ebp,esp push esi sub esp,94 vzeroupper mov esi,edx mov ecx,ds:[6D8452C] add ecx,4 vmovss xmm0,dword ptr [ecx+8] vmovsd xmm1,qword ptr [ecx] vshufps xmm1,xmm1,xmm0,44 vmovupd [ebp-94],xmm1 vmovss xmm0,dword ptr [ecx+0C] vmovss dword ptr [ebp-98],xmm0 lea ecx,[ebp-44] call dword ptr ds:[0B15B030]; System.Numerics.Matrix4x4.get_Identity() sub esp,40 vmovdqu xmm0,xmmword ptr [ebp-44] vmovdqu xmmword ptr [esp],xmm0 vmovdqu xmm0,xmmword ptr [ebp-34] vmovdqu xmmword ptr [esp+10],xmm0 vmovdqu xmm0,xmmword ptr [ebp-24] vmovdqu xmmword ptr [esp+20],xmm0 vmovdqu xmm0,xmmword ptr [ebp-14] vmovdqu xmmword ptr [esp+30],xmm0 lea ecx,[ebp-84] call dword ptr ds:[0B15B600]; System.Numerics.Matrix4x4.g__SseImpl|68_0(System.Numerics.Matrix4x4, System.Numerics.Matrix4x4 ByRef) vmovupd xmm1,[ebp-94] vmovaps xmm0,xmm1 vmovshdup xmm2,xmm1 vunpckhps xmm1,xmm1,xmm1 vmulss xmm3,xmm0,dword ptr [ebp-84] vmulss xmm4,xmm2,dword ptr [ebp-80] vaddss xmm3,xmm3,xmm4 vmulss xmm4,xmm1,dword ptr [ebp-7C] vaddss xmm3,xmm3,xmm4 vmovss xmm4,dword ptr [ebp-98] vmulss xmm5,xmm4,dword ptr [ebp-78] vaddss xmm3,xmm3,xmm5 vmulss xmm5,xmm0,dword ptr [ebp-74] vmulss xmm6,xmm2,dword ptr [ebp-70] vaddss xmm5,xmm5,xmm6 vmulss xmm6,xmm1,dword ptr [ebp-6C] vaddss xmm5,xmm5,xmm6 vmulss xmm6,xmm4,dword ptr [ebp-68] vaddss xmm5,xmm5,xmm6 vmulss xmm6,xmm0,dword ptr [ebp-64] vmulss xmm7,xmm2,dword ptr [ebp-60] vaddss xmm6,xmm6,xmm7 vmulss xmm7,xmm1,dword ptr [ebp-5C] vaddss xmm6,xmm6,xmm7 vmulss xmm7,xmm4,dword ptr [ebp-58] vaddss xmm6,xmm6,xmm7 vmulss xmm0,xmm0,dword ptr [ebp-54] vmulss xmm2,xmm2,dword ptr [ebp-50] vaddss xmm0,xmm0,xmm2 vmulss xmm1,xmm1,dword ptr [ebp-4C] vaddss xmm0,xmm0,xmm1 vmulss xmm1,xmm4,dword ptr [ebp-48] vaddss xmm0,xmm0,xmm1 vinsertps xmm1,xmm3,xmm5,10 vinsertps xmm1,xmm1,xmm6,28 vmovsd qword ptr [esi],xmm1 vpshufd xmm2,xmm1,2 vmovss dword ptr [esi+8],xmm2 vmovss dword ptr [esi+0C],xmm0 lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 322 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[6D8122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ```assembly ; System.Numerics.Matrix4x4.g__SseImpl|68_0(System.Numerics.Matrix4x4, System.Numerics.Matrix4x4 ByRef) push ebp mov ebp,esp sub esp,120 vzeroupper vmovups xmm0,[ebp+8] vmovups xmm1,[ebp+18] vmovups xmm2,[ebp+28] vmovups xmm3,[ebp+38] vshufps xmm4,xmm0,xmm1,44 vshufps xmm5,xmm0,xmm1,0EE vshufps xmm1,xmm2,xmm3,44 vshufps xmm3,xmm2,xmm3,0EE vshufps xmm0,xmm4,xmm1,88 vshufps xmm1,xmm4,xmm1,0DD vshufps xmm2,xmm5,xmm3,88 vshufps xmm3,xmm5,xmm3,0DD vpermilps xmm4,xmm2,50 vpermilps xmm5,xmm3,0EE vpermilps xmm6,xmm0,50 vpermilps xmm7,xmm1,0EE vmovupd [ebp-20],xmm2 vshufps xmm2,xmm2,xmm0,88 vmovupd [ebp-10],xmm1 vshufps xmm1,xmm3,xmm1,0DD vmulps xmm4,xmm4,xmm5 vmovupd [ebp-50],xmm4 vmulps xmm5,xmm6,xmm7 vmovupd [ebp-60],xmm5 vmulps xmm6,xmm2,xmm1 vmovupd [ebp-70],xmm6 vmovupd xmm2,[ebp-20] vpermilps xmm7,xmm2,0EE vpermilps xmm1,xmm3,50 vpermilps xmm6,xmm0,0EE vpermilps xmm5,[ebp-10],50 vmovupd [ebp-20],xmm2 vshufps xmm2,xmm2,xmm0,0DD vshufps xmm4,xmm3,[ebp-10],88 vmulps xmm7,xmm7,xmm1 vmovupd xmm1,[ebp-50] vsubps xmm1,xmm1,xmm7 vmulps xmm5,xmm6,xmm5 vmovupd xmm7,[ebp-60] vsubps xmm7,xmm7,xmm5 vmovupd [ebp-60],xmm7 vmulps xmm6,xmm2,xmm4 vmovupd xmm5,[ebp-70] vsubps xmm5,xmm5,xmm6 vmovupd [ebp-70],xmm5 vshufps xmm2,xmm1,xmm5,5D vpermilps xmm4,[ebp-10],49 vshufps xmm5,xmm2,xmm1,32 vpermilps xmm7,xmm0,12 vmovupd [ebp-50],xmm1 vshufps xmm2,xmm2,xmm1,99 vmovupd xmm1,[ebp-60] vshufps xmm1,xmm1,[ebp-70],0FD vmovupd [ebp-30],xmm3 vpermilps xmm6,xmm3,49 vshufps xmm3,xmm1,[ebp-60],32 vmovupd [ebp-40],xmm3 vpermilps xmm3,[ebp-20],12 vmovupd [ebp-80],xmm3 vshufps xmm1,xmm1,[ebp-60],99 vmulps xmm4,xmm4,xmm5 vmovupd [ebp-90],xmm4 vmulps xmm2,xmm7,xmm2 vmovupd [ebp-0A0],xmm2 vmulps xmm5,xmm6,[ebp-40] vmovupd [ebp-0B0],xmm5 vmovupd xmm6,[ebp-80] vmulps xmm7,xmm6,xmm1 vmovupd [ebp-0C0],xmm7 vmovupd xmm1,[ebp-50] vshufps xmm6,xmm1,[ebp-70],4 vpermilps xmm1,[ebp-10],9E vmovupd xmm7,[ebp-50] vshufps xmm7,xmm7,xmm6,93 vpermilps xmm5,xmm0,7B vmovupd xmm2,[ebp-50] vshufps xmm6,xmm2,xmm6,26 vmovupd xmm2,[ebp-60] vshufps xmm2,xmm2,[ebp-70],0A4 vpermilps xmm3,[ebp-30],9E vmovupd xmm4,[ebp-60] vshufps xmm4,xmm4,xmm2,93 vmovupd [ebp-40],xmm4 vpermilps xmm4,[ebp-20],7B vmovupd [ebp-80],xmm4 vmovupd xmm4,[ebp-60] vshufps xmm2,xmm4,xmm2,26 vmulps xmm1,xmm1,xmm7 vmovupd xmm7,[ebp-90] vsubps xmm7,xmm7,xmm1 vmovupd [ebp-90],xmm7 vmulps xmm5,xmm5,xmm6 vmovupd xmm1,[ebp-0A0] vsubps xmm1,xmm1,xmm5 vmovupd [ebp-0A0],xmm1 vmulps xmm6,xmm3,[ebp-40] vmovupd xmm5,[ebp-0B0] vsubps xmm5,xmm5,xmm6 vmovupd [ebp-0B0],xmm5 vmovupd xmm6,[ebp-80] vmulps xmm3,xmm6,xmm2 vmovupd xmm2,[ebp-0C0] vsubps xmm2,xmm2,xmm3 vmovupd [ebp-0C0],xmm2 vpermilps xmm6,[ebp-10],33 vmovupd xmm3,[ebp-50] vmovupd xmm2,[ebp-70] vshufps xmm5,xmm3,xmm2,4A vpermilps xmm5,xmm5,2C vpermilps xmm1,xmm0,8D vmovupd [ebp-70],xmm2 vshufps xmm3,xmm3,xmm2,4C vpermilps xmm3,xmm3,93 vpermilps xmm2,[ebp-30],33 vmovupd [ebp-60],xmm4 vshufps xmm4,xmm4,[ebp-70],0EA vpermilps xmm4,xmm4,2C vpermilps xmm7,[ebp-20],8D vmovupd [ebp-80],xmm7 vmovupd xmm7,[ebp-60] vshufps xmm7,xmm7,[ebp-70],0EC vpermilps xmm7,xmm7,93 vmulps xmm6,xmm6,xmm5 vmulps xmm1,xmm1,xmm3 vmulps xmm2,xmm2,xmm4 vmovupd xmm3,[ebp-80] vmulps xmm3,xmm3,xmm7 vmovupd xmm7,[ebp-90] vsubps xmm4,xmm7,xmm6 vaddps xmm7,xmm7,xmm6 vmovupd xmm5,[ebp-0A0] vaddps xmm6,xmm5,xmm1 vmovupd [ebp-0D0],xmm6 vsubps xmm5,xmm5,xmm1 vmovupd xmm1,[ebp-0B0] vsubps xmm6,xmm1,xmm2 vmovupd [ebp-0E0],xmm6 vaddps xmm1,xmm1,xmm2 vmovupd xmm2,[ebp-0C0] vaddps xmm6,xmm2,xmm3 vsubps xmm2,xmm2,xmm3 vshufps xmm7,xmm7,xmm4,0D8 vshufps xmm5,xmm5,[ebp-0D0],0D8 vshufps xmm1,xmm1,[ebp-0E0],0D8 vshufps xmm2,xmm2,xmm6,0D8 vpermilps xmm7,xmm7,0D8 vpermilps xmm5,xmm5,0D8 vpermilps xmm1,xmm1,0D8 vpermilps xmm2,xmm2,0D8 vdpps xmm0,xmm7,xmm0,0F1 vandps xmm3,xmm0,ds:[0B142D00] vmovss xmm4,dword ptr ds:[0B142D10] vucomiss xmm4,xmm3 jbe near ptr M02_L00 vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [ebp-120],ymm0 vmovdqu ymmword ptr [ebp-100],ymm0 vmovss xmm7,dword ptr ds:[0B142D14] vmovss dword ptr [ebp-120],xmm7 vmovss dword ptr [ebp-11C],xmm7 vmovss dword ptr [ebp-118],xmm7 vmovss dword ptr [ebp-114],xmm7 vmovss dword ptr [ebp-110],xmm7 vmovss dword ptr [ebp-10C],xmm7 vmovss dword ptr [ebp-108],xmm7 vmovss dword ptr [ebp-104],xmm7 vmovss dword ptr [ebp-100],xmm7 vmovss dword ptr [ebp-0FC],xmm7 vmovss dword ptr [ebp-0F8],xmm7 vmovss dword ptr [ebp-0F4],xmm7 vmovss dword ptr [ebp-0F0],xmm7 vmovss dword ptr [ebp-0EC],xmm7 vmovss dword ptr [ebp-0E8],xmm7 vmovss dword ptr [ebp-0E4],xmm7 vmovdqu ymm5,ymmword ptr [ebp-120] vmovdqu ymmword ptr [ecx],ymm5 vmovdqu ymm5,ymmword ptr [ebp-100] vmovdqu ymmword ptr [ecx+20],ymm5 xor eax,eax mov esp,ebp pop ebp ret 40 M02_L00: vbroadcastss xmm0,xmm0 vmovupd xmm3,ds:[0B142D20] vdivps xmm0,xmm3,xmm0 vmulps xmm3,xmm7,xmm0 vmulps xmm4,xmm5,xmm0 vmovaps xmm6,xmm4 vmulps xmm1,xmm1,xmm0 vmulps xmm0,xmm2,xmm0 vmovupd [ecx],xmm3 vmovupd [ecx+10],xmm6 vmovupd [ecx+20],xmm1 vmovupd [ecx+30],xmm0 mov eax,1 mov esp,ebp pop ebp ret 40 ; Total bytes of code 1121 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Plane.TransformByMatrix4x4Benchmark() push esi sub esp,94 vzeroupper mov esi,edx mov ecx,ds:[6AF4538] add ecx,4 vmovsd xmm0,qword ptr [ecx] vinsertps xmm0,xmm0,dword ptr [ecx+8],28 vmovupd [esp+4],xmm0 vmovss xmm1,dword ptr [ecx+0C] vmovss dword ptr [esp],xmm1 vmovupd xmm2,ds:[0AF02E30] vmovupd [esp+14],xmm2 vmovupd xmm2,ds:[0AF02E40] vmovupd [esp+24],xmm2 vmovupd xmm2,ds:[0AF02E50] vmovupd [esp+34],xmm2 vmovupd xmm2,ds:[0AF02E60] vmovupd [esp+44],xmm2 lea ecx,[esp+14] lea edx,[esp+54] call dword ptr ds:[0AEF7B58]; System.Numerics.Matrix4x4+Impl.g__SseImpl|56_0(Impl ByRef, Impl ByRef) vmovupd xmm0,[esp+4] vmovaps xmm1,xmm0 vmovshdup xmm2,xmm0 vunpckhps xmm0,xmm0,xmm0 vmulss xmm3,xmm1,dword ptr [esp+54] vmulss xmm4,xmm2,dword ptr [esp+58] vaddss xmm3,xmm3,xmm4 vmulss xmm4,xmm0,dword ptr [esp+5C] vaddss xmm3,xmm3,xmm4 vmovss xmm4,dword ptr [esp] vmulss xmm5,xmm4,dword ptr [esp+60] vaddss xmm3,xmm3,xmm5 vmulss xmm5,xmm1,dword ptr [esp+64] vmulss xmm6,xmm2,dword ptr [esp+68] vaddss xmm5,xmm5,xmm6 vmulss xmm6,xmm0,dword ptr [esp+6C] vaddss xmm5,xmm5,xmm6 vmulss xmm6,xmm4,dword ptr [esp+70] vaddss xmm5,xmm5,xmm6 vmulss xmm6,xmm1,dword ptr [esp+74] vmulss xmm7,xmm2,dword ptr [esp+78] vaddss xmm6,xmm6,xmm7 vmulss xmm7,xmm0,dword ptr [esp+7C] vaddss xmm6,xmm6,xmm7 vmulss xmm7,xmm4,dword ptr [esp+80] vaddss xmm6,xmm6,xmm7 vmulss xmm1,xmm1,dword ptr [esp+84] vmulss xmm2,xmm2,dword ptr [esp+88] vaddss xmm1,xmm1,xmm2 vmulss xmm0,xmm0,dword ptr [esp+8C] vaddss xmm0,xmm1,xmm0 vmulss xmm1,xmm4,dword ptr [esp+90] vaddss xmm0,xmm0,xmm1 vinsertps xmm1,xmm3,xmm5,10 vinsertps xmm1,xmm1,xmm6,28 vmovsd qword ptr [esi],xmm1 vextractps dword ptr [esi+8],xmm1,2 vmovss dword ptr [esi+0C],xmm0 add esp,94 pop esi ret ; Total bytes of code 336 ``` ```assembly ; System.Numerics.Matrix4x4+Impl.g__SseImpl|56_0(Impl ByRef, Impl ByRef) push ebp mov ebp,esp sub esp,0E0 vzeroupper vmovupd xmm0,[ecx] vmovupd xmm1,[ecx+10] vmovupd xmm2,[ecx+20] vmovupd xmm3,[ecx+30] vshufps xmm4,xmm0,xmm1,44 vshufps xmm5,xmm0,xmm1,0EE vshufps xmm1,xmm2,xmm3,44 vshufps xmm3,xmm2,xmm3,0EE vshufps xmm0,xmm4,xmm1,88 vshufps xmm1,xmm4,xmm1,0DD vshufps xmm2,xmm5,xmm3,88 vshufps xmm3,xmm5,xmm3,0DD vpermilps xmm4,xmm2,50 vpermilps xmm5,xmm3,0EE vpermilps xmm6,xmm0,50 vpermilps xmm7,xmm1,0EE vmovupd [ebp-30],xmm2 vshufps xmm2,xmm2,xmm0,88 vmovupd [ebp-20],xmm1 vshufps xmm1,xmm3,xmm1,0DD vmulps xmm4,xmm4,xmm5 vmulps xmm5,xmm6,xmm7 vmovupd [ebp-60],xmm5 vmulps xmm6,xmm2,xmm1 vmovupd [ebp-70],xmm6 vpermilps xmm7,[ebp-30],0EE vpermilps xmm1,xmm3,50 vpermilps xmm2,xmm0,0EE vpermilps xmm6,[ebp-20],50 vmovupd xmm5,[ebp-30] vshufps xmm5,xmm5,xmm0,0DD vmovupd [ebp-40],xmm3 vshufps xmm3,xmm3,[ebp-20],88 vmulps xmm7,xmm7,xmm1 vsubps xmm4,xmm4,xmm7 vmulps xmm6,xmm2,xmm6 vmovupd xmm7,[ebp-60] vsubps xmm7,xmm7,xmm6 vmulps xmm1,xmm5,xmm3 vmovupd xmm6,[ebp-70] vsubps xmm6,xmm6,xmm1 vshufps xmm2,xmm4,xmm6,5D vpermilps xmm5,[ebp-20],49 vshufps xmm3,xmm2,xmm4,32 vmovupd [ebp-10],xmm0 vpermilps xmm1,xmm0,12 vmovupd [ebp-50],xmm4 vshufps xmm2,xmm2,xmm4,99 vmovupd [ebp-60],xmm7 vmovupd [ebp-70],xmm6 vshufps xmm6,xmm7,xmm6,0FD vpermilps xmm7,[ebp-40],49 vshufps xmm4,xmm6,[ebp-60],32 vpermilps xmm0,[ebp-30],12 vmovupd [ebp-80],xmm0 vshufps xmm6,xmm6,[ebp-60],99 vmulps xmm5,xmm5,xmm3 vmovupd [ebp-90],xmm5 vmulps xmm2,xmm1,xmm2 vmovupd [ebp-0A0],xmm2 vmulps xmm3,xmm7,xmm4 vmovupd [ebp-0B0],xmm3 vmovupd xmm4,[ebp-80] vmulps xmm1,xmm4,xmm6 vmovupd [ebp-0C0],xmm1 vmovupd xmm4,[ebp-50] vshufps xmm7,xmm4,[ebp-70],4 vpermilps xmm6,[ebp-20],9E vmovupd [ebp-50],xmm4 vshufps xmm0,xmm4,xmm7,93 vpermilps xmm1,[ebp-10],7B vmovupd xmm3,[ebp-50] vshufps xmm7,xmm3,xmm7,26 vmovupd xmm3,[ebp-60] vshufps xmm3,xmm3,[ebp-70],0A4 vpermilps xmm2,[ebp-40],9E vmovupd xmm4,[ebp-60] vshufps xmm4,xmm4,xmm3,93 vpermilps xmm5,[ebp-30],7B vmovupd [ebp-80],xmm5 vmovupd xmm5,[ebp-60] vshufps xmm3,xmm5,xmm3,26 vmulps xmm6,xmm6,xmm0 vmovupd xmm0,[ebp-90] vsubps xmm0,xmm0,xmm6 vmovupd [ebp-90],xmm0 vmulps xmm1,xmm1,xmm7 vmovupd xmm6,[ebp-0A0] vsubps xmm6,xmm6,xmm1 vmovupd [ebp-0A0],xmm6 vmulps xmm7,xmm2,xmm4 vmovupd xmm1,[ebp-0B0] vsubps xmm1,xmm1,xmm7 vmovupd [ebp-0B0],xmm1 vmovupd xmm4,[ebp-80] vmulps xmm2,xmm4,xmm3 vmovupd xmm7,[ebp-0C0] vsubps xmm7,xmm7,xmm2 vmovupd [ebp-0C0],xmm7 vpermilps xmm4,[ebp-20],33 vmovupd xmm3,[ebp-50] vmovupd xmm2,[ebp-70] vshufps xmm7,xmm3,xmm2,4A vpermilps xmm7,xmm7,2C vmovupd xmm1,[ebp-10] vpermilps xmm6,xmm1,8D vmovupd [ebp-70],xmm2 vshufps xmm3,xmm3,xmm2,4C vpermilps xmm3,xmm3,93 vpermilps xmm2,[ebp-40],33 vmovupd [ebp-60],xmm5 vshufps xmm5,xmm5,[ebp-70],0EA vpermilps xmm5,xmm5,2C vpermilps xmm0,[ebp-30],8D vmovupd [ebp-80],xmm0 vmovupd xmm0,[ebp-60] vshufps xmm0,xmm0,[ebp-70],0EC vpermilps xmm0,xmm0,93 vmulps xmm4,xmm4,xmm7 vmulps xmm6,xmm6,xmm3 vmulps xmm2,xmm2,xmm5 vmovupd xmm3,[ebp-80] vmulps xmm3,xmm3,xmm0 vmovupd xmm0,[ebp-90] vsubps xmm5,xmm0,xmm4 vaddps xmm0,xmm0,xmm4 vmovupd xmm4,[ebp-0A0] vaddps xmm7,xmm4,xmm6 vmovupd [ebp-0D0],xmm7 vsubps xmm4,xmm4,xmm6 vmovupd xmm6,[ebp-0B0] vsubps xmm7,xmm6,xmm2 vmovupd [ebp-0E0],xmm7 vaddps xmm6,xmm6,xmm2 vmovupd xmm2,[ebp-0C0] vaddps xmm7,xmm2,xmm3 vsubps xmm2,xmm2,xmm3 vshufps xmm0,xmm0,xmm5,0D8 vshufps xmm4,xmm4,[ebp-0D0],0D8 vshufps xmm6,xmm6,[ebp-0E0],0D8 vshufps xmm2,xmm2,xmm7,0D8 vpermilps xmm0,xmm0,0D8 vpermilps xmm4,xmm4,0D8 vpermilps xmm6,xmm6,0D8 vpermilps xmm2,xmm2,0D8 vdpps xmm1,xmm0,xmm1,0F1 vandps xmm3,xmm1,ds:[0AF033D0] vmovss xmm5,dword ptr ds:[0AF033E0] vucomiss xmm5,xmm3 jbe short M01_L00 vmovupd xmm1,ds:[0AF033F0] vmovupd [edx],xmm1 vmovupd [edx+10],xmm1 vmovupd [edx+20],xmm1 vmovupd [edx+30],xmm1 xor eax,eax mov esp,ebp pop ebp ret M01_L00: vbroadcastss xmm1,xmm1 vmovupd xmm3,ds:[0AF03400] vdivps xmm1,xmm3,xmm1 vmulps xmm0,xmm0,xmm1 vmovupd [edx],xmm0 vmulps xmm0,xmm4,xmm1 vmovupd [edx+10],xmm0 vmulps xmm0,xmm6,xmm1 vmovupd [edx+20],xmm0 vmulps xmm0,xmm2,xmm1 vmovupd [edx+30],xmm0 mov eax,1 mov esp,ebp pop ebp ret ; Total bytes of code 934 ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<UInt32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementOperatorBenchmark - 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_VectorOf(UInt32).OnesComplementOperatorBenchmark.html>) 9.96 ns 0.35 ns 0.04 0.04 False
[OnesComplementBenchmark - 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_VectorOf(UInt32).OnesComplementBenchmark.html>) 9.96 ns 0.35 ns 0.04 0.02 False

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_VectorOf&lt;UInt32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<UInt32>.OnesComplementOperatorBenchmark ```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.3507457371797655 < 9.443755832953174. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 887.679807607288 (T) = (0 -0.3515842898977028) / Math.Sqrt((0.036041371146393365 / (299)) + (5.725304948656394E-07 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9651862783652724 = (10.09901479613684 - 0.3515842898977028) / 10.09901479613684 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<UInt32>.OnesComplementBenchmark ```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.35077521335686906 < 9.465191927766737. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 932.4747259391111 (T) = (0 -0.3514839553210664) / Math.Sqrt((0.03255845528826881 / (299)) + (6.581040366683921E-07 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9651440597789435 = (10.083904008669782 - 0.3514839553210664) / 10.083904008669782 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<UInt16>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementOperatorBenchmark - 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_VectorOf(UInt16).OnesComplementOperatorBenchmark.html>) 10.33 ns 0.35 ns 0.03 0.03 False
[OnesComplementBenchmark - 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_VectorOf(UInt16).OnesComplementBenchmark.html>) 9.92 ns 0.35 ns 0.04 0.02 False

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_VectorOf&lt;UInt16&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<UInt16>.OnesComplementOperatorBenchmark ```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.35080987741678143 < 9.583316333107721. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 922.9599218836463 (T) = (0 -0.3511027389320587) / Math.Sqrt((0.03319304579379206 / (299)) + (3.563674557791055E-07 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.96515704849817 = (10.076722085774422 - 0.3511027389320587) / 10.076722085774422 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<UInt16>.OnesComplementBenchmark ```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.35074934947958364 < 9.424576254407501. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 815.5768811722587 (T) = (0 -0.3564433693614085) / Math.Sqrt((0.03382186321172792 / (299)) + (0.0004306252537990713 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9646005259771699 = (10.0691713422501 - 0.3564433693614085) / 10.0691713422501 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<Double>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementBenchmark - 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_VectorOf(Double).OnesComplementBenchmark.html>) 9.92 ns 0.35 ns 0.04 0.03 False
[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_VectorOf(Double).EqualsBenchmark.html>) 12.42 ns 0.86 ns 0.07 0.03 False
[OnesComplementOperatorBenchmark - 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_VectorOf(Double).OnesComplementOperatorBenchmark.html>) 9.92 ns 0.35 ns 0.04 0.04 False

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_VectorOf&lt;Double&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Double>.OnesComplementBenchmark ```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.35237371309410753 < 9.424322010400012. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 851.7031296049561 (T) = (0 -0.35556496995652204) / Math.Sqrt((0.03388212919314811 / (299)) + (0.0002549792061110692 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9647197433861195 = (10.078298858422409 - 0.35556496995652204) / 10.078298858422409 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<Double>.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.8623763315746454 < 11.782038466256338. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 43.35315571647286 (T) = (0 -1.180742971073871) / Math.Sqrt((0.02648195663499004 / (299)) + (0.9765345333392831 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9036119431623116 = (12.249888729079478 - 1.180742971073871) / 12.249888729079478 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<Double>.OnesComplementOperatorBenchmark ```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.3524188529933299 < 9.55259211937668. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 911.1586990355379 (T) = (0 -0.35410477675926594) / Math.Sqrt((0.03197846998293849 / (299)) + (0.0001056470725246491 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9648788665545226 = (10.082384650512042 - 0.35410477675926594) / 10.082384650512042 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<SByte>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementOperatorBenchmark - 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_VectorOf(SByte).OnesComplementOperatorBenchmark.html>) 9.96 ns 0.35 ns 0.04 0.02 False
[OnesComplementBenchmark - 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_VectorOf(SByte).OnesComplementBenchmark.html>) 10.32 ns 0.35 ns 0.03 0.02 False

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_VectorOf&lt;SByte&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<SByte>.OnesComplementOperatorBenchmark ```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.3508087402889719 < 9.44541245964505. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 882.3353032557112 (T) = (0 -0.3508362353196619) / Math.Sqrt((0.036375526757090756 / (299)) + (1.984573914343665E-08 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9652048379767302 = (10.08290276346564 - 0.3508362353196619) / 10.08290276346564 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<SByte>.OnesComplementBenchmark ```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.3509026389821494 < 9.593668982249955. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 913.6694858391623 (T) = (0 -0.3508225886047803) / Math.Sqrt((0.0337506181728146 / (299)) + (2.0211047045876308E-09 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9651201754700002 = (10.058037657358085 - 0.3508225886047803) / 10.058037657358085 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<Byte>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementBenchmark - 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_VectorOf(Byte).OnesComplementBenchmark.html>) 10.24 ns 0.37 ns 0.04 0.02 False
[OnesComplementOperatorBenchmark - 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_VectorOf(Byte).OnesComplementOperatorBenchmark.html>) 10.32 ns 0.35 ns 0.03 0.03 False

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_VectorOf&lt;Byte&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Byte>.OnesComplementBenchmark ```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.37067789203743157 < 9.573146990979673. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 926.1610502167287 (T) = (0 -0.3525134621587009) / Math.Sqrt((0.03249230031087746 / (299)) + (2.6598888828815645E-05 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9650482589798476 = (10.085719677181427 - 0.3525134621587009) / 10.085719677181427 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<Byte>.OnesComplementOperatorBenchmark ```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.35077385096933617 < 9.44458687499069. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 880.72862788972 (T) = (0 -0.3509128575498315) / Math.Sqrt((0.036463305229348715 / (299)) + (1.4032106787490865E-07 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9651778613086162 = (10.077291939471216 - 0.3509128575498315) / 10.077291939471216 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<Int64>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementOperatorBenchmark - 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_VectorOf(Int64).OnesComplementOperatorBenchmark.html>) 10.31 ns 0.35 ns 0.03 0.02 False
[OnesComplementBenchmark - 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_VectorOf(Int64).OnesComplementBenchmark.html>) 10.31 ns 0.35 ns 0.03 0.03 False

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_VectorOf&lt;Int64&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Int64>.OnesComplementOperatorBenchmark ```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.35078367207648015 < 9.739216133371215. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 926.9395528289189 (T) = (0 -0.3508751930334693) / Math.Sqrt((0.032919053503703666 / (299)) + (1.7095314326646947E-07 / (14))) is greater than 1.9676211333067681 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (14) - 2, .975) and 0.9651824267276147 = (10.07753154674213 - 0.3508751930334693) / 10.07753154674213 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<Int64>.OnesComplementBenchmark ```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.3508504396309283 < 9.629807447765643. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 883.8916348859942 (T) = (0 -0.35094842176938584) / Math.Sqrt((0.036199475336289665 / (299)) + (1.5729304666801456E-07 / (14))) is greater than 1.9676211333067681 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (14) - 2, .975) and 0.9651731800258434 = (10.076958563251246 - 0.35094842176938584) / 10.076958563251246 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementOperatorBenchmark - 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_VectorOf(Int32).OnesComplementOperatorBenchmark.html>) 10.23 ns 0.35 ns 0.03 0.03 False
[OnesComplementBenchmark - 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_VectorOf(Int32).OnesComplementBenchmark.html>) 10.27 ns 0.35 ns 0.03 0.02 False

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_VectorOf&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Int32>.OnesComplementOperatorBenchmark ```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.3522898236300813 < 9.574216896698506. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 899.6077846604536 (T) = (0 -0.35197860030230327) / Math.Sqrt((0.03479802046883625 / (299)) + (1.2125718368441772E-05 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9651182067054337 = (10.090610804609415 - 0.35197860030230327) / 10.090610804609415 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<Int32>.OnesComplementBenchmark ```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.35215242073850395 < 9.739656237468255. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 935.2208964056497 (T) = (0 -0.35117649819981117) / Math.Sqrt((0.0323904460932364 / (299)) + (3.626016920646332E-07 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9651823626119068 = (10.086166797747874 - 0.35117649819981117) / 10.086166797747874 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
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>) 3.96 ns 1.49 ns 0.38 0.49 False 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>) 4.22 ns 2.08 ns 0.49 0.46 False 27.024730011053993 19.51975425761178 0.7222922948583599 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>) 4.25 ns 1.96 ns 0.46 0.52 False Trace Trace
[LerpBenchmark - 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.LerpBenchmark.html>) 8.62 ns 0.00 ns 0.00 0.05 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 1.4867582669295498 < 3.387310854414431. IsChangePoint: Marked as a change because one of 12/14/2022 12:26:48 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 39.801965320255455 (T) = (0 -1.460034453989969) / Math.Sqrt((0.4307148168072235 / (299)) + (0.0008896643002363312 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.5135601939514236 = (3.001469936948722 - 1.460034453989969) / 3.001469936948722 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() push esi sub esp,48 vzeroupper mov esi,edx mov ecx,ds:[6FB4534] add ecx,4 vmovss xmm0,dword ptr [ecx] vmovss dword ptr [esp+4],xmm0 vmovss xmm1,dword ptr [ecx+4] vmovss dword ptr [esp],xmm1 lea ecx,[esp+8] call dword ptr ds:[0B28B030]; System.Numerics.Matrix4x4.get_Identity() vmovss xmm0,dword ptr [esp+4] vmulss xmm1,xmm0,dword ptr [esp+8] vmovss xmm2,dword ptr [esp] vmulss xmm3,xmm2,dword ptr [esp+18] vaddss xmm1,xmm1,xmm3 vmulss xmm0,xmm0,dword ptr [esp+0C] vmulss xmm2,xmm2,dword ptr [esp+1C] vaddss xmm0,xmm0,xmm2 vinsertps xmm0,xmm1,xmm0,1C vmovsd qword ptr [esi],xmm0 add esp,48 pop esi ret ; Total bytes of code 106 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[6FB122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark() sub esp,40 vzeroupper mov eax,ds:[6B34540] add eax,4 vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+4] vmovupd xmm2,ds:[0ADE2D40] vmovupd [esp],xmm2 vmovupd xmm2,ds:[0ADE2D50] vmovupd [esp+10],xmm2 vmovupd xmm2,ds:[0ADE2D60] vmovupd [esp+20],xmm2 vmovupd xmm2,ds:[0ADE2D70] vmovupd [esp+30],xmm2 vmulss xmm2,xmm0,dword ptr [esp] vmulss xmm3,xmm1,dword ptr [esp+10] vaddss xmm2,xmm2,xmm3 vmulss xmm0,xmm0,dword ptr [esp+4] vmulss xmm1,xmm1,dword ptr [esp+14] vaddss xmm0,xmm0,xmm1 vinsertps xmm0,xmm2,xmm0,1C vmovsd qword ptr [edx],xmm0 add esp,40 ret ; Total bytes of code 123 ``` #### 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 2.079887079580108 < 3.983802613381558. IsChangePoint: Marked as a change because one of 12/13/2022 4:26:35 PM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 23.30648702834629 (T) = (0 -2.171180518962021) / Math.Sqrt((0.4145826303297785 / (299)) + (0.032539548973929466 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.39028427270505633 = (3.5609718131999815 - 2.171180518962021) / 3.5609718131999815 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() push esi sub esp,20 vzeroupper mov esi,edx mov ecx,ds:[6AA4534] add ecx,4 vmovss xmm0,dword ptr [ecx] vmovss dword ptr [esp+4],xmm0 vmovss xmm1,dword ptr [ecx+4] vmovss dword ptr [esp],xmm1 lea ecx,[esp+8] call dword ptr ds:[0ACDB018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [esp+4] vmulss xmm1,xmm0,dword ptr [esp+8] vmovss xmm2,dword ptr [esp] vmulss xmm3,xmm2,dword ptr [esp+10] vaddss xmm1,xmm1,xmm3 vaddss xmm1,xmm1,dword ptr [esp+18] vmulss xmm0,xmm0,dword ptr [esp+0C] vmulss xmm2,xmm2,dword ptr [esp+14] vaddss xmm0,xmm0,xmm2 vaddss xmm0,xmm0,dword ptr [esp+1C] vinsertps xmm0,xmm1,xmm0,1C vmovsd qword ptr [esi],xmm0 add esp,20 pop esi ret ; Total bytes of code 118 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6AA1228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformByMatrix3x2Benchmark() sub esp,28 vzeroupper mov eax,ds:[75B4540] add eax,4 vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+4] vmovsd xmm2,qword ptr ds:[0B8B2D48] vmovsd qword ptr [esp+20],xmm2 vmovsd xmm2,qword ptr [esp+20] vmovsd xmm3,qword ptr ds:[0B8B2D50] vmovsd qword ptr [esp+18],xmm3 vmovsd xmm3,qword ptr [esp+18] vmovsd qword ptr [esp],xmm2 vmovsd qword ptr [esp+8],xmm3 vxorps xmm2,xmm2,xmm2 vmovsd qword ptr [esp+10],xmm2 vmulss xmm2,xmm0,dword ptr [esp] vmulss xmm3,xmm1,dword ptr [esp+8] vaddss xmm2,xmm2,xmm3 vaddss xmm2,xmm2,dword ptr [esp+10] vmulss xmm0,xmm0,dword ptr [esp+4] vmulss xmm1,xmm1,dword ptr [esp+0C] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+14] vinsertps xmm0,xmm2,xmm0,1C vmovsd qword ptr [edx],xmm0 add esp,28 ret ; Total bytes of code 141 ``` #### 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 1.9555326107454787 < 3.947415926013522. IsChangePoint: Marked as a change because one of 12/14/2022 9:46:59 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 30.11769274735202 (T) = (0 -2.0229442461209164) / Math.Sqrt((0.38717836893351565 / (299)) + (0.021063997686519374 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.43613936061637165 = (3.587667066692672 - 2.0229442461209164) / 3.587667066692672 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() push esi sub esp,48 vzeroupper mov esi,edx mov ecx,ds:[6A14534] add ecx,4 vmovss xmm0,dword ptr [ecx] vmovss dword ptr [esp+4],xmm0 vmovss xmm1,dword ptr [ecx+4] vmovss dword ptr [esp],xmm1 lea ecx,[esp+8] call dword ptr ds:[0AD3B030]; System.Numerics.Matrix4x4.get_Identity() vmovss xmm0,dword ptr [esp+4] vmulss xmm1,xmm0,dword ptr [esp+8] vmovss xmm2,dword ptr [esp] vmulss xmm3,xmm2,dword ptr [esp+18] vaddss xmm1,xmm1,xmm3 vaddss xmm1,xmm1,dword ptr [esp+38] vmulss xmm0,xmm0,dword ptr [esp+0C] vmulss xmm2,xmm2,dword ptr [esp+1C] vaddss xmm0,xmm0,xmm2 vaddss xmm0,xmm0,dword ptr [esp+3C] vinsertps xmm0,xmm1,xmm0,1C vmovsd qword ptr [esi],xmm0 add esp,48 pop esi ret ; Total bytes of code 118 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[6A1122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark() sub esp,40 vzeroupper mov eax,ds:[7154540] add eax,4 vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+4] vmovupd xmm2,ds:[0B682D40] vmovupd [esp],xmm2 vmovupd xmm2,ds:[0B682D50] vmovupd [esp+10],xmm2 vmovupd xmm2,ds:[0B682D60] vmovupd [esp+20],xmm2 vmovupd xmm2,ds:[0B682D70] vmovupd [esp+30],xmm2 vmulss xmm2,xmm0,dword ptr [esp] vmulss xmm3,xmm1,dword ptr [esp+10] vaddss xmm2,xmm2,xmm3 vaddss xmm2,xmm2,dword ptr [esp+30] vmulss xmm0,xmm0,dword ptr [esp+4] vmulss xmm1,xmm1,dword ptr [esp+14] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+34] vinsertps xmm0,xmm2,xmm0,1C vmovsd qword ptr [edx],xmm0 add esp,40 ret ; Total bytes of code 135 ``` #### System.Numerics.Tests.Perf_Vector2.LerpBenchmark ```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 < 8.203996577709425. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 145.29719764275578 (T) = (0 -0.08483956730848903) / Math.Sqrt((0.020838734908333514 / (299)) + (0.05137888708057823 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9902197029788751 = (8.674538935294079 - 0.08483956730848903) / 8.674538935294079 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.LerpBenchmark() sub esp,10 vzeroupper mov eax,ds:[73E4534] add eax,4 vmovss xmm0,dword ptr [eax] vmovss dword ptr [esp+8],xmm0 vmovss xmm0,dword ptr [eax+4] vmovss dword ptr [esp+0C],xmm0 mov eax,ds:[73E4538] add eax,4 vmovss xmm0,dword ptr [eax] vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr [eax+4] vmovss dword ptr [esp+4],xmm0 vmovsd xmm0,qword ptr [esp+8] vmovsd xmm1,qword ptr ds:[0B8C2628] vmulps xmm0,xmm0,xmm1 vmovsd xmm1,qword ptr [esp] vmovsd xmm2,qword ptr ds:[0B8C2628] vmulps xmm1,xmm1,xmm2 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 add esp,10 ret ; Total bytes of code 110 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.LerpBenchmark() vzeroupper mov eax,ds:[7354540] vmovsd xmm0,qword ptr [eax+4] mov eax,ds:[7354544] vmovsd xmm1,qword ptr [eax+4] vmovsd xmm2,qword ptr ds:[0B692CE8] vmulps xmm0,xmm0,xmm2 vmulps xmm1,xmm1,xmm2 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 ret ; Total bytes of code 48 ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
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
[CreateFromRotationMatrixBenchmark - 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.CreateFromRotationMatrixBenchmark.html>) 7.07 ns 4.48 ns 0.63 0.33 False 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_Quaternion*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Quaternion.CreateFromRotationMatrixBenchmark ```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 4.479434436993591 < 6.9010000312547515. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 49.83360054435535 (T) = (0 -4.484232488616047) / Math.Sqrt((1.083769640605254 / (299)) + (0.0012462523717551716 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.4035859992223858 = (7.518657313157357 - 4.484232488616047) / 7.518657313157357 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.CreateFromRotationMatrixBenchmark() push ebp mov ebp,esp push esi sub esp,40 vzeroupper mov esi,edx lea ecx,[ebp-44] call dword ptr ds:[0AD39030]; System.Numerics.Matrix4x4.get_Identity() sub esp,40 vmovdqu xmm0,xmmword ptr [ebp-44] vmovdqu xmmword ptr [esp],xmm0 vmovdqu xmm0,xmmword ptr [ebp-34] vmovdqu xmmword ptr [esp+10],xmm0 vmovdqu xmm0,xmmword ptr [ebp-24] vmovdqu xmmword ptr [esp+20],xmm0 vmovdqu xmm0,xmmword ptr [ebp-14] vmovdqu xmmword ptr [esp+30],xmm0 mov ecx,esi call dword ptr ds:[0A7E1228]; System.Numerics.Quaternion.CreateFromRotationMatrix(System.Numerics.Matrix4x4) lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 81 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[6A1122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ```assembly ; System.Numerics.Quaternion.CreateFromRotationMatrix(System.Numerics.Matrix4x4) push ebp mov ebp,esp vzeroupper vmovss xmm0,dword ptr [ebp+8] vmovss xmm1,dword ptr [ebp+1C] vaddss xmm2,xmm0,xmm1 vmovss xmm3,dword ptr [ebp+30] vaddss xmm2,xmm2,xmm3 vxorps xmm4,xmm4,xmm4 vucomiss xmm2,xmm4 jbe short M02_L00 vaddss xmm0,xmm2,dword ptr ds:[0AD22570] vsqrtss xmm0,xmm0,xmm0 vmovss xmm2,dword ptr ds:[0AD22574] vmulss xmm4,xmm0,xmm2 vdivss xmm0,xmm2,xmm0 vmovss xmm1,dword ptr [ebp+20] vsubss xmm3,xmm1,dword ptr [ebp+2C] vmulss xmm1,xmm3,xmm0 vmovss xmm2,dword ptr [ebp+28] vsubss xmm2,xmm2,dword ptr [ebp+10] vmulss xmm2,xmm2,xmm0 vmovss xmm3,dword ptr [ebp+0C] vsubss xmm3,xmm3,dword ptr [ebp+18] vmulss xmm0,xmm3,xmm0 jmp near ptr M02_L03 M02_L00: vucomiss xmm0,xmm1 jb short M02_L01 vucomiss xmm0,xmm3 jb short M02_L01 vaddss xmm2,xmm0,dword ptr ds:[0AD22570] vsubss xmm4,xmm2,xmm1 vsubss xmm1,xmm4,xmm3 vsqrtss xmm1,xmm1,xmm1 vmovss xmm2,dword ptr ds:[0AD22574] vdivss xmm3,xmm2,xmm1 vmulss xmm1,xmm1,xmm2 vmovss xmm0,dword ptr [ebp+0C] vaddss xmm2,xmm0,dword ptr [ebp+18] vmulss xmm2,xmm2,xmm3 vmovss xmm0,dword ptr [ebp+10] vaddss xmm0,xmm0,dword ptr [ebp+28] vmulss xmm0,xmm0,xmm3 vmovss xmm4,dword ptr [ebp+20] vsubss xmm4,xmm4,dword ptr [ebp+2C] vmulss xmm4,xmm4,xmm3 jmp near ptr M02_L03 M02_L01: vucomiss xmm1,xmm3 jbe short M02_L02 vaddss xmm2,xmm1,dword ptr ds:[0AD22570] vsubss xmm4,xmm2,xmm0 vsubss xmm3,xmm4,xmm3 vsqrtss xmm3,xmm3,xmm3 vmovss xmm2,dword ptr ds:[0AD22574] vdivss xmm0,xmm2,xmm3 vmovss xmm1,dword ptr [ebp+18] vaddss xmm1,xmm1,dword ptr [ebp+0C] vmulss xmm1,xmm1,xmm0 vmulss xmm2,xmm3,xmm2 vmovss xmm3,dword ptr [ebp+2C] vaddss xmm3,xmm3,dword ptr [ebp+20] vmulss xmm3,xmm3,xmm0 vmovss xmm4,dword ptr [ebp+28] vsubss xmm4,xmm4,dword ptr [ebp+10] vmulss xmm4,xmm4,xmm0 vmovaps xmm0,xmm3 jmp short M02_L03 M02_L02: vaddss xmm2,xmm3,dword ptr ds:[0AD22570] vsubss xmm4,xmm2,xmm0 vsubss xmm0,xmm4,xmm1 vsqrtss xmm0,xmm0,xmm0 vmovss xmm2,dword ptr ds:[0AD22574] vdivss xmm1,xmm2,xmm0 vmovss xmm3,dword ptr [ebp+28] vaddss xmm3,xmm3,dword ptr [ebp+10] vmulss xmm3,xmm3,xmm1 vmovss xmm4,dword ptr [ebp+2C] vaddss xmm4,xmm4,dword ptr [ebp+20] vmulss xmm4,xmm4,xmm1 vmulss xmm0,xmm0,xmm2 vmovss xmm2,dword ptr [ebp+0C] vsubss xmm2,xmm2,dword ptr [ebp+18] vmulss xmm1,xmm2,xmm1 vmovaps xmm2,xmm4 vmovaps xmm4,xmm1 vmovaps xmm1,xmm3 M02_L03: vmovss dword ptr [ecx],xmm1 vmovss dword ptr [ecx+4],xmm2 vmovss dword ptr [ecx+8],xmm0 vmovss dword ptr [ecx+0C],xmm4 pop ebp ret 40 ; Total bytes of code 412 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.CreateFromRotationMatrixBenchmark() push ebp mov ebp,esp vzeroupper vmovupd xmm0,ds:[0BAD2A90] vmovupd xmm1,ds:[0BAD2AA0] vmovupd xmm2,ds:[0BAD2AB0] vmovupd xmm3,ds:[0BAD2AC0] sub esp,10 vmovupd [esp],xmm3 sub esp,10 vmovupd [esp],xmm2 sub esp,10 vmovupd [esp],xmm1 sub esp,10 vmovupd [esp],xmm0 mov ecx,edx call dword ptr ds:[0B545228]; System.Numerics.Quaternion.CreateFromRotationMatrix(System.Numerics.Matrix4x4) pop ebp ret ; Total bytes of code 80 ``` ```assembly ; System.Numerics.Quaternion.CreateFromRotationMatrix(System.Numerics.Matrix4x4) push ebp mov ebp,esp vzeroupper vmovss xmm0,dword ptr [ebp+8] vmovss xmm1,dword ptr [ebp+1C] vaddss xmm2,xmm0,xmm1 vmovss xmm3,dword ptr [ebp+30] vaddss xmm2,xmm2,xmm3 vxorps xmm4,xmm4,xmm4 vucomiss xmm2,xmm4 jbe short M01_L00 vaddss xmm0,xmm2,dword ptr ds:[0BAD2D20] vsqrtss xmm0,xmm0,xmm0 vmovss xmm2,dword ptr ds:[0BAD2D24] vmulss xmm4,xmm0,xmm2 vdivss xmm0,xmm2,xmm0 vmovss xmm1,dword ptr [ebp+20] vsubss xmm3,xmm1,dword ptr [ebp+2C] vmulss xmm1,xmm3,xmm0 vmovss xmm2,dword ptr [ebp+28] vsubss xmm2,xmm2,dword ptr [ebp+10] vmulss xmm2,xmm2,xmm0 vmovss xmm3,dword ptr [ebp+0C] vsubss xmm3,xmm3,dword ptr [ebp+18] vmulss xmm0,xmm3,xmm0 jmp near ptr M01_L03 M01_L00: vucomiss xmm0,xmm1 jb short M01_L01 vucomiss xmm0,xmm3 jb short M01_L01 vaddss xmm2,xmm0,dword ptr ds:[0BAD2D20] vsubss xmm4,xmm2,xmm1 vsubss xmm1,xmm4,xmm3 vsqrtss xmm1,xmm1,xmm1 vmovss xmm2,dword ptr ds:[0BAD2D24] vdivss xmm3,xmm2,xmm1 vmulss xmm1,xmm1,xmm2 vmovss xmm0,dword ptr [ebp+0C] vaddss xmm2,xmm0,dword ptr [ebp+18] vmulss xmm2,xmm2,xmm3 vmovss xmm0,dword ptr [ebp+10] vaddss xmm0,xmm0,dword ptr [ebp+28] vmulss xmm0,xmm0,xmm3 vmovss xmm4,dword ptr [ebp+20] vsubss xmm4,xmm4,dword ptr [ebp+2C] vmulss xmm4,xmm4,xmm3 jmp near ptr M01_L03 M01_L01: vucomiss xmm1,xmm3 jbe short M01_L02 vaddss xmm2,xmm1,dword ptr ds:[0BAD2D20] vsubss xmm4,xmm2,xmm0 vsubss xmm3,xmm4,xmm3 vsqrtss xmm3,xmm3,xmm3 vmovss xmm2,dword ptr ds:[0BAD2D24] vdivss xmm0,xmm2,xmm3 vmovss xmm1,dword ptr [ebp+18] vaddss xmm1,xmm1,dword ptr [ebp+0C] vmulss xmm1,xmm1,xmm0 vmulss xmm2,xmm3,xmm2 vmovss xmm3,dword ptr [ebp+2C] vaddss xmm3,xmm3,dword ptr [ebp+20] vmulss xmm3,xmm3,xmm0 vmovss xmm4,dword ptr [ebp+28] vsubss xmm4,xmm4,dword ptr [ebp+10] vmulss xmm4,xmm4,xmm0 vmovaps xmm0,xmm3 jmp short M01_L03 M01_L02: vaddss xmm2,xmm3,dword ptr ds:[0BAD2D20] vsubss xmm4,xmm2,xmm0 vsubss xmm0,xmm4,xmm1 vsqrtss xmm0,xmm0,xmm0 vmovss xmm2,dword ptr ds:[0BAD2D24] vdivss xmm1,xmm2,xmm0 vmovss xmm3,dword ptr [ebp+28] vaddss xmm3,xmm3,dword ptr [ebp+10] vmulss xmm3,xmm3,xmm1 vmovss xmm4,dword ptr [ebp+2C] vaddss xmm4,xmm4,dword ptr [ebp+20] vmulss xmm4,xmm4,xmm1 vmulss xmm0,xmm0,xmm2 vmovss xmm2,dword ptr [ebp+0C] vsubss xmm2,xmm2,dword ptr [ebp+18] vmulss xmm1,xmm2,xmm1 vmovaps xmm2,xmm4 vmovaps xmm4,xmm1 vmovaps xmm1,xmm3 M01_L03: vmovss dword ptr [ecx],xmm1 vmovss dword ptr [ecx+4],xmm2 vmovss dword ptr [ecx+8],xmm0 vmovss dword ptr [ecx+0C],xmm4 pop ebp ret 40 ; Total bytes of code 412 ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<UInt64>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementOperatorBenchmark - 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_VectorOf(UInt64).OnesComplementOperatorBenchmark.html>) 9.92 ns 0.35 ns 0.04 0.03 False
[OnesComplementBenchmark - 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_VectorOf(UInt64).OnesComplementBenchmark.html>) 10.24 ns 0.35 ns 0.03 0.03 False

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_VectorOf&lt;UInt64&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<UInt64>.OnesComplementOperatorBenchmark ```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.3507399557239749 < 9.575617060937406. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 920.0173908660852 (T) = (0 -0.35117864376899377) / Math.Sqrt((0.03339873157828558 / (299)) + (4.2822414674039754E-07 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9651469631260247 = (10.075984053809059 - 0.35117864376899377) / 10.075984053809059 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<UInt64>.OnesComplementBenchmark ```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.35089293388546516 < 9.575439762366294. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 856.1797838712109 (T) = (0 -0.3553441896405481) / Math.Sqrt((0.033550073615695584 / (299)) + (0.0002562916130064708 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9647851253243286 = (10.090741282292303 - 0.3553441896405481) / 10.090741282292303 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
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
[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>) 6.97 ns 3.76 ns 0.54 0.39 False 45.85262852021416 35.99691918498825 0.7850568298198867 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.02 ns 3.88 ns 0.65 0.38 False Trace Trace
[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>) 6.29 ns 3.17 ns 0.50 0.48 False 34.9090452379097 27.03950849362845 0.7745702670855267 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.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 3.7567453505965944 < 6.619191632182774. IsChangePoint: Marked as a change because one of 12/13/2022 9:04:56 PM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 46.52399601651949 (T) = (0 -3.7850568712262826) / Math.Sqrt((0.7695073038891818 / (299)) + (0.008656028933087699 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.4082601486274063 = (6.396488021630626 - 3.7850568712262826) / 6.396488021630626 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() push esi sub esp,4C vzeroupper mov esi,edx mov ecx,ds:[69E4540] add ecx,4 vmovss xmm0,dword ptr [ecx] vmovss dword ptr [esp+8],xmm0 vmovss xmm1,dword ptr [ecx+4] vmovss dword ptr [esp+4],xmm1 vmovss xmm2,dword ptr [ecx+8] vmovss dword ptr [esp],xmm2 lea ecx,[esp+0C] call dword ptr ds:[0AD2B030]; System.Numerics.Matrix4x4.get_Identity() vmovss xmm0,dword ptr [esp+8] vmulss xmm1,xmm0,dword ptr [esp+0C] vmovss xmm2,dword ptr [esp+4] vmulss xmm3,xmm2,dword ptr [esp+1C] vaddss xmm1,xmm1,xmm3 vmovss xmm3,dword ptr [esp] vmulss xmm4,xmm3,dword ptr [esp+2C] vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [esp+3C] vmulss xmm4,xmm0,dword ptr [esp+10] vmulss xmm5,xmm2,dword ptr [esp+20] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm3,dword ptr [esp+30] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+40] vinsertps xmm1,xmm1,xmm4,10 vmulss xmm4,xmm0,dword ptr [esp+14] vmulss xmm5,xmm2,dword ptr [esp+24] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm3,dword ptr [esp+34] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+44] vinsertps xmm1,xmm1,xmm4,20 vmulss xmm0,xmm0,dword ptr [esp+18] vmulss xmm2,xmm2,dword ptr [esp+28] vaddss xmm0,xmm0,xmm2 vmulss xmm2,xmm3,dword ptr [esp+38] vaddss xmm0,xmm0,xmm2 vaddss xmm0,xmm0,dword ptr [esp+48] vinsertps xmm0,xmm1,xmm0,30 vmovupd [esi],xmm0 add esp,4C pop esi ret ; Total bytes of code 231 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[69E122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark() sub esp,40 vzeroupper mov eax,ds:[743454C] add eax,4 vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+4] vmovss xmm2,dword ptr [eax+8] vmovupd xmm3,ds:[0B872DF0] vmovupd [esp],xmm3 vmovupd xmm3,ds:[0B872E00] vmovupd [esp+10],xmm3 vmovupd xmm3,ds:[0B872E10] vmovupd [esp+20],xmm3 vmovupd xmm3,ds:[0B872E20] vmovupd [esp+30],xmm3 vmulss xmm3,xmm0,dword ptr [esp] vmulss xmm4,xmm1,dword ptr [esp+10] vaddss xmm3,xmm3,xmm4 vmulss xmm4,xmm2,dword ptr [esp+20] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [esp+30] vmulss xmm4,xmm0,dword ptr [esp+4] vmulss xmm5,xmm1,dword ptr [esp+14] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm2,dword ptr [esp+24] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+34] vinsertps xmm3,xmm3,xmm4,10 vmulss xmm4,xmm0,dword ptr [esp+8] vmulss xmm5,xmm1,dword ptr [esp+18] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm2,dword ptr [esp+28] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+38] vinsertps xmm3,xmm3,xmm4,20 vmulss xmm0,xmm0,dword ptr [esp+0C] vmulss xmm1,xmm1,dword ptr [esp+1C] vaddss xmm0,xmm0,xmm1 vmulss xmm1,xmm2,dword ptr [esp+2C] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+3C] vinsertps xmm0,xmm3,xmm0,30 vmovupd [edx],xmm0 add esp,40 ret ; Total bytes of code 236 ``` #### 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 3.884191594124204 < 6.091153088006691. IsChangePoint: Marked as a change because one of 12/14/2022 12:26:48 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 44.602481839820484 (T) = (0 -3.856224476573478) / Math.Sqrt((0.9418812897344936 / (299)) + (0.005245857040211065 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.40626685423851633 = (6.494878219452839 - 3.856224476573478) / 6.494878219452839 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() push esi sub esp,4C vzeroupper mov esi,edx mov ecx,ds:[6E84540] add ecx,4 vmovss xmm0,dword ptr [ecx] vmovss dword ptr [esp+8],xmm0 vmovss xmm1,dword ptr [ecx+4] vmovss dword ptr [esp+4],xmm1 vmovss xmm2,dword ptr [ecx+8] vmovss dword ptr [esp],xmm2 lea ecx,[esp+0C] call dword ptr ds:[0B10B030]; System.Numerics.Matrix4x4.get_Identity() vmovss xmm0,dword ptr [esp+8] vmulss xmm1,xmm0,dword ptr [esp+0C] vmovss xmm2,dword ptr [esp+4] vmulss xmm3,xmm2,dword ptr [esp+1C] vaddss xmm1,xmm1,xmm3 vmovss xmm3,dword ptr [esp] vmulss xmm4,xmm3,dword ptr [esp+2C] vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [esp+3C] vmulss xmm4,xmm0,dword ptr [esp+10] vmulss xmm5,xmm2,dword ptr [esp+20] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm3,dword ptr [esp+30] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+40] vinsertps xmm1,xmm1,xmm4,10 vmulss xmm4,xmm0,dword ptr [esp+14] vmulss xmm5,xmm2,dword ptr [esp+24] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm3,dword ptr [esp+34] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+44] vinsertps xmm1,xmm1,xmm4,20 vmulss xmm0,xmm0,dword ptr [esp+18] vmulss xmm2,xmm2,dword ptr [esp+28] vaddss xmm0,xmm0,xmm2 vmulss xmm2,xmm3,dword ptr [esp+38] vaddss xmm0,xmm0,xmm2 vaddss xmm0,xmm0,dword ptr [esp+48] vinsertps xmm0,xmm1,xmm0,30 vmovupd [esi],xmm0 add esp,4C pop esi ret ; Total bytes of code 231 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[6E8122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark() sub esp,40 vzeroupper mov eax,ds:[6A2454C] add eax,4 vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+4] vmovss xmm2,dword ptr [eax+8] vmovupd xmm3,ds:[0AE82DF0] vmovupd [esp],xmm3 vmovupd xmm3,ds:[0AE82E00] vmovupd [esp+10],xmm3 vmovupd xmm3,ds:[0AE82E10] vmovupd [esp+20],xmm3 vmovupd xmm3,ds:[0AE82E20] vmovupd [esp+30],xmm3 vmulss xmm3,xmm0,dword ptr [esp] vmulss xmm4,xmm1,dword ptr [esp+10] vaddss xmm3,xmm3,xmm4 vmulss xmm4,xmm2,dword ptr [esp+20] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [esp+30] vmulss xmm4,xmm0,dword ptr [esp+4] vmulss xmm5,xmm1,dword ptr [esp+14] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm2,dword ptr [esp+24] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+34] vinsertps xmm3,xmm3,xmm4,10 vmulss xmm4,xmm0,dword ptr [esp+8] vmulss xmm5,xmm1,dword ptr [esp+18] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm2,dword ptr [esp+28] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+38] vinsertps xmm3,xmm3,xmm4,20 vmulss xmm0,xmm0,dword ptr [esp+0C] vmulss xmm1,xmm1,dword ptr [esp+1C] vaddss xmm0,xmm0,xmm1 vmulss xmm1,xmm2,dword ptr [esp+2C] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+3C] vinsertps xmm0,xmm3,xmm0,30 vmovupd [edx],xmm0 add esp,40 ret ; Total bytes of code 236 ``` #### 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 3.169681656800845 < 5.768320527318419. IsChangePoint: Marked as a change because one of 12/15/2022 5:36:17 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 31.684538948973263 (T) = (0 -3.0770008797438897) / Math.Sqrt((0.6054566620773919 / (299)) + (0.05412429981017784 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.4359382539655125 = (5.455078103374444 - 3.0770008797438897) / 5.455078103374444 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() push esi sub esp,48 vzeroupper mov esi,edx mov ecx,ds:[7924534] add ecx,4 vmovss xmm0,dword ptr [ecx] vmovss dword ptr [esp+4],xmm0 vmovss xmm1,dword ptr [ecx+4] vmovss dword ptr [esp],xmm1 lea ecx,[esp+8] call dword ptr ds:[0BC2B030]; System.Numerics.Matrix4x4.get_Identity() vmovss xmm0,dword ptr [esp+4] vmulss xmm1,xmm0,dword ptr [esp+8] vmovss xmm2,dword ptr [esp] vmulss xmm3,xmm2,dword ptr [esp+18] vaddss xmm1,xmm1,xmm3 vaddss xmm1,xmm1,dword ptr [esp+38] vmulss xmm3,xmm0,dword ptr [esp+0C] vmulss xmm4,xmm2,dword ptr [esp+1C] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [esp+3C] vinsertps xmm1,xmm1,xmm3,10 vmulss xmm3,xmm0,dword ptr [esp+10] vmulss xmm4,xmm2,dword ptr [esp+20] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [esp+40] vinsertps xmm1,xmm1,xmm3,20 vmulss xmm0,xmm0,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+24] vaddss xmm0,xmm0,xmm2 vaddss xmm0,xmm0,dword ptr [esp+44] vinsertps xmm0,xmm1,xmm0,30 vmovupd [esi],xmm0 add esp,48 pop esi ret ; Total bytes of code 174 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[792122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector2ByMatrix4x4Benchmark() sub esp,40 vzeroupper mov eax,ds:[6CC4540] add eax,4 vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+4] vmovupd xmm2,ds:[0AF22DA0] vmovupd [esp],xmm2 vmovupd xmm2,ds:[0AF22DB0] vmovupd [esp+10],xmm2 vmovupd xmm2,ds:[0AF22DC0] vmovupd [esp+20],xmm2 vmovupd xmm2,ds:[0AF22DD0] vmovupd [esp+30],xmm2 vmulss xmm2,xmm0,dword ptr [esp] vmulss xmm3,xmm1,dword ptr [esp+10] vaddss xmm2,xmm2,xmm3 vaddss xmm2,xmm2,dword ptr [esp+30] vmulss xmm3,xmm0,dword ptr [esp+4] vmulss xmm4,xmm1,dword ptr [esp+14] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [esp+34] vinsertps xmm2,xmm2,xmm3,10 vmulss xmm3,xmm0,dword ptr [esp+8] vmulss xmm4,xmm1,dword ptr [esp+18] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [esp+38] vinsertps xmm2,xmm2,xmm3,20 vmulss xmm0,xmm0,dword ptr [esp+0C] vmulss xmm1,xmm1,dword ptr [esp+1C] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+3C] vinsertps xmm0,xmm2,xmm0,30 vmovupd [edx],xmm0 add esp,40 ret ; Total bytes of code 191 ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
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
[LerpBenchmark - 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.LerpBenchmark.html>) 9.29 ns 0.49 ns 0.05 0.06 False 20.373438409528497 5.3934391197025455 0.2647289579347626 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_Vector3.NormalizeBenchmark.html>) 1.57 ns 0.54 ns 0.35 0.43 False 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>) 5.41 ns 2.75 ns 0.51 0.46 False 38.56586307464681 27.063299427040604 0.7017423511217102 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_Vector3.TransformByMatrix4x4Benchmark.html>) 5.27 ns 3.35 ns 0.64 0.47 False 40.90918043925452 30.03976660947363 0.7343037989743957 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_Vector3*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Vector3.LerpBenchmark ```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.4929472781659926 < 8.820831254493047. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 165.3945733624701 (T) = (0 -0.3808702869373294) / Math.Sqrt((0.02470426462828387 / (299)) + (0.04255641082595922 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9591247380126774 = (9.317867786522202 - 0.3808702869373294) / 9.317867786522202 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.LerpBenchmark() sub esp,20 vzeroupper mov eax,ds:[6EA4540] add eax,4 vmovss xmm0,dword ptr [eax] vmovss dword ptr [esp+10],xmm0 vmovss xmm0,dword ptr [eax+4] vmovss dword ptr [esp+14],xmm0 vmovss xmm0,dword ptr [eax+8] vmovss dword ptr [esp+18],xmm0 mov eax,ds:[6EA4544] add eax,4 vmovss xmm0,dword ptr [eax] vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr [eax+4] vmovss dword ptr [esp+4],xmm0 vmovss xmm0,dword ptr [eax+8] vmovss dword ptr [esp+8],xmm0 vmovupd xmm0,[esp+10] vmovupd xmm1,ds:[0B2726B0] vmulps xmm0,xmm0,xmm1 vmovupd xmm1,[esp] vmovupd xmm2,ds:[0B2726B0] vmulps xmm1,xmm1,xmm2 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 vpshufd xmm1,xmm0,2 vmovss dword ptr [edx+8],xmm1 add esp,20 ret ; Total bytes of code 142 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.LerpBenchmark() vzeroupper mov eax,ds:[747454C] vmovsd xmm0,qword ptr [eax+4] vinsertps xmm0,xmm0,dword ptr [eax+0C],28 mov eax,ds:[7474550] vmovsd xmm1,qword ptr [eax+4] vinsertps xmm1,xmm1,dword ptr [eax+0C],28 vmovupd xmm2,ds:[0B7F2D40] vmulps xmm0,xmm0,xmm2 vmulps xmm1,xmm1,xmm2 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 vextractps dword ptr [edx+8],xmm0,2 ret ; Total bytes of code 69 ``` #### System.Numerics.Tests.Perf_Vector3.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.5422257150638571 < 1.1404906992320492. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 60.42583852619734 (T) = (0 -0.5403835495249059) / Math.Sqrt((0.03034872448593293 / (299)) + (0.0005383399839266439 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.5672278603571554 = (1.2486560478936333 - 0.5403835495249059) / 1.2486560478936333 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.NormalizeBenchmark() vzeroupper mov eax,ds:[73C4540] lea eax,[eax+4] vmovss xmm0,dword ptr [eax+8] vmovsd xmm1,qword ptr [eax] vshufps xmm1,xmm1,xmm0,44 vdpps xmm0,xmm1,xmm1,71 vsqrtss xmm0,xmm0,xmm0 vbroadcastss xmm0,xmm0 vdivps xmm0,xmm1,xmm0 vpslldq xmm0,xmm0,4 vpsrldq xmm0,xmm0,4 vmovsd qword ptr [edx],xmm0 vpshufd xmm1,xmm0,2 vmovss dword ptr [edx+8],xmm1 ret ; Total bytes of code 69 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.NormalizeBenchmark() vzeroupper mov eax,ds:[6EB454C] vmovsd xmm0,qword ptr [eax+4] vinsertps xmm0,xmm0,dword ptr [eax+0C],28 vdpps xmm1,xmm0,xmm0,71 vsqrtss xmm1,xmm1,xmm1 vbroadcastss xmm1,xmm1 vdivps xmm0,xmm0,xmm1 vmovsd qword ptr [edx],xmm0 vextractps dword ptr [edx+8],xmm0,2 ret ; Total bytes of code 51 ``` #### 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 2.7514125226108512 < 4.4777477205820855. IsChangePoint: Marked as a change because one of 12/12/2022 5:25:39 PM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 57.52825054773103 (T) = (0 -2.7492015649986503) / Math.Sqrt((0.4367751239040865 / (299)) + (0.003369335580462273 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.46209586845873185 = (5.110950825235911 - 2.7492015649986503) / 5.110950825235911 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() push esi sub esp,4C vzeroupper mov esi,edx mov ecx,ds:[7434540] add ecx,4 vmovss xmm0,dword ptr [ecx] vmovss dword ptr [esp+8],xmm0 vmovss xmm1,dword ptr [ecx+4] vmovss dword ptr [esp+4],xmm1 vmovss xmm2,dword ptr [ecx+8] vmovss dword ptr [esp],xmm2 lea ecx,[esp+0C] call dword ptr ds:[0B77B030]; System.Numerics.Matrix4x4.get_Identity() vmovss xmm0,dword ptr [esp+8] vmulss xmm1,xmm0,dword ptr [esp+0C] vmovss xmm2,dword ptr [esp+4] vmulss xmm3,xmm2,dword ptr [esp+1C] vaddss xmm1,xmm1,xmm3 vmovss xmm3,dword ptr [esp] vmulss xmm4,xmm3,dword ptr [esp+2C] vaddss xmm1,xmm1,xmm4 vmulss xmm4,xmm0,dword ptr [esp+10] vmulss xmm5,xmm2,dword ptr [esp+20] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm3,dword ptr [esp+30] vaddss xmm4,xmm4,xmm5 vinsertps xmm1,xmm1,xmm4,10 vmulss xmm0,xmm0,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+24] vaddss xmm0,xmm0,xmm2 vmulss xmm2,xmm3,dword ptr [esp+34] vaddss xmm0,xmm0,xmm2 vinsertps xmm0,xmm1,xmm0,28 vmovsd qword ptr [esi],xmm0 vpshufd xmm1,xmm0,2 vmovss dword ptr [esi+8],xmm1 add esp,4C pop esi ret ; Total bytes of code 185 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[743122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark() sub esp,40 vzeroupper mov eax,ds:[766454C] add eax,4 vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+4] vmovss xmm2,dword ptr [eax+8] vmovupd xmm3,ds:[0B8A2DC0] vmovupd [esp],xmm3 vmovupd xmm3,ds:[0B8A2DD0] vmovupd [esp+10],xmm3 vmovupd xmm3,ds:[0B8A2DE0] vmovupd [esp+20],xmm3 vmovupd xmm3,ds:[0B8A2DF0] vmovupd [esp+30],xmm3 vmulss xmm3,xmm0,dword ptr [esp] vmulss xmm4,xmm1,dword ptr [esp+10] vaddss xmm3,xmm3,xmm4 vmulss xmm4,xmm2,dword ptr [esp+20] vaddss xmm3,xmm3,xmm4 vmulss xmm4,xmm0,dword ptr [esp+4] vmulss xmm5,xmm1,dword ptr [esp+14] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm2,dword ptr [esp+24] vaddss xmm4,xmm4,xmm5 vinsertps xmm3,xmm3,xmm4,10 vmulss xmm0,xmm0,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+18] vaddss xmm0,xmm0,xmm1 vmulss xmm1,xmm2,dword ptr [esp+28] vaddss xmm0,xmm0,xmm1 vinsertps xmm0,xmm3,xmm0,28 vmovsd qword ptr [edx],xmm0 vextractps dword ptr [edx+8],xmm0,2 add esp,40 ret ; Total bytes of code 187 ``` #### 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 3.3520010631917168 < 5.367820343148367. IsChangePoint: Marked as a change because one of 12/12/2022 10:47:19 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 41.97988292349693 (T) = (0 -3.3680497568409757) / Math.Sqrt((0.6248861325719006 / (299)) + (0.009327988200906275 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.39359699861827596 = (5.554144272318378 - 3.3680497568409757) / 5.554144272318378 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() push esi sub esp,4C vzeroupper mov esi,edx mov ecx,ds:[6F14540] add ecx,4 vmovss xmm0,dword ptr [ecx] vmovss dword ptr [esp+8],xmm0 vmovss xmm1,dword ptr [ecx+4] vmovss dword ptr [esp+4],xmm1 vmovss xmm2,dword ptr [ecx+8] vmovss dword ptr [esp],xmm2 lea ecx,[esp+0C] call dword ptr ds:[0B27B030]; System.Numerics.Matrix4x4.get_Identity() vmovss xmm0,dword ptr [esp+8] vmulss xmm1,xmm0,dword ptr [esp+0C] vmovss xmm2,dword ptr [esp+4] vmulss xmm3,xmm2,dword ptr [esp+1C] vaddss xmm1,xmm1,xmm3 vmovss xmm3,dword ptr [esp] vmulss xmm4,xmm3,dword ptr [esp+2C] vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [esp+3C] vmulss xmm4,xmm0,dword ptr [esp+10] vmulss xmm5,xmm2,dword ptr [esp+20] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm3,dword ptr [esp+30] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+40] vinsertps xmm1,xmm1,xmm4,10 vmulss xmm0,xmm0,dword ptr [esp+14] vmulss xmm2,xmm2,dword ptr [esp+24] vaddss xmm0,xmm0,xmm2 vmulss xmm2,xmm3,dword ptr [esp+34] vaddss xmm0,xmm0,xmm2 vaddss xmm0,xmm0,dword ptr [esp+44] vinsertps xmm0,xmm1,xmm0,28 vmovsd qword ptr [esi],xmm0 vpshufd xmm1,xmm0,2 vmovss dword ptr [esi+8],xmm1 add esp,4C pop esi ret ; Total bytes of code 203 ``` ```assembly ; System.Numerics.Matrix4x4.get_Identity() vzeroupper mov eax,ds:[6F1122C] vmovdqu ymm0,ymmword ptr [eax+4] vmovdqu ymmword ptr [ecx],ymm0 vmovdqu ymm0,ymmword ptr [eax+24] vmovdqu ymmword ptr [ecx+20],ymm0 ret ; Total bytes of code 28 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark() sub esp,40 vzeroupper mov eax,ds:[71E454C] add eax,4 vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+4] vmovss xmm2,dword ptr [eax+8] vmovupd xmm3,ds:[0B5D2DD0] vmovupd [esp],xmm3 vmovupd xmm3,ds:[0B5D2DE0] vmovupd [esp+10],xmm3 vmovupd xmm3,ds:[0B5D2DF0] vmovupd [esp+20],xmm3 vmovupd xmm3,ds:[0B5D2E00] vmovupd [esp+30],xmm3 vmulss xmm3,xmm0,dword ptr [esp] vmulss xmm4,xmm1,dword ptr [esp+10] vaddss xmm3,xmm3,xmm4 vmulss xmm4,xmm2,dword ptr [esp+20] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [esp+30] vmulss xmm4,xmm0,dword ptr [esp+4] vmulss xmm5,xmm1,dword ptr [esp+14] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm2,dword ptr [esp+24] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [esp+34] vinsertps xmm3,xmm3,xmm4,10 vmulss xmm0,xmm0,dword ptr [esp+8] vmulss xmm1,xmm1,dword ptr [esp+18] vaddss xmm0,xmm0,xmm1 vmulss xmm1,xmm2,dword ptr [esp+28] vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [esp+38] vinsertps xmm0,xmm3,xmm0,28 vmovsd qword ptr [edx],xmm0 vextractps dword ptr [edx+8],xmm0,2 add esp,40 ret ; Total bytes of code 205 ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_VectorOf<Single>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[OnesComplementBenchmark - 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_VectorOf(Single).OnesComplementBenchmark.html>) 9.92 ns 0.35 ns 0.04 0.03 False
[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_VectorOf(Single).EqualsBenchmark.html>) 12.11 ns 0.86 ns 0.07 0.03 False
[OnesComplementOperatorBenchmark - 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_VectorOf(Single).OnesComplementOperatorBenchmark.html>) 10.21 ns 0.35 ns 0.03 0.03 False

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_VectorOf&lt;Single&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Single>.OnesComplementBenchmark ```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.35075835567326286 < 9.722928785750803. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 239.62427712696095 (T) = (0 -0.3933928966011059) / Math.Sqrt((0.03493747378404529 / (299)) + (0.02269012099700664 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9609201557654461 = (10.066388551602099 - 0.3933928966011059) / 10.066388551602099 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<Single>.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.8614136600343545 < 11.654627742474206. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 59.61428217946905 (T) = (0 -0.8601963226493717) / Math.Sqrt((9.286904494613403 / (299)) + (1.540056678197696E-05 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9243229932800722 = (11.366680051615448 - 0.8601963226493717) / 11.366680051615448 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Numerics.Tests.Perf_VectorOf<Single>.OnesComplementOperatorBenchmark ```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.3507526252919666 < 9.464707747783509. IsChangePoint: Marked as a change because one of 11/2/2022 4:14:20 AM, 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 859.1417567854082 (T) = (0 -0.3553855598856058) / Math.Sqrt((0.033077307873078374 / (299)) + (0.000261478102193564 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9647353764510633 = (10.077679105022584 - 0.3553855598856058) / 10.077679105022584 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 75f9609c5bb962d86afae1952536813a95b4a6d7
Compare 58614a0f6da787c9d6d914b99564f066d13f69ed
Diff Diff

Improvements in System.Numerics.Tests.Perf_Matrix3x2

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[MultiplyByScalarOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.MultiplyByScalarOperatorBenchmark.html>) 7.68 ns 1.47 ns 0.19 0.04 False Trace Trace
[MultiplyByMatrixBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.MultiplyByMatrixBenchmark.html>) 15.75 ns 5.15 ns 0.33 0.01 False Trace Trace
[CreateScaleFromScalarWithCenterBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarWithCenterBenchmark.html>) 7.37 ns 0.53 ns 0.07 0.10 False Trace Trace
[InvertBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.InvertBenchmark.html>) 13.01 ns 1.85 ns 0.14 0.02 False 70.29345076910823 27.75462991186448 0.39483948516099554 Trace Trace
[EqualsBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.EqualsBenchmark.html>) 12.90 ns 6.29 ns 0.49 0.00 False 61.2777957053485 83.49695162733993 1.36259718004269 Trace Trace
[IsIdentityBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.IsIdentityBenchmark.html>) 9.73 ns 2.79 ns 0.29 0.37 False 76.89489246469235 44.135847259884194 0.5739763181299714 Trace Trace
[AddBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.AddBenchmark.html>) 9.25 ns 3.41 ns 0.37 0.06 False Trace Trace
[CreateScaleFromScalarXYBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarXYBenchmark.html>) 7.01 ns 0.37 ns 0.05 0.06 False Trace Trace
[EqualityOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.EqualityOperatorBenchmark.html>) 7.90 ns 3.53 ns 0.45 0.56 False 65.4843941551371 46.075928346788025 0.703616929518061 Trace Trace
[AddOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.AddOperatorBenchmark.html>) 9.61 ns 3.39 ns 0.35 0.06 False Trace Trace
[CreateScaleFromScalarXYWithCenterBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarXYWithCenterBenchmark.html>) 7.40 ns 0.54 ns 0.07 0.05 False 24.777904193703982 9.185661002512012 0.37071985308773897 Trace Trace
[CreateTranslationFromVectorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateTranslationFromVectorBenchmark.html>) 2.06 ns 0.65 ns 0.32 0.64 False 19.44334366296551 6.473454885066552 0.33293938518387617 Trace Trace
[NegateBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.NegateBenchmark.html>) 7.68 ns 1.36 ns 0.18 0.10 False 32.75564001578565 16.420527927114854 0.5013038340634299 Trace Trace
[SubtractBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.SubtractBenchmark.html>) 9.56 ns 3.45 ns 0.36 0.04 False Trace Trace
[CreateRotationBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateRotationBenchmark.html>) 22.92 ns 16.10 ns 0.70 0.02 False Trace Trace
[MultiplyByScalarBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.MultiplyByScalarBenchmark.html>) 7.62 ns 1.46 ns 0.19 0.07 False Trace Trace
[CreateRotationWithCenterBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateRotationWithCenterBenchmark.html>) 22.28 ns 18.44 ns 0.83 0.02 False 129.21292619567228 122.86227714176106 0.950851286779976 Trace Trace
[MultiplyByMatrixOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.MultiplyByMatrixOperatorBenchmark.html>) 15.79 ns 5.37 ns 0.34 0.01 False Trace Trace
[NegationOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.NegationOperatorBenchmark.html>) 7.99 ns 1.40 ns 0.18 0.06 False 32.753169741557414 16.112557831366193 0.4919388858697998 Trace Trace
[SubtractOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.SubtractOperatorBenchmark.html>) 9.56 ns 3.88 ns 0.41 0.04 False 47.0639563150272 25.380772059297872 0.5392825857947255 Trace Trace
[CreateScaleFromVectorWithCenterBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromVectorWithCenterBenchmark.html>) 7.69 ns 0.36 ns 0.05 0.45 False 29.7665516280012 9.19664497283132 0.30895903186112084 Trace Trace
[CreateScaleFromScalarBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarBenchmark.html>) 7.09 ns 0.36 ns 0.05 0.04 False Trace Trace
[LerpBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.LerpBenchmark.html>) 14.85 ns 2.54 ns 0.17 0.03 False 76.73537986106798 28.061893987218316 0.3656969449819018 Trace Trace
[CreateScaleFromVectorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromVectorBenchmark.html>) 7.41 ns 0.13 ns 0.02 0.41 False 20.802652224718088 4.451265007122027 0.2139758411109211 Trace Trace
[InequalityOperatorBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.InequalityOperatorBenchmark.html>) 7.71 ns 3.66 ns 0.47 0.46 False 68.41766761659271 45.67232009133361 0.6675515503872149 Trace Trace
[CreateSkewFromScalarXYWithCenterBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix3x2.CreateSkewFromScalarXYWithCenterBenchmark.html>) 44.82 ns 42.03 ns 0.94 0.20 False 301.1884803786106 285.20636277165386 0.946936491107275 Trace Trace

graph graph graph graph graph graph graph graph graph graph graph graph graph graph graph graph graph graph 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_Matrix3x2*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Matrix3x2.MultiplyByScalarOperatorBenchmark ```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.4674481888155924 < 7.291844970967561. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 110.72051193504346 (T) = (0 -1.5916002834169953) / Math.Sqrt((0.018788837721000613 / (299)) + (0.04571096957643334 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.7950666178372655 = (7.766427639168758 - 1.5916002834169953) / 7.766427639168758 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.MultiplyByScalarOperatorBenchmark() push esi sub esp,30 vzeroupper mov esi,edx lea ecx,[esp+18] call dword ptr ds:[0AC01018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr ds:[0B1423D8] vmulss xmm1,xmm0,dword ptr [esp+18] vmovss dword ptr [esp],xmm1 vmulss xmm1,xmm0,dword ptr [esp+1C] vmovss dword ptr [esp+4],xmm1 vmulss xmm1,xmm0,dword ptr [esp+20] vmovss dword ptr [esp+8],xmm1 vmulss xmm1,xmm0,dword ptr [esp+24] vmovss dword ptr [esp+0C],xmm1 vmulss xmm1,xmm0,dword ptr [esp+28] vmovss dword ptr [esp+10],xmm1 vmulss xmm0,xmm0,dword ptr [esp+2C] vmovss dword ptr [esp+14],xmm0 vmovdqu xmm0,xmmword ptr [esp] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+10] mov [esi+10],eax mov eax,[esp+14] mov [esi+14],eax add esp,30 pop esi ret ; Total bytes of code 126 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6E31228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.MultiplyByScalarOperatorBenchmark() sub esp,28 vzeroupper vmovsd xmm0,qword ptr ds:[0AF32AD0] vmovsd qword ptr [esp+20],xmm0 vmovsd xmm0,qword ptr [esp+20] vmovsd xmm1,qword ptr ds:[0AF32AD8] vmovsd qword ptr [esp+18],xmm1 vmovsd xmm1,qword ptr [esp+18] vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp+10],xmm0 vmovsd xmm0,qword ptr [esp] vmovsd xmm1,qword ptr ds:[0AF32AE0] vmulps xmm0,xmm0,xmm1 vmovsd xmm2,qword ptr [esp+8] vmulps xmm2,xmm2,xmm1 vxorps xmm3,xmm3,xmm3 vmulps xmm1,xmm1,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm2 vmovsd qword ptr [edx+10],xmm1 add esp,28 ret ; Total bytes of code 120 ``` #### System.Numerics.Tests.Perf_Matrix3x2.MultiplyByMatrixBenchmark ```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 5.151710467814596 < 14.86047321826912. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 295.5762496980998 (T) = (0 -5.279865233760774) / Math.Sqrt((0.024424125434475304 / (299)) + (0.017486637127396697 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.6641189306861186 = (15.719448686245345 - 5.279865233760774) / 15.719448686245345 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.MultiplyByMatrixBenchmark() push ebp mov ebp,esp push esi sub esp,30 vzeroupper mov esi,edx lea ecx,[ebp-1C] call dword ptr ds:[0AED1018]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-34] call dword ptr ds:[0AED1018]; System.Numerics.Matrix3x2.get_Identity() sub esp,18 vmovdqu xmm0,xmmword ptr [ebp-1C] vmovdqu xmmword ptr [esp],xmm0 vmovq xmm0,qword ptr [ebp-0C] vmovq qword ptr [esp+10],xmm0 sub esp,18 vmovdqu xmm0,xmmword ptr [ebp-34] vmovdqu xmmword ptr [esp],xmm0 vmovq xmm0,qword ptr [ebp-24] vmovq qword ptr [esp+10],xmm0 mov ecx,esi call dword ptr ds:[0AED10F0]; System.Numerics.Matrix3x2.op_Multiply(System.Numerics.Matrix3x2, System.Numerics.Matrix3x2) lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 92 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7141228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ```assembly ; System.Numerics.Matrix3x2.op_Multiply(System.Numerics.Matrix3x2, System.Numerics.Matrix3x2) push ebp mov ebp,esp sub esp,18 vzeroupper vmovss xmm0,dword ptr [ebp+20] vmovss xmm1,dword ptr [ebp+8] vmulss xmm2,xmm0,xmm1 vmovss xmm3,dword ptr [ebp+24] vmovss xmm4,dword ptr [ebp+10] vmulss xmm5,xmm3,xmm4 vaddss xmm2,xmm2,xmm5 vmovss dword ptr [ebp-18],xmm2 vmovss xmm2,dword ptr [ebp+0C] vmulss xmm0,xmm0,xmm2 vmovss xmm5,dword ptr [ebp+14] vmulss xmm3,xmm3,xmm5 vaddss xmm0,xmm0,xmm3 vmovss dword ptr [ebp-14],xmm0 vmovss xmm0,dword ptr [ebp+28] vmulss xmm3,xmm0,xmm1 vmovss xmm6,dword ptr [ebp+2C] vmulss xmm7,xmm6,xmm4 vaddss xmm3,xmm3,xmm7 vmovss dword ptr [ebp-10],xmm3 vmulss xmm0,xmm0,xmm2 vmulss xmm3,xmm6,xmm5 vaddss xmm0,xmm0,xmm3 vmovss dword ptr [ebp-0C],xmm0 vmovss xmm0,dword ptr [ebp+30] vmulss xmm1,xmm0,xmm1 vmovss xmm3,dword ptr [ebp+34] vmulss xmm4,xmm3,xmm4 vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [ebp+18] vmovss dword ptr [ebp-8],xmm1 vmulss xmm0,xmm0,xmm2 vmulss xmm1,xmm3,xmm5 vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [ebp+1C] vmovss dword ptr [ebp-4],xmm0 vmovdqu xmm0,xmmword ptr [ebp-18] vmovdqu xmmword ptr [ecx],xmm0 mov eax,[ebp-8] mov [ecx+10],eax mov eax,[ebp-4] mov [ecx+14],eax mov esp,ebp pop ebp ret 30 ; Total bytes of code 198 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.MultiplyByMatrixBenchmark() sub esp,58 vzeroupper vmovsd xmm0,qword ptr ds:[0B772C10] vmovsd qword ptr [esp+50],xmm0 vmovsd xmm1,qword ptr [esp+50] vmovsd xmm2,qword ptr ds:[0B772C18] vmovsd qword ptr [esp+48],xmm2 vmovsd xmm3,qword ptr [esp+48] vmovsd qword ptr [esp+40],xmm0 vmovsd xmm0,qword ptr [esp+40] vmovsd qword ptr [esp+38],xmm2 vmovsd xmm2,qword ptr [esp+38] vmovsd qword ptr [esp+20],xmm1 vmovsd qword ptr [esp+28],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [esp+30],xmm1 vmovsd qword ptr [esp+8],xmm0 vmovsd qword ptr [esp+10],xmm2 vmovsd qword ptr [esp+18],xmm1 lea eax,[esp+20] vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [esp+8] vmulss xmm2,xmm0,xmm1 vmovss xmm3,dword ptr [eax+4] vmovss xmm4,dword ptr [esp+10] vmulss xmm5,xmm3,xmm4 vaddss xmm2,xmm2,xmm5 vmovss xmm5,dword ptr [esp+0C] vmulss xmm0,xmm0,xmm5 vmovss xmm6,dword ptr [esp+14] vmulss xmm3,xmm3,xmm6 vaddss xmm0,xmm0,xmm3 vinsertps xmm0,xmm2,xmm0,1C vmovsd qword ptr [esp],xmm0 vmovss xmm2,dword ptr [eax+8] vmulss xmm3,xmm2,xmm1 vmovss xmm7,dword ptr [eax+0C] vmulss xmm0,xmm7,xmm4 vaddss xmm0,xmm3,xmm0 vmulss xmm2,xmm2,xmm5 vmulss xmm3,xmm7,xmm6 vaddss xmm2,xmm2,xmm3 vinsertps xmm0,xmm0,xmm2,1C vmovss xmm2,dword ptr [eax+10] vmulss xmm1,xmm2,xmm1 vmovss xmm3,dword ptr [eax+14] vmulss xmm4,xmm3,xmm4 vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [esp+18] vmulss xmm2,xmm2,xmm5 vmulss xmm3,xmm3,xmm6 vaddss xmm2,xmm2,xmm3 vaddss xmm2,xmm2,dword ptr [esp+1C] vinsertps xmm1,xmm1,xmm2,1C vmovsd xmm2,qword ptr [esp] vmovsd qword ptr [edx],xmm2 vmovsd qword ptr [edx+8],xmm0 vmovsd qword ptr [edx+10],xmm1 add esp,58 ret ; Total bytes of code 297 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarWithCenterBenchmark ```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.5264902631398846 < 7.000123998278914. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 165.04756208594554 (T) = (0 -0.5932479767665932) / Math.Sqrt((0.026677630606124166 / (299)) + (0.02387242323575336 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9193916013283684 = (7.3596298468012336 - 0.5932479767665932) / 7.3596298468012336 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarWithCenterBenchmark() push esi sub esp,20 vzeroupper mov esi,edx lea ecx,[esp+8] call dword ptr ds:[0AB51018]; System.Numerics.Matrix3x2.get_Identity() vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp],xmm0 vxorps xmm0,xmm0,xmm0 vmulss xmm0,xmm0,dword ptr [esp] vxorps xmm1,xmm1,xmm1 vmulss xmm1,xmm1,dword ptr [esp+4] vmovss xmm2,dword ptr ds:[0B0923C4] vmovss dword ptr [esp+8],xmm2 vmovss dword ptr [esp+14],xmm2 vmovss dword ptr [esp+18],xmm0 vmovss dword ptr [esp+1C],xmm1 vmovdqu xmm0,xmmword ptr [esp+8] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+18] mov [esi+10],eax mov eax,[esp+1C] mov [esi+14],eax add esp,20 pop esi ret ; Total bytes of code 108 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6D81228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarWithCenterBenchmark() sub esp,10 vzeroupper vmovsd xmm0,qword ptr ds:[0B342AB8] vmovsd qword ptr [esp+8],xmm0 vmovsd xmm0,qword ptr [esp+8] vmovsd xmm1,qword ptr ds:[0B342AC0] vmovsd qword ptr [esp],xmm1 vmovsd xmm1,qword ptr [esp] vmovsd xmm2,qword ptr ds:[0B342AC8] vmovsd xmm3,qword ptr ds:[0B342AC8] vsubps xmm2,xmm2,xmm3 vxorps xmm3,xmm3,xmm3 vmulps xmm2,xmm2,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,10 ret ; Total bytes of code 90 ``` #### System.Numerics.Tests.Perf_Matrix3x2.InvertBenchmark ```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.8473759569976769 < 12.338435558670202. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 528.9412202589477 (T) = (0 -1.9131578548304164) / Math.Sqrt((0.06670393108994485 / (299)) + (0.0030541227025268703 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.8509923349131259 = (12.839325102604692 - 1.9131578548304164) / 12.839325102604692 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.InvertBenchmark() push ebp mov ebp,esp sub esp,30 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-18],xmm4 xor eax,eax mov [ebp-8],eax mov [ebp-4],eax lea ecx,[ebp-30] call dword ptr ds:[0B267BE8]; System.Numerics.Matrix3x2.get_Identity() sub esp,18 vmovdqu xmm0,xmmword ptr [ebp-30] vmovdqu xmmword ptr [esp],xmm0 vmovq xmm0,qword ptr [ebp-20] vmovq qword ptr [esp+10],xmm0 lea ecx,[ebp-18] call dword ptr ds:[0B267E58]; System.Numerics.Matrix3x2.Invert(System.Numerics.Matrix3x2, System.Numerics.Matrix3x2 ByRef) mov esp,ebp pop ebp ret ; Total bytes of code 72 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6E71228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ```assembly ; System.Numerics.Matrix3x2.Invert(System.Numerics.Matrix3x2, System.Numerics.Matrix3x2 ByRef) push ebp mov ebp,esp sub esp,18 vzeroupper vmovss xmm0,dword ptr [ebp+8] vmovss xmm1,dword ptr [ebp+14] vmulss xmm2,xmm0,xmm1 vmovss xmm3,dword ptr [ebp+10] vmovss xmm4,dword ptr [ebp+0C] vmulss xmm5,xmm3,xmm4 vsubss xmm2,xmm2,xmm5 vandps xmm5,xmm2,ds:[0B282370] vmovss xmm6,dword ptr ds:[0B282380] vucomiss xmm6,xmm5 jbe short M02_L00 vxorps xmm2,xmm2,xmm2 vmovdqu xmmword ptr [ebp-18],xmm2 vmovq qword ptr [ebp-8],xmm2 vmovss xmm1,dword ptr ds:[0B282384] vmovss dword ptr [ebp-18],xmm1 vmovss dword ptr [ebp-14],xmm1 vmovss dword ptr [ebp-10],xmm1 vmovss dword ptr [ebp-0C],xmm1 vmovss dword ptr [ebp-8],xmm1 vmovss dword ptr [ebp-4],xmm1 vmovdqu xmm4,xmmword ptr [ebp-18] vmovdqu xmmword ptr [ecx],xmm4 mov eax,[ebp-8] mov [ecx+10],eax mov eax,[ebp-4] mov [ecx+14],eax xor eax,eax mov esp,ebp pop ebp ret 18 M02_L00: vmovss xmm5,dword ptr ds:[0B282388] vdivss xmm2,xmm5,xmm2 vmulss xmm5,xmm1,xmm2 vmovss dword ptr [ecx],xmm5 vxorps xmm5,xmm4,ds:[0B282390] vmulss xmm5,xmm5,xmm2 vmovss dword ptr [ecx+4],xmm5 vxorps xmm5,xmm3,ds:[0B282390] vmulss xmm5,xmm5,xmm2 vmovss dword ptr [ecx+8],xmm5 vmulss xmm5,xmm0,xmm2 vmovss dword ptr [ecx+0C],xmm5 vmovss xmm5,dword ptr [ebp+1C] vmulss xmm3,xmm3,xmm5 vmovss xmm6,dword ptr [ebp+18] vmulss xmm1,xmm6,xmm1 vsubss xmm1,xmm3,xmm1 vmulss xmm1,xmm1,xmm2 vmovss dword ptr [ecx+10],xmm1 vmulss xmm1,xmm6,xmm4 vmulss xmm0,xmm0,xmm5 vsubss xmm0,xmm1,xmm0 vmulss xmm0,xmm0,xmm2 vmovss dword ptr [ecx+14],xmm0 mov eax,1 mov esp,ebp pop ebp ret 18 ; Total bytes of code 270 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.InvertBenchmark() push ebp mov ebp,esp sub esp,28 vzeroupper vmovsd xmm0,qword ptr ds:[0B5B2960] vmovsd qword ptr [ebp-8],xmm0 vmovsd xmm0,qword ptr [ebp-8] vmovsd xmm1,qword ptr ds:[0B5B2968] vmovsd qword ptr [ebp-10],xmm1 vmovsd xmm1,qword ptr [ebp-10] vmovsd qword ptr [ebp-28],xmm0 vmovsd qword ptr [ebp-20],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [ebp-18],xmm0 lea eax,[ebp-28] vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [eax+0C] vmulss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [eax+8] vmovss xmm2,dword ptr [eax+4] vmulss xmm1,xmm1,xmm2 vsubss xmm0,xmm0,xmm1 vandps xmm0,xmm0,ds:[0B5B2970] vmovss xmm1,dword ptr ds:[0B5B2980] vucomiss xmm1,xmm0 jbe short M00_L00 xor eax,eax jmp short M00_L01 M00_L00: mov eax,1 M00_L01: mov esp,ebp pop ebp ret ; Total bytes of code 133 ``` #### System.Numerics.Tests.Perf_Matrix3x2.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 6.293431884386246 < 12.294463410013634. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 538.6581562602813 (T) = (0 -6.24529903400732) / Math.Sqrt((0.016351640319286372 / (299)) + (0.0015191289115800474 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.5185680356205963 = (12.97233980310781 - 6.24529903400732) / 12.97233980310781 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.EqualsBenchmark() push ebp mov ebp,esp sub esp,48 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-18],xmm4 xor eax,eax mov [ebp-8],eax mov [ebp-4],eax lea ecx,[ebp-18] call dword ptr ds:[0B857BE8]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-30] call dword ptr ds:[0B857BE8]; System.Numerics.Matrix3x2.get_Identity() vmovdqu xmm0,xmmword ptr [ebp-30] vmovdqu xmmword ptr [ebp-48],xmm0 mov eax,[ebp-20] mov [ebp-38],eax mov eax,[ebp-1C] mov [ebp-34],eax vmovups xmm0,[ebp-18] vmovups xmm1,[ebp-48] 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 jne short M00_L00 vmovups xmm0,[ebp-10] vmovups xmm1,[ebp-40] 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 jmp short M00_L01 M00_L00: xor eax,eax M00_L01: mov esp,ebp pop ebp ret ; Total bytes of code 190 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7591228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.EqualsBenchmark() push ebp mov ebp,esp sub esp,50 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-18],xmm4 xor eax,eax mov [ebp-8],eax mov [ebp-4],eax vmovsd xmm0,qword ptr ds:[0B782AC0] vmovsd qword ptr [ebp-20],xmm0 vmovsd xmm1,qword ptr [ebp-20] vmovsd xmm2,qword ptr ds:[0B782AC8] vmovsd qword ptr [ebp-28],xmm2 vmovsd xmm3,qword ptr [ebp-28] vmovsd qword ptr [ebp-18],xmm1 vmovsd qword ptr [ebp-10],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [ebp-8],xmm1 vmovsd qword ptr [ebp-30],xmm0 vmovsd xmm0,qword ptr [ebp-30] vmovsd qword ptr [ebp-38],xmm2 vmovsd xmm1,qword ptr [ebp-38] vmovsd qword ptr [ebp-50],xmm0 vmovsd qword ptr [ebp-48],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [ebp-40],xmm0 lea eax,[ebp-18] vmovss xmm0,dword ptr [ebp-50] vmovss xmm1,dword ptr [ebp-4C] vmovss xmm2,dword ptr [eax] vmovss xmm3,dword ptr [eax+4] vinsertps xmm2,xmm2,xmm3,1C vinsertps xmm0,xmm0,xmm1,1C vcmpeqps xmm1,xmm2,xmm2 vcmpeqps xmm3,xmm0,xmm0 vorps xmm1,xmm1,xmm3 vpcmpeqd xmm3,xmm3,xmm3 vxorps xmm1,xmm1,xmm3 vcmpeqps xmm0,xmm2,xmm0 vorps xmm0,xmm0,xmm1 vpcmpeqd xmm0,xmm0,xmm3 vpmovmskb edx,xmm0 cmp edx,0FFFF jne near ptr M00_L00 lea edx,[eax+8] vmovss xmm0,dword ptr [ebp-48] vmovss xmm1,dword ptr [ebp-44] vmovss xmm2,dword ptr [edx] vmovss xmm3,dword ptr [edx+4] vinsertps xmm2,xmm2,xmm3,1C vinsertps xmm0,xmm0,xmm1,1C vcmpeqps xmm1,xmm2,xmm2 vcmpeqps xmm3,xmm0,xmm0 vorps xmm1,xmm1,xmm3 vpcmpeqd xmm3,xmm3,xmm3 vxorps xmm1,xmm1,xmm3 vcmpeqps xmm0,xmm2,xmm0 vorps xmm0,xmm0,xmm1 vpcmpeqd xmm0,xmm0,xmm3 vpmovmskb edx,xmm0 cmp edx,0FFFF jne short M00_L00 add eax,10 vmovss xmm0,dword ptr [ebp-40] vmovss xmm1,dword ptr [ebp-3C] vmovss xmm2,dword ptr [eax] vmovss xmm3,dword ptr [eax+4] vinsertps xmm2,xmm2,xmm3,1C vinsertps xmm0,xmm0,xmm1,1C vcmpeqps xmm1,xmm2,xmm2 vcmpeqps xmm3,xmm0,xmm0 vorps xmm1,xmm1,xmm3 vpcmpeqd xmm3,xmm3,xmm3 vxorps xmm1,xmm1,xmm3 vcmpeqps xmm0,xmm2,xmm0 vorps xmm0,xmm0,xmm1 vpcmpeqd xmm0,xmm0,xmm3 vpmovmskb eax,xmm0 cmp eax,0FFFF sete al movzx eax,al jmp short M00_L01 M00_L00: xor eax,eax M00_L01: mov esp,ebp pop ebp ret ; Total bytes of code 378 ``` #### System.Numerics.Tests.Perf_Matrix3x2.IsIdentityBenchmark ```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 2.793067209562523 < 9.303769918887228. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 132.44692866425643 (T) = (0 -2.915956782404625) / Math.Sqrt((0.566668770733939 / (299)) + (0.005259785201931607 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.6827961894816833 = (9.192691530533317 - 2.915956782404625) / 9.192691530533317 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.IsIdentityBenchmark() push ebp mov ebp,esp sub esp,78 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-18],xmm4 xor eax,eax mov [ebp-8],eax mov [ebp-4],eax lea ecx,[ebp-18] call dword ptr ds:[0B1D7BE8]; System.Numerics.Matrix3x2.get_Identity() vmovdqu xmm0,xmmword ptr [ebp-18] vmovdqu xmmword ptr [ebp-30],xmm0 mov ecx,[ebp-8] mov [ebp-20],ecx mov ecx,[ebp-4] mov [ebp-1C],ecx lea ecx,[ebp-48] call dword ptr ds:[0B1D7BE8]; System.Numerics.Matrix3x2.get_Identity() vmovdqu xmm0,xmmword ptr [ebp-30] vmovdqu xmmword ptr [ebp-60],xmm0 mov eax,[ebp-20] mov [ebp-50],eax mov eax,[ebp-1C] mov [ebp-4C],eax vmovdqu xmm0,xmmword ptr [ebp-48] vmovdqu xmmword ptr [ebp-78],xmm0 mov eax,[ebp-38] mov [ebp-68],eax mov eax,[ebp-34] mov [ebp-64],eax vmovss xmm0,dword ptr [ebp-60] vucomiss xmm0,dword ptr [ebp-78] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-54] vucomiss xmm0,dword ptr [ebp-6C] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-5C] vucomiss xmm0,dword ptr [ebp-74] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-58] vucomiss xmm0,dword ptr [ebp-70] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-50] vucomiss xmm0,dword ptr [ebp-68] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-4C] xor eax,eax vucomiss xmm0,dword ptr [ebp-64] setnp al jp short M00_L00 sete al M00_L00: jmp short M00_L02 M00_L01: xor eax,eax M00_L02: mov esp,ebp pop ebp ret ; Total bytes of code 208 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6E61228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.IsIdentityBenchmark() push ebp mov ebp,esp sub esp,38 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-18],xmm4 xor eax,eax mov [ebp-8],eax mov [ebp-4],eax vmovsd xmm0,qword ptr ds:[0AF32970] vmovsd qword ptr [ebp-20],xmm0 vmovsd xmm1,qword ptr [ebp-20] vmovsd xmm2,qword ptr ds:[0AF32978] vmovsd qword ptr [ebp-28],xmm2 vmovsd xmm2,qword ptr [ebp-28] vmovsd qword ptr [ebp-18],xmm1 vmovsd qword ptr [ebp-10],xmm2 vmovsd xmm1,qword ptr [ebp-18] vmovsd qword ptr [ebp-30],xmm0 vmovsd xmm0,qword ptr [ebp-30] vcmpeqps xmm0,xmm1,xmm0 vmovmskps eax,xmm0 and eax,3 cmp eax,3 jne short M00_L00 vmovsd xmm0,qword ptr [ebp-10] vmovsd xmm1,qword ptr ds:[0AF32978] vmovsd qword ptr [ebp-38],xmm1 vmovsd xmm1,qword ptr [ebp-38] vcmpeqps xmm0,xmm0,xmm1 vmovmskps eax,xmm0 and eax,3 cmp eax,3 jne short M00_L00 vxorps xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vcmpeqps xmm0,xmm0,xmm1 vmovmskps eax,xmm0 and eax,3 cmp eax,3 sete al movzx eax,al jmp short M00_L01 M00_L00: xor eax,eax M00_L01: mov esp,ebp pop ebp ret ; Total bytes of code 181 ``` #### System.Numerics.Tests.Perf_Matrix3x2.AddBenchmark ```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 3.4060104384304797 < 9.053379481872353. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 198.0530743942539 (T) = (0 -3.4302575026749706) / Math.Sqrt((0.03828814461101046 / (299)) + (0.012098000584557683 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.6383470367370379 = (9.484942337333457 - 3.4302575026749706) / 9.484942337333457 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.AddBenchmark() push ebp mov ebp,esp push esi sub esp,48 vzeroupper mov esi,edx lea ecx,[ebp-1C] call dword ptr ds:[0AE51018]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-34] call dword ptr ds:[0AE51018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [ebp-1C] vaddss xmm0,xmm0,dword ptr [ebp-34] vmovss dword ptr [ebp-4C],xmm0 vmovss xmm0,dword ptr [ebp-18] vaddss xmm0,xmm0,dword ptr [ebp-30] vmovss dword ptr [ebp-48],xmm0 vmovss xmm0,dword ptr [ebp-14] vaddss xmm0,xmm0,dword ptr [ebp-2C] vmovss dword ptr [ebp-44],xmm0 vmovss xmm0,dword ptr [ebp-10] vaddss xmm0,xmm0,dword ptr [ebp-28] vmovss dword ptr [ebp-40],xmm0 vmovss xmm0,dword ptr [ebp-0C] vaddss xmm0,xmm0,dword ptr [ebp-24] vmovss dword ptr [ebp-3C],xmm0 vmovss xmm0,dword ptr [ebp-8] vaddss xmm0,xmm0,dword ptr [ebp-20] vmovss dword ptr [ebp-38],xmm0 vmovdqu xmm0,xmmword ptr [ebp-4C] vmovdqu xmmword ptr [esi],xmm0 mov eax,[ebp-3C] mov [esi+10],eax mov eax,[ebp-38] mov [esi+14],eax lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 147 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6F71228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.AddBenchmark() sub esp,50 vzeroupper vmovsd xmm0,qword ptr ds:[0B9A2B90] vmovsd qword ptr [esp+48],xmm0 vmovsd xmm1,qword ptr [esp+48] vmovsd xmm2,qword ptr ds:[0B9A2B98] vmovsd qword ptr [esp+40],xmm2 vmovsd xmm3,qword ptr [esp+40] vmovsd qword ptr [esp+38],xmm0 vmovsd xmm0,qword ptr [esp+38] vmovsd qword ptr [esp+30],xmm2 vmovsd xmm2,qword ptr [esp+30] vmovsd qword ptr [esp+18],xmm1 vmovsd qword ptr [esp+20],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [esp+28],xmm1 vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm2 vmovsd qword ptr [esp+10],xmm1 lea eax,[esp+18] vmovsd xmm0,qword ptr [eax] vmovsd xmm1,qword ptr [esp] vaddps xmm0,xmm0,xmm1 vmovsd xmm1,qword ptr [eax+8] vmovsd xmm2,qword ptr [esp+8] vaddps xmm1,xmm1,xmm2 vmovsd xmm2,qword ptr [eax+10] vxorps xmm3,xmm3,xmm3 vaddps xmm2,xmm2,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,50 ret ; Total bytes of code 172 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarXYBenchmark ```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.3713183599799671 < 6.697708620304359. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 140.62939555998003 (T) = (0 -0.42528409465620604) / Math.Sqrt((0.0026411023412009032 / (299)) + (0.0331549029431802 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9396764270547276 = (7.050048163460712 - 0.42528409465620604) / 7.050048163460712 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarXYBenchmark() push esi sub esp,18 vzeroupper mov esi,edx lea ecx,[esp] call dword ptr ds:[0B141018]; System.Numerics.Matrix3x2.get_Identity() mov dword ptr [esp],3F800000 mov dword ptr [esp+0C],40000000 vmovdqu xmm0,xmmword ptr [esp] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+10] mov [esi+10],eax mov eax,[esp+14] mov [esi+14],eax add esp,18 pop esi ret ; Total bytes of code 61 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7351228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarXYBenchmark() sub esp,10 vzeroupper vmovsd xmm0,qword ptr ds:[0B132AA0] vmovsd qword ptr [esp+8],xmm0 vmovsd xmm0,qword ptr [esp+8] vmovsd xmm1,qword ptr ds:[0B132AA8] vmovsd qword ptr [esp],xmm1 vmovsd xmm1,qword ptr [esp] vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [edx+10],xmm0 add esp,10 ret ; Total bytes of code 66 ``` #### System.Numerics.Tests.Perf_Matrix3x2.EqualityOperatorBenchmark ```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 3.534922602233302 < 7.473886467658758. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 80.77167042908837 (T) = (0 -3.691539380601668) / Math.Sqrt((0.43966525418717817 / (299)) + (0.01632160752194273 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.5253351118024517 = (7.777148620829325 - 3.691539380601668) / 7.777148620829325 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.EqualityOperatorBenchmark() push ebp mov ebp,esp sub esp,60 vzeroupper lea ecx,[ebp-18] call dword ptr ds:[0B957BE8]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-30] call dword ptr ds:[0B957BE8]; System.Numerics.Matrix3x2.get_Identity() vmovdqu xmm0,xmmword ptr [ebp-18] vmovdqu xmmword ptr [ebp-48],xmm0 mov eax,[ebp-8] mov [ebp-38],eax mov eax,[ebp-4] mov [ebp-34],eax vmovdqu xmm0,xmmword ptr [ebp-30] vmovdqu xmmword ptr [ebp-60],xmm0 mov eax,[ebp-20] mov [ebp-50],eax mov eax,[ebp-1C] mov [ebp-4C],eax vmovss xmm0,dword ptr [ebp-48] vucomiss xmm0,dword ptr [ebp-60] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-3C] vucomiss xmm0,dword ptr [ebp-54] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-44] vucomiss xmm0,dword ptr [ebp-5C] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-40] vucomiss xmm0,dword ptr [ebp-58] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-38] vucomiss xmm0,dword ptr [ebp-50] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-34] xor eax,eax vucomiss xmm0,dword ptr [ebp-4C] setnp al jp short M00_L00 sete al M00_L00: jmp short M00_L02 M00_L01: xor eax,eax M00_L02: mov esp,ebp pop ebp ret ; Total bytes of code 169 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[75A1228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.EqualityOperatorBenchmark() push ebp mov ebp,esp sub esp,50 vzeroupper vmovsd xmm0,qword ptr ds:[0B1B2A08] vmovsd qword ptr [ebp-8],xmm0 vmovsd xmm1,qword ptr [ebp-8] vmovsd xmm2,qword ptr ds:[0B1B2A10] vmovsd qword ptr [ebp-10],xmm2 vmovsd xmm3,qword ptr [ebp-10] vmovsd qword ptr [ebp-18],xmm0 vmovsd xmm0,qword ptr [ebp-18] vmovsd qword ptr [ebp-20],xmm2 vmovsd xmm2,qword ptr [ebp-20] vmovsd qword ptr [ebp-38],xmm1 vmovsd qword ptr [ebp-30],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [ebp-28],xmm1 vmovsd qword ptr [ebp-50],xmm0 vmovsd qword ptr [ebp-48],xmm2 vmovsd qword ptr [ebp-40],xmm1 lea eax,[ebp-38] vmovsd xmm0,qword ptr [eax] vmovsd xmm1,qword ptr [ebp-50] vcmpeqps xmm0,xmm0,xmm1 vmovmskps edx,xmm0 and edx,3 cmp edx,3 jne short M00_L00 vmovsd xmm0,qword ptr [eax+8] vmovsd xmm1,qword ptr [ebp-48] vcmpeqps xmm0,xmm0,xmm1 vmovmskps edx,xmm0 and edx,3 cmp edx,3 jne short M00_L00 vmovsd xmm0,qword ptr [eax+10] vxorps xmm1,xmm1,xmm1 vcmpeqps xmm0,xmm0,xmm1 vmovmskps eax,xmm0 and eax,3 cmp eax,3 sete al movzx eax,al jmp short M00_L01 M00_L00: xor eax,eax M00_L01: mov esp,ebp pop ebp ret ; Total bytes of code 193 ``` #### System.Numerics.Tests.Perf_Matrix3x2.AddOperatorBenchmark ```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 3.394439565981092 < 9.07994815072477. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 118.53286274439905 (T) = (0 -3.4735551226933485) / Math.Sqrt((0.038657188989961073 / (299)) + (0.036912328824942844 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.6345958208023942 = (9.506062930974018 - 3.4735551226933485) / 9.506062930974018 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.AddOperatorBenchmark() push ebp mov ebp,esp push esi sub esp,48 vzeroupper mov esi,edx lea ecx,[ebp-1C] call dword ptr ds:[0A8F1018]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-34] call dword ptr ds:[0A8F1018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [ebp-1C] vaddss xmm0,xmm0,dword ptr [ebp-34] vmovss dword ptr [ebp-4C],xmm0 vmovss xmm0,dword ptr [ebp-18] vaddss xmm0,xmm0,dword ptr [ebp-30] vmovss dword ptr [ebp-48],xmm0 vmovss xmm0,dword ptr [ebp-14] vaddss xmm0,xmm0,dword ptr [ebp-2C] vmovss dword ptr [ebp-44],xmm0 vmovss xmm0,dword ptr [ebp-10] vaddss xmm0,xmm0,dword ptr [ebp-28] vmovss dword ptr [ebp-40],xmm0 vmovss xmm0,dword ptr [ebp-0C] vaddss xmm0,xmm0,dword ptr [ebp-24] vmovss dword ptr [ebp-3C],xmm0 vmovss xmm0,dword ptr [ebp-8] vaddss xmm0,xmm0,dword ptr [ebp-20] vmovss dword ptr [ebp-38],xmm0 vmovdqu xmm0,xmmword ptr [ebp-4C] vmovdqu xmmword ptr [esi],xmm0 mov eax,[ebp-3C] mov [esi+10],eax mov eax,[ebp-38] mov [esi+14],eax lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 147 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6CD1228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.AddOperatorBenchmark() sub esp,50 vzeroupper vmovsd xmm0,qword ptr ds:[0BAE2B90] vmovsd qword ptr [esp+48],xmm0 vmovsd xmm1,qword ptr [esp+48] vmovsd xmm2,qword ptr ds:[0BAE2B98] vmovsd qword ptr [esp+40],xmm2 vmovsd xmm3,qword ptr [esp+40] vmovsd qword ptr [esp+38],xmm0 vmovsd xmm0,qword ptr [esp+38] vmovsd qword ptr [esp+30],xmm2 vmovsd xmm2,qword ptr [esp+30] vmovsd qword ptr [esp+18],xmm1 vmovsd qword ptr [esp+20],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [esp+28],xmm1 vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm2 vmovsd qword ptr [esp+10],xmm1 lea eax,[esp+18] vmovsd xmm0,qword ptr [eax] vmovsd xmm1,qword ptr [esp] vaddps xmm0,xmm0,xmm1 vmovsd xmm1,qword ptr [eax+8] vmovsd xmm2,qword ptr [esp+8] vaddps xmm1,xmm1,xmm2 vmovsd xmm2,qword ptr [eax+10] vxorps xmm3,xmm3,xmm3 vaddps xmm2,xmm2,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,50 ret ; Total bytes of code 172 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarXYWithCenterBenchmark ```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.53524334943633 < 6.997639428427473. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 135.13068584158754 (T) = (0 -0.6523479240763679) / Math.Sqrt((0.007104558509310595 / (299)) + (0.036799220179492886 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9115794691729712 = (7.37778791842488 - 0.6523479240763679) / 7.37778791842488 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarXYWithCenterBenchmark() push esi sub esp,20 vzeroupper mov esi,edx lea ecx,[esp+8] call dword ptr ds:[0B171018]; System.Numerics.Matrix3x2.get_Identity() vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp],xmm0 vxorps xmm0,xmm0,xmm0 vmulss xmm0,xmm0,dword ptr [esp] vmovss xmm1,dword ptr [esp+4] vmulss xmm1,xmm1,dword ptr ds:[0B6B23C4] mov dword ptr [esp+8],3F800000 mov dword ptr [esp+14],40000000 vmovss dword ptr [esp+18],xmm0 vmovss dword ptr [esp+1C],xmm1 vmovdqu xmm0,xmmword ptr [esp+8] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+18] mov [esi+10],eax mov eax,[esp+1C] mov [esi+14],eax add esp,20 pop esi ret ; Total bytes of code 108 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7431228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarXYWithCenterBenchmark() sub esp,10 vzeroupper vmovsd xmm0,qword ptr ds:[0B812AB8] vmovsd qword ptr [esp+8],xmm0 vmovsd xmm0,qword ptr [esp+8] vmovsd xmm1,qword ptr ds:[0B812AC0] vmovsd qword ptr [esp],xmm1 vmovsd xmm1,qword ptr [esp] vmovsd xmm2,qword ptr ds:[0B812AC8] vmovsd xmm3,qword ptr ds:[0B812AD0] vsubps xmm2,xmm3,xmm2 vxorps xmm3,xmm3,xmm3 vmulps xmm2,xmm2,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,10 ret ; Total bytes of code 90 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateTranslationFromVectorBenchmark ```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.6536173489317526 < 2.215629285844989. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 21.49290442220307 (T) = (0 -0.7391536331750018) / Math.Sqrt((0.09517366213483498 / (299)) + (0.07216309841415684 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.6755876649871952 = (2.2784387441551104 - 0.7391536331750018) / 2.2784387441551104 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateTranslationFromVectorBenchmark() push esi sub esp,20 vzeroupper mov esi,edx vmovsd xmm0,qword ptr ds:[0B932380] vmovsd qword ptr [esp+18],xmm0 lea ecx,[esp] call dword ptr ds:[0B3F1018]; System.Numerics.Matrix3x2.get_Identity() vmovsd xmm0,qword ptr [esp+18] vmovsd qword ptr [esp+10],xmm0 vmovdqu xmm0,xmmword ptr [esp] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+10] mov [esi+10],eax mov eax,[esp+14] mov [esi+14],eax add esp,20 pop esi ret ; Total bytes of code 72 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7571228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateTranslationFromVectorBenchmark() sub esp,18 vzeroupper vmovsd xmm0,qword ptr ds:[0B3F2A88] vmovsd qword ptr [esp+10],xmm0 vmovsd qword ptr [esp+8],xmm0 vmovsd xmm0,qword ptr [esp+8] vmovsd xmm1,qword ptr ds:[0B3F2A90] vmovsd qword ptr [esp],xmm1 vmovsd xmm1,qword ptr [esp] vmovsd xmm2,qword ptr [esp+10] vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,18 ret ; Total bytes of code 74 ``` #### System.Numerics.Tests.Perf_Matrix3x2.NegateBenchmark ```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.361928938222526 < 7.2968756606865615. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 101.84312879230623 (T) = (0 -1.4992956034928224) / Math.Sqrt((0.07983324049794104 / (299)) + (0.05253236065106431 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.8065873918279857 = (7.751798694319872 - 1.4992956034928224) / 7.751798694319872 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.NegateBenchmark() push esi sub esp,30 vzeroupper mov esi,edx lea ecx,[esp+18] call dword ptr ds:[0B3E1018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [esp+18] vxorps xmm0,xmm0,ds:[0B922400] vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp+1C] vxorps xmm0,xmm0,ds:[0B922400] vmovss dword ptr [esp+4],xmm0 vmovss xmm0,dword ptr [esp+20] vxorps xmm0,xmm0,ds:[0B922400] vmovss dword ptr [esp+8],xmm0 vmovss xmm0,dword ptr [esp+24] vxorps xmm0,xmm0,ds:[0B922400] vmovss dword ptr [esp+0C],xmm0 vmovss xmm0,dword ptr [esp+28] vxorps xmm0,xmm0,ds:[0B922400] vmovss dword ptr [esp+10],xmm0 vmovss xmm0,dword ptr [esp+2C] vxorps xmm0,xmm0,ds:[0B922400] vmovss dword ptr [esp+14],xmm0 vmovdqu xmm0,xmmword ptr [esp] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+10] mov [esi+10],eax mov eax,[esp+14] mov [esi+14],eax add esp,30 pop esi ret ; Total bytes of code 166 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7561228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.NegateBenchmark() sub esp,28 vzeroupper vmovsd xmm0,qword ptr ds:[0B582AD0] vmovsd qword ptr [esp+20],xmm0 vmovsd xmm0,qword ptr [esp+20] vmovsd xmm1,qword ptr ds:[0B582AD8] vmovsd qword ptr [esp+18],xmm1 vmovsd xmm1,qword ptr [esp+18] vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp+10],xmm0 vmovsd xmm0,qword ptr [esp] vxorps xmm1,xmm1,xmm1 vsubps xmm0,xmm1,xmm0 vmovsd xmm1,qword ptr [esp+8] vxorps xmm2,xmm2,xmm2 vsubps xmm1,xmm2,xmm1 vxorps xmm3,xmm3,xmm3 vsubps xmm2,xmm3,xmm2 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,28 ret ; Total bytes of code 120 ``` #### System.Numerics.Tests.Perf_Matrix3x2.SubtractBenchmark ```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 3.4507009324639877 < 9.07994161443421. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 162.8644509888096 (T) = (0 -3.4932340857150206) / Math.Sqrt((0.1511169071662636 / (299)) + (0.01285987621232847 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.6325004164794338 = (9.505409644959583 - 3.4932340857150206) / 9.505409644959583 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.SubtractBenchmark() push ebp mov ebp,esp push esi sub esp,48 vzeroupper mov esi,edx lea ecx,[ebp-1C] call dword ptr ds:[0A981018]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-34] call dword ptr ds:[0A981018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [ebp-1C] vsubss xmm0,xmm0,dword ptr [ebp-34] vmovss dword ptr [ebp-4C],xmm0 vmovss xmm0,dword ptr [ebp-18] vsubss xmm0,xmm0,dword ptr [ebp-30] vmovss dword ptr [ebp-48],xmm0 vmovss xmm0,dword ptr [ebp-14] vsubss xmm0,xmm0,dword ptr [ebp-2C] vmovss dword ptr [ebp-44],xmm0 vmovss xmm0,dword ptr [ebp-10] vsubss xmm0,xmm0,dword ptr [ebp-28] vmovss dword ptr [ebp-40],xmm0 vmovss xmm0,dword ptr [ebp-0C] vsubss xmm0,xmm0,dword ptr [ebp-24] vmovss dword ptr [ebp-3C],xmm0 vmovss xmm0,dword ptr [ebp-8] vsubss xmm0,xmm0,dword ptr [ebp-20] vmovss dword ptr [ebp-38],xmm0 vmovdqu xmm0,xmmword ptr [ebp-4C] vmovdqu xmmword ptr [esi],xmm0 mov eax,[ebp-3C] mov [esi+10],eax mov eax,[ebp-38] mov [esi+14],eax lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 147 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6AE1228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.SubtractBenchmark() sub esp,50 vzeroupper vmovsd xmm0,qword ptr ds:[0AE42B90] vmovsd qword ptr [esp+48],xmm0 vmovsd xmm1,qword ptr [esp+48] vmovsd xmm2,qword ptr ds:[0AE42B98] vmovsd qword ptr [esp+40],xmm2 vmovsd xmm3,qword ptr [esp+40] vmovsd qword ptr [esp+38],xmm0 vmovsd xmm0,qword ptr [esp+38] vmovsd qword ptr [esp+30],xmm2 vmovsd xmm2,qword ptr [esp+30] vmovsd qword ptr [esp+18],xmm1 vmovsd qword ptr [esp+20],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [esp+28],xmm1 vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm2 vmovsd qword ptr [esp+10],xmm1 lea eax,[esp+18] vmovsd xmm0,qword ptr [eax] vmovsd xmm1,qword ptr [esp] vsubps xmm0,xmm0,xmm1 vmovsd xmm1,qword ptr [eax+8] vmovsd xmm2,qword ptr [esp+8] vsubps xmm1,xmm1,xmm2 vmovsd xmm2,qword ptr [eax+10] vxorps xmm3,xmm3,xmm3 vsubps xmm2,xmm2,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,50 ret ; Total bytes of code 172 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateRotationBenchmark ```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 16.0979618676791 < 21.776092859203764. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 155.4659935482536 (T) = (0 -16.093339271341737) / Math.Sqrt((0.11795907597563576 / (299)) + (0.024625333372108284 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.30357884395184415 = (23.10863064910814 - 16.093339271341737) / 23.10863064910814 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateRotationBenchmark() vzeroupper vmovss xmm0,dword ptr ds:[0B5A2354] sub esp,4 vmovss dword ptr [esp],xmm0 mov ecx,edx call dword ptr ds:[0B061168]; System.Numerics.Matrix3x2.CreateRotation(Single) ret ; Total bytes of code 28 ``` ```assembly ; System.Numerics.Matrix3x2.CreateRotation(Single) push ebp mov ebp,esp push esi sub esp,24 vzeroupper mov esi,ecx vmovss xmm0,dword ptr [ebp+8] sub esp,4 vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr ds:[0B5A24F0] sub esp,4 vmovss dword ptr [esp],xmm0 call dword ptr ds:[0B5B92D0]; System.MathF.IEEERemainder(Single, Single) fstp dword ptr [ebp-28] vmovss xmm0,dword ptr [ebp-28] vucomiss xmm0,dword ptr ds:[0B5A24F4] jbe short M01_L00 vmovss xmm1,dword ptr ds:[0B5A24F8] vucomiss xmm1,xmm0 jbe short M01_L00 vmovss xmm0,dword ptr ds:[0B5A24FC] vxorps xmm1,xmm1,xmm1 vmovss dword ptr [ebp-8],xmm0 vmovss dword ptr [ebp-0C],xmm1 jmp near ptr M01_L05 M01_L00: vucomiss xmm0,dword ptr ds:[0B5A2500] jbe short M01_L01 vmovss xmm1,dword ptr ds:[0B5A2504] vucomiss xmm1,xmm0 jbe short M01_L01 vxorps xmm0,xmm0,xmm0 vmovss xmm1,dword ptr ds:[0B5A24FC] vmovss dword ptr [ebp-8],xmm0 vmovss dword ptr [ebp-0C],xmm1 jmp near ptr M01_L05 M01_L01: vmovss xmm1,dword ptr ds:[0B5A2508] vucomiss xmm1,xmm0 ja short M01_L02 vucomiss xmm0,dword ptr ds:[0B5A250C] jbe short M01_L03 M01_L02: vmovss xmm0,dword ptr ds:[0B5A2510] vxorps xmm1,xmm1,xmm1 vmovss dword ptr [ebp-8],xmm0 vmovss dword ptr [ebp-0C],xmm1 jmp short M01_L05 M01_L03: vucomiss xmm0,dword ptr ds:[0B5A2514] jbe short M01_L04 vmovss xmm1,dword ptr ds:[0B5A2518] vucomiss xmm1,xmm0 jbe short M01_L04 vxorps xmm0,xmm0,xmm0 vmovss xmm1,dword ptr ds:[0B5A2510] vmovss dword ptr [ebp-8],xmm0 vmovss dword ptr [ebp-0C],xmm1 jmp short M01_L05 M01_L04: vmovss dword ptr [ebp+8],xmm0 sub esp,4 vmovss dword ptr [esp],xmm0 call System.MathF.Cos(Single) fstp dword ptr [ebp-28] vmovss xmm0,dword ptr [ebp-28] vmovss dword ptr [ebp-8],xmm0 push dword ptr [ebp+8] call System.MathF.Sin(Single) fstp dword ptr [ebp-28] vmovss xmm1,dword ptr [ebp-28] vmovss dword ptr [ebp-0C],xmm1 M01_L05: lea ecx,[ebp-24] call dword ptr ds:[0B061018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [ebp-8] vmovss dword ptr [ebp-24],xmm0 vmovss xmm1,dword ptr [ebp-0C] vmovss dword ptr [ebp-20],xmm1 vxorps xmm1,xmm1,ds:[0B5A2520] vmovss dword ptr [ebp-1C],xmm1 vmovss dword ptr [ebp-18],xmm0 vmovdqu xmm0,xmmword ptr [ebp-24] vmovdqu xmmword ptr [esi],xmm0 mov eax,[ebp-14] mov [esi+10],eax mov eax,[ebp-10] mov [esi+14],eax lea esp,[ebp-4] pop esi pop ebp ret 4 ; Total bytes of code 381 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateRotationBenchmark() push ebp mov ebp,esp push esi sub esp,0C vzeroupper mov esi,edx vmovss xmm0,dword ptr ds:[0B772B80] sub esp,4 vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr ds:[0B772B84] sub esp,4 vmovss dword ptr [esp],xmm0 call dword ptr ds:[0B765C60]; System.MathF.IEEERemainder(Single, Single) fstp dword ptr [ebp-10] vmovss xmm0,dword ptr [ebp-10] vmovss dword ptr [ebp-8],xmm0 vucomiss xmm0,dword ptr ds:[0B772B88] jbe short M00_L00 vmovss xmm1,dword ptr ds:[0B772B8C] vucomiss xmm1,xmm0 jbe short M00_L00 vmovss xmm0,dword ptr ds:[0B772B90] vxorps xmm1,xmm1,xmm1 jmp near ptr M00_L05 M00_L00: vucomiss xmm0,dword ptr ds:[0B772B94] jbe short M00_L01 vmovss xmm1,dword ptr ds:[0B772B98] vucomiss xmm1,xmm0 jbe short M00_L01 vxorps xmm0,xmm0,xmm0 vmovss xmm1,dword ptr ds:[0B772B90] jmp short M00_L05 M00_L01: vmovss xmm1,dword ptr ds:[0B772B9C] vucomiss xmm1,xmm0 ja short M00_L02 vucomiss xmm0,dword ptr ds:[0B772BA0] jbe short M00_L03 M00_L02: vmovss xmm0,dword ptr ds:[0B772BA4] vxorps xmm1,xmm1,xmm1 jmp short M00_L05 M00_L03: vucomiss xmm0,dword ptr ds:[0B772BA8] jbe short M00_L04 vmovss xmm1,dword ptr ds:[0B772BAC] vucomiss xmm1,xmm0 jbe short M00_L04 vxorps xmm0,xmm0,xmm0 vmovss xmm1,dword ptr ds:[0B772BA4] jmp short M00_L05 M00_L04: sub esp,4 vmovss dword ptr [esp],xmm0 call System.MathF.Cos(Single) fstp dword ptr [ebp-10] vmovss xmm0,dword ptr [ebp-10] vmovss dword ptr [ebp-0C],xmm0 push dword ptr [ebp-8] call System.MathF.Sin(Single) fstp dword ptr [ebp-10] vmovss xmm1,dword ptr [ebp-10] vmovss xmm0,dword ptr [ebp-0C] M00_L05: vmovaps xmm2,xmm0 vinsertps xmm2,xmm2,xmm1,1C vxorps xmm1,xmm1,ds:[0B772BB0] vinsertps xmm0,xmm1,xmm0,1C vmovsd qword ptr [esi],xmm2 vmovsd qword ptr [esi+8],xmm0 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esi+10],xmm0 lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 313 ``` ```assembly ; System.MathF.IEEERemainder(Single, Single) push ebp mov ebp,esp sub esp,8 vzeroupper vmovss xmm0,dword ptr [ebp+0C] vmovss xmm1,dword ptr [ebp+8] vucomiss xmm0,xmm0 jp short M01_L00 je short M01_L01 M01_L00: jmp near ptr M01_L10 M01_L01: vucomiss xmm1,xmm1 jp short M01_L02 je short M01_L03 M01_L02: vmovaps xmm0,xmm1 jmp near ptr M01_L10 M01_L03: vmovss dword ptr [ebp+0C],xmm0 sub esp,4 vmovss dword ptr [esp],xmm0 vmovss dword ptr [ebp+8],xmm1 sub esp,4 vmovss dword ptr [esp],xmm1 call CORINFO_HELP_FLTREM fstp dword ptr [ebp-8] vmovss xmm0,dword ptr [ebp-8] vmovss dword ptr [ebp-4],xmm0 vucomiss xmm0,xmm0 jp short M01_L04 je short M01_L05 M01_L04: vmovss xmm0,dword ptr ds:[0B772E80] jmp near ptr M01_L10 M01_L05: vxorps xmm1,xmm1,xmm1 vucomiss xmm0,xmm1 jp short M01_L06 jne short M01_L06 vmovss xmm1,dword ptr [ebp+0C] vmovd eax,xmm1 test eax,eax vmovss dword ptr [ebp+0C],xmm1 jge short M01_L06 vmovss xmm0,dword ptr ds:[0B772E84] jmp short M01_L10 M01_L06: push dword ptr [ebp+0C] call dword ptr ds:[0B6B7AE0]; System.Math.Sign(Single) vxorps xmm0,xmm0,xmm0 vcvtsi2ss xmm0,xmm0,eax vmovss xmm2,dword ptr [ebp+8] vandps xmm1,xmm2,ds:[0B772E90] vmulss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [ebp-4] vsubss xmm0,xmm1,xmm0 vandps xmm3,xmm0,ds:[0B772E90] vandps xmm4,xmm1,ds:[0B772E90] vucomiss xmm3,xmm4 jp short M01_L08 jne short M01_L08 vmovss xmm3,dword ptr [ebp+0C] vdivss xmm4,xmm3,xmm2 vroundss xmm2,xmm4,xmm4,4 vandps xmm2,xmm2,ds:[0B772E90] vandps xmm4,xmm4,ds:[0B772E90] vucomiss xmm2,xmm4 jbe short M01_L09 M01_L07: jmp short M01_L10 M01_L08: vucomiss xmm4,xmm3 ja short M01_L07 M01_L09: vmovaps xmm0,xmm1 M01_L10: vmovss dword ptr [ebp-8],xmm0 fld dword ptr [ebp-8] mov esp,ebp pop ebp ret 8 ; Total bytes of code 284 ``` #### System.Numerics.Tests.Perf_Matrix3x2.MultiplyByScalarBenchmark ```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.4563691310100062 < 7.296653894117616. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 127.72014635103672 (T) = (0 -1.659815007506143) / Math.Sqrt((0.02554930726987122 / (299)) + (0.03296511578631004 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.7861764248150096 = (7.762544453155585 - 1.659815007506143) / 7.762544453155585 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.MultiplyByScalarBenchmark() push esi sub esp,30 vzeroupper mov esi,edx lea ecx,[esp+18] call dword ptr ds:[0A7C1018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr ds:[0AD023D8] vmulss xmm1,xmm0,dword ptr [esp+18] vmovss dword ptr [esp],xmm1 vmulss xmm1,xmm0,dword ptr [esp+1C] vmovss dword ptr [esp+4],xmm1 vmulss xmm1,xmm0,dword ptr [esp+20] vmovss dword ptr [esp+8],xmm1 vmulss xmm1,xmm0,dword ptr [esp+24] vmovss dword ptr [esp+0C],xmm1 vmulss xmm1,xmm0,dword ptr [esp+28] vmovss dword ptr [esp+10],xmm1 vmulss xmm0,xmm0,dword ptr [esp+2C] vmovss dword ptr [esp+14],xmm0 vmovdqu xmm0,xmmword ptr [esp] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+10] mov [esi+10],eax mov eax,[esp+14] mov [esi+14],eax add esp,30 pop esi ret ; Total bytes of code 126 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6A61228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.MultiplyByScalarBenchmark() sub esp,28 vzeroupper vmovsd xmm0,qword ptr ds:[0AFAFC20] vmovsd qword ptr [esp+20],xmm0 vmovsd xmm0,qword ptr [esp+20] vmovsd xmm1,qword ptr ds:[0AFAFC28] vmovsd qword ptr [esp+18],xmm1 vmovsd xmm1,qword ptr [esp+18] vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp+10],xmm0 vmovsd xmm0,qword ptr [esp] vmovsd xmm1,qword ptr ds:[0AFAFC30] vmulps xmm0,xmm0,xmm1 vmovsd xmm2,qword ptr [esp+8] vmulps xmm2,xmm2,xmm1 vxorps xmm3,xmm3,xmm3 vmulps xmm1,xmm1,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm2 vmovsd qword ptr [edx+10],xmm1 add esp,28 ret ; Total bytes of code 120 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateRotationWithCenterBenchmark ```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 18.43815979642013 < 21.30799932447779. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 38.09194505179353 (T) = (0 -18.354083894530483) / Math.Sqrt((0.06794044415420093 / (299)) + (0.16048080282979266 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.17826353558165292 = (22.335730114547278 - 18.354083894530483) / 22.335730114547278 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateRotationWithCenterBenchmark() vzeroupper vmovss xmm0,dword ptr ds:[0AF72380] sub esp,4 vmovss dword ptr [esp],xmm0 vxorps xmm0,xmm0,xmm0 sub esp,8 vmovsd qword ptr [esp],xmm0 mov ecx,edx call dword ptr ds:[0AA31180]; System.Numerics.Matrix3x2.CreateRotation(Single, System.Numerics.Vector2) ret ; Total bytes of code 40 ``` ```assembly ; System.Numerics.Matrix3x2.CreateRotation(Single, System.Numerics.Vector2) push ebp mov ebp,esp push esi sub esp,20 vzeroupper mov esi,ecx vmovss xmm0,dword ptr [ebp+10] sub esp,4 vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr ds:[0AF72520] sub esp,4 vmovss dword ptr [esp],xmm0 call dword ptr ds:[0AF898E8]; System.MathF.IEEERemainder(Single, Single) fstp dword ptr [ebp-24] vmovss xmm0,dword ptr [ebp-24] vucomiss xmm0,dword ptr ds:[0AF72524] jbe short M01_L00 vmovss xmm1,dword ptr ds:[0AF72528] vucomiss xmm1,xmm0 jbe short M01_L00 vmovss xmm0,dword ptr ds:[0AF7252C] vxorps xmm1,xmm1,xmm1 jmp near ptr M01_L05 M01_L00: vucomiss xmm0,dword ptr ds:[0AF72530] jbe short M01_L01 vmovss xmm1,dword ptr ds:[0AF72534] vucomiss xmm1,xmm0 jbe short M01_L01 vxorps xmm0,xmm0,xmm0 vmovss xmm1,dword ptr ds:[0AF7252C] jmp near ptr M01_L05 M01_L01: vmovss xmm1,dword ptr ds:[0AF72538] vucomiss xmm1,xmm0 ja short M01_L02 vucomiss xmm0,dword ptr ds:[0AF7253C] jbe short M01_L03 M01_L02: vmovss xmm0,dword ptr ds:[0AF72540] vxorps xmm1,xmm1,xmm1 jmp short M01_L05 M01_L03: vucomiss xmm0,dword ptr ds:[0AF72544] jbe short M01_L04 vmovss xmm1,dword ptr ds:[0AF72548] vucomiss xmm1,xmm0 jbe short M01_L04 vxorps xmm0,xmm0,xmm0 vmovss xmm1,dword ptr ds:[0AF72540] jmp short M01_L05 M01_L04: vmovss dword ptr [ebp+10],xmm0 sub esp,4 vmovss dword ptr [esp],xmm0 call System.MathF.Cos(Single) fstp dword ptr [ebp-24] vmovss xmm0,dword ptr [ebp-24] vmovss dword ptr [ebp-20],xmm0 push dword ptr [ebp+10] call System.MathF.Sin(Single) fstp dword ptr [ebp-24] vmovss xmm1,dword ptr [ebp-24] vmovss xmm0,dword ptr [ebp-20] M01_L05: vmovsd xmm2,qword ptr [ebp+8] vmovaps xmm3,xmm2 vmovss xmm4,dword ptr ds:[0AF7252C] vsubss xmm4,xmm4,xmm0 vmulss xmm5,xmm3,xmm4 vmovshdup xmm2,xmm2 vmulss xmm6,xmm2,xmm1 vaddss xmm5,xmm5,xmm6 vmulss xmm2,xmm2,xmm4 vmulss xmm3,xmm3,xmm1 vsubss xmm2,xmm2,xmm3 vmovss dword ptr [ebp-1C],xmm0 vmovss dword ptr [ebp-18],xmm1 vxorps xmm1,xmm1,ds:[0AF72550] vmovss dword ptr [ebp-14],xmm1 vmovss dword ptr [ebp-10],xmm0 vmovss dword ptr [ebp-0C],xmm5 vmovss dword ptr [ebp-8],xmm2 vmovdqu xmm0,xmmword ptr [ebp-1C] vmovdqu xmmword ptr [esi],xmm0 mov eax,[ebp-0C] mov [esi+10],eax mov eax,[ebp-8] mov [esi+14],eax lea esp,[ebp-4] pop esi pop ebp ret 0C ; Total bytes of code 381 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateRotationWithCenterBenchmark() push ebp mov ebp,esp push esi sub esp,2C vzeroupper mov esi,edx vmovss xmm0,dword ptr ds:[0BA82BE0] sub esp,4 vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr ds:[0BA82BE4] sub esp,4 vmovss dword ptr [esp],xmm0 call dword ptr ds:[0BA75C60]; System.MathF.IEEERemainder(Single, Single) fstp dword ptr [ebp-30] vmovss xmm0,dword ptr [ebp-30] vmovss dword ptr [ebp-8],xmm0 vucomiss xmm0,dword ptr ds:[0BA82BE8] jbe short M00_L00 vmovss xmm1,dword ptr ds:[0BA82BEC] vucomiss xmm1,xmm0 jbe short M00_L00 vmovss xmm0,dword ptr ds:[0BA82BF0] vxorps xmm1,xmm1,xmm1 jmp near ptr M00_L05 M00_L00: vucomiss xmm0,dword ptr ds:[0BA82BF4] jbe short M00_L01 vmovss xmm1,dword ptr ds:[0BA82BF8] vucomiss xmm1,xmm0 jbe short M00_L01 vxorps xmm0,xmm0,xmm0 vmovss xmm1,dword ptr ds:[0BA82BF0] jmp short M00_L05 M00_L01: vmovss xmm1,dword ptr ds:[0BA82BFC] vucomiss xmm1,xmm0 ja short M00_L02 vucomiss xmm0,dword ptr ds:[0BA82C00] jbe short M00_L03 M00_L02: vmovss xmm0,dword ptr ds:[0BA82C04] vxorps xmm1,xmm1,xmm1 jmp short M00_L05 M00_L03: vucomiss xmm0,dword ptr ds:[0BA82C08] jbe short M00_L04 vmovss xmm1,dword ptr ds:[0BA82C0C] vucomiss xmm1,xmm0 jbe short M00_L04 vxorps xmm0,xmm0,xmm0 vmovss xmm1,dword ptr ds:[0BA82C04] jmp short M00_L05 M00_L04: sub esp,4 vmovss dword ptr [esp],xmm0 call System.MathF.Cos(Single) fstp dword ptr [ebp-30] vmovss xmm0,dword ptr [ebp-30] vmovss dword ptr [ebp-0C],xmm0 push dword ptr [ebp-8] call System.MathF.Sin(Single) fstp dword ptr [ebp-30] vmovss xmm1,dword ptr [ebp-30] vmovss xmm0,dword ptr [ebp-0C] M00_L05: vxorps xmm2,xmm2,xmm2 vmovsd qword ptr [ebp-14],xmm2 vmovsd qword ptr [ebp-1C],xmm2 vmovss xmm2,dword ptr ds:[0BA82BF0] vsubss xmm2,xmm2,xmm0 vmulss xmm3,xmm2,dword ptr [ebp-1C] vmulss xmm4,xmm1,dword ptr [ebp-10] vaddss xmm3,xmm3,xmm4 vxorps xmm4,xmm4,xmm4 vmovsd qword ptr [ebp-24],xmm4 vmovsd qword ptr [ebp-2C],xmm4 vmulss xmm2,xmm2,dword ptr [ebp-28] vmulss xmm4,xmm1,dword ptr [ebp-24] vsubss xmm2,xmm2,xmm4 vmovaps xmm4,xmm0 vinsertps xmm4,xmm4,xmm1,1C vxorps xmm1,xmm1,ds:[0BA82C10] vinsertps xmm0,xmm1,xmm0,1C vinsertps xmm1,xmm3,xmm2,1C vmovsd qword ptr [esi],xmm4 vmovsd qword ptr [esi+8],xmm0 vmovsd qword ptr [esi+10],xmm1 lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 383 ``` ```assembly ; System.MathF.IEEERemainder(Single, Single) push ebp mov ebp,esp sub esp,8 vzeroupper vmovss xmm0,dword ptr [ebp+0C] vmovss xmm1,dword ptr [ebp+8] vucomiss xmm0,xmm0 jp short M01_L00 je short M01_L01 M01_L00: jmp near ptr M01_L10 M01_L01: vucomiss xmm1,xmm1 jp short M01_L02 je short M01_L03 M01_L02: vmovaps xmm0,xmm1 jmp near ptr M01_L10 M01_L03: vmovss dword ptr [ebp+0C],xmm0 sub esp,4 vmovss dword ptr [esp],xmm0 vmovss dword ptr [ebp+8],xmm1 sub esp,4 vmovss dword ptr [esp],xmm1 call CORINFO_HELP_FLTREM fstp dword ptr [ebp-8] vmovss xmm0,dword ptr [ebp-8] vmovss dword ptr [ebp-4],xmm0 vucomiss xmm0,xmm0 jp short M01_L04 je short M01_L05 M01_L04: vmovss xmm0,dword ptr ds:[0BA82F20] jmp near ptr M01_L10 M01_L05: vxorps xmm1,xmm1,xmm1 vucomiss xmm0,xmm1 jp short M01_L06 jne short M01_L06 vmovss xmm1,dword ptr [ebp+0C] vmovd eax,xmm1 test eax,eax vmovss dword ptr [ebp+0C],xmm1 jge short M01_L06 vmovss xmm0,dword ptr ds:[0BA82F24] jmp short M01_L10 M01_L06: push dword ptr [ebp+0C] call dword ptr ds:[0B9C7AE0]; System.Math.Sign(Single) vxorps xmm0,xmm0,xmm0 vcvtsi2ss xmm0,xmm0,eax vmovss xmm2,dword ptr [ebp+8] vandps xmm1,xmm2,ds:[0BA82F30] vmulss xmm0,xmm0,xmm1 vmovss xmm1,dword ptr [ebp-4] vsubss xmm0,xmm1,xmm0 vandps xmm3,xmm0,ds:[0BA82F30] vandps xmm4,xmm1,ds:[0BA82F30] vucomiss xmm3,xmm4 jp short M01_L08 jne short M01_L08 vmovss xmm3,dword ptr [ebp+0C] vdivss xmm4,xmm3,xmm2 vroundss xmm2,xmm4,xmm4,4 vandps xmm2,xmm2,ds:[0BA82F30] vandps xmm4,xmm4,ds:[0BA82F30] vucomiss xmm2,xmm4 jbe short M01_L09 M01_L07: jmp short M01_L10 M01_L08: vucomiss xmm4,xmm3 ja short M01_L07 M01_L09: vmovaps xmm0,xmm1 M01_L10: vmovss dword ptr [ebp-8],xmm0 fld dword ptr [ebp-8] mov esp,ebp pop ebp ret 8 ; Total bytes of code 284 ``` #### System.Numerics.Tests.Perf_Matrix3x2.MultiplyByMatrixOperatorBenchmark ```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 5.372665223848155 < 15.003697538334734. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 283.13095170614434 (T) = (0 -5.339952074208428) / Math.Sqrt((0.03105599007331182 / (299)) + (0.01855123696886408 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.6600191485483403 = (15.706625980280219 - 5.339952074208428) / 15.706625980280219 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.MultiplyByMatrixOperatorBenchmark() push ebp mov ebp,esp push esi sub esp,30 vzeroupper mov esi,edx lea ecx,[ebp-1C] call dword ptr ds:[0ACB1018]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-34] call dword ptr ds:[0ACB1018]; System.Numerics.Matrix3x2.get_Identity() sub esp,18 vmovdqu xmm0,xmmword ptr [ebp-1C] vmovdqu xmmword ptr [esp],xmm0 vmovq xmm0,qword ptr [ebp-0C] vmovq qword ptr [esp+10],xmm0 sub esp,18 vmovdqu xmm0,xmmword ptr [ebp-34] vmovdqu xmmword ptr [esp],xmm0 vmovq xmm0,qword ptr [ebp-24] vmovq qword ptr [esp+10],xmm0 mov ecx,esi call dword ptr ds:[0ACB10F0]; System.Numerics.Matrix3x2.op_Multiply(System.Numerics.Matrix3x2, System.Numerics.Matrix3x2) lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 92 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6E71228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ```assembly ; System.Numerics.Matrix3x2.op_Multiply(System.Numerics.Matrix3x2, System.Numerics.Matrix3x2) push ebp mov ebp,esp sub esp,18 vzeroupper vmovss xmm0,dword ptr [ebp+20] vmovss xmm1,dword ptr [ebp+8] vmulss xmm2,xmm0,xmm1 vmovss xmm3,dword ptr [ebp+24] vmovss xmm4,dword ptr [ebp+10] vmulss xmm5,xmm3,xmm4 vaddss xmm2,xmm2,xmm5 vmovss dword ptr [ebp-18],xmm2 vmovss xmm2,dword ptr [ebp+0C] vmulss xmm0,xmm0,xmm2 vmovss xmm5,dword ptr [ebp+14] vmulss xmm3,xmm3,xmm5 vaddss xmm0,xmm0,xmm3 vmovss dword ptr [ebp-14],xmm0 vmovss xmm0,dword ptr [ebp+28] vmulss xmm3,xmm0,xmm1 vmovss xmm6,dword ptr [ebp+2C] vmulss xmm7,xmm6,xmm4 vaddss xmm3,xmm3,xmm7 vmovss dword ptr [ebp-10],xmm3 vmulss xmm0,xmm0,xmm2 vmulss xmm3,xmm6,xmm5 vaddss xmm0,xmm0,xmm3 vmovss dword ptr [ebp-0C],xmm0 vmovss xmm0,dword ptr [ebp+30] vmulss xmm1,xmm0,xmm1 vmovss xmm3,dword ptr [ebp+34] vmulss xmm4,xmm3,xmm4 vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [ebp+18] vmovss dword ptr [ebp-8],xmm1 vmulss xmm0,xmm0,xmm2 vmulss xmm1,xmm3,xmm5 vaddss xmm0,xmm0,xmm1 vaddss xmm0,xmm0,dword ptr [ebp+1C] vmovss dword ptr [ebp-4],xmm0 vmovdqu xmm0,xmmword ptr [ebp-18] vmovdqu xmmword ptr [ecx],xmm0 mov eax,[ebp-8] mov [ecx+10],eax mov eax,[ebp-4] mov [ecx+14],eax mov esp,ebp pop ebp ret 30 ; Total bytes of code 198 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.MultiplyByMatrixOperatorBenchmark() sub esp,58 vzeroupper vmovsd xmm0,qword ptr ds:[0B862C10] vmovsd qword ptr [esp+50],xmm0 vmovsd xmm1,qword ptr [esp+50] vmovsd xmm2,qword ptr ds:[0B862C18] vmovsd qword ptr [esp+48],xmm2 vmovsd xmm3,qword ptr [esp+48] vmovsd qword ptr [esp+40],xmm0 vmovsd xmm0,qword ptr [esp+40] vmovsd qword ptr [esp+38],xmm2 vmovsd xmm2,qword ptr [esp+38] vmovsd qword ptr [esp+20],xmm1 vmovsd qword ptr [esp+28],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [esp+30],xmm1 vmovsd qword ptr [esp+8],xmm0 vmovsd qword ptr [esp+10],xmm2 vmovsd qword ptr [esp+18],xmm1 lea eax,[esp+20] vmovss xmm0,dword ptr [eax] vmovss xmm1,dword ptr [esp+8] vmulss xmm2,xmm0,xmm1 vmovss xmm3,dword ptr [eax+4] vmovss xmm4,dword ptr [esp+10] vmulss xmm5,xmm3,xmm4 vaddss xmm2,xmm2,xmm5 vmovss xmm5,dword ptr [esp+0C] vmulss xmm0,xmm0,xmm5 vmovss xmm6,dword ptr [esp+14] vmulss xmm3,xmm3,xmm6 vaddss xmm0,xmm0,xmm3 vinsertps xmm0,xmm2,xmm0,1C vmovsd qword ptr [esp],xmm0 vmovss xmm2,dword ptr [eax+8] vmulss xmm3,xmm2,xmm1 vmovss xmm7,dword ptr [eax+0C] vmulss xmm0,xmm7,xmm4 vaddss xmm0,xmm3,xmm0 vmulss xmm2,xmm2,xmm5 vmulss xmm3,xmm7,xmm6 vaddss xmm2,xmm2,xmm3 vinsertps xmm0,xmm0,xmm2,1C vmovss xmm2,dword ptr [eax+10] vmulss xmm1,xmm2,xmm1 vmovss xmm3,dword ptr [eax+14] vmulss xmm4,xmm3,xmm4 vaddss xmm1,xmm1,xmm4 vaddss xmm1,xmm1,dword ptr [esp+18] vmulss xmm2,xmm2,xmm5 vmulss xmm3,xmm3,xmm6 vaddss xmm2,xmm2,xmm3 vaddss xmm2,xmm2,dword ptr [esp+1C] vinsertps xmm1,xmm1,xmm2,1C vmovsd xmm2,qword ptr [esp] vmovsd qword ptr [edx],xmm2 vmovsd qword ptr [edx+8],xmm0 vmovsd qword ptr [edx+10],xmm1 add esp,58 ret ; Total bytes of code 297 ``` #### System.Numerics.Tests.Perf_Matrix3x2.NegationOperatorBenchmark ```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.3983988682488089 < 7.294260546352489. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 119.11777190597688 (T) = (0 -1.5594300135710708) / Math.Sqrt((0.026230232799039264 / (299)) + (0.03944894507167672 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.7992798643464494 = (7.769175765518096 - 1.5594300135710708) / 7.769175765518096 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.NegationOperatorBenchmark() push esi sub esp,30 vzeroupper mov esi,edx lea ecx,[esp+18] call dword ptr ds:[0A941018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [esp+18] vxorps xmm0,xmm0,ds:[0AE82400] vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp+1C] vxorps xmm0,xmm0,ds:[0AE82400] vmovss dword ptr [esp+4],xmm0 vmovss xmm0,dword ptr [esp+20] vxorps xmm0,xmm0,ds:[0AE82400] vmovss dword ptr [esp+8],xmm0 vmovss xmm0,dword ptr [esp+24] vxorps xmm0,xmm0,ds:[0AE82400] vmovss dword ptr [esp+0C],xmm0 vmovss xmm0,dword ptr [esp+28] vxorps xmm0,xmm0,ds:[0AE82400] vmovss dword ptr [esp+10],xmm0 vmovss xmm0,dword ptr [esp+2C] vxorps xmm0,xmm0,ds:[0AE82400] vmovss dword ptr [esp+14],xmm0 vmovdqu xmm0,xmmword ptr [esp] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+10] mov [esi+10],eax mov eax,[esp+14] mov [esi+14],eax add esp,30 pop esi ret ; Total bytes of code 166 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6A91228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.NegationOperatorBenchmark() sub esp,28 vzeroupper vmovsd xmm0,qword ptr ds:[0B452AD0] vmovsd qword ptr [esp+20],xmm0 vmovsd xmm0,qword ptr [esp+20] vmovsd xmm1,qword ptr ds:[0B452AD8] vmovsd qword ptr [esp+18],xmm1 vmovsd xmm1,qword ptr [esp+18] vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp+10],xmm0 vmovsd xmm0,qword ptr [esp] vxorps xmm1,xmm1,xmm1 vsubps xmm0,xmm1,xmm0 vmovsd xmm1,qword ptr [esp+8] vxorps xmm2,xmm2,xmm2 vsubps xmm1,xmm2,xmm1 vxorps xmm3,xmm3,xmm3 vsubps xmm2,xmm3,xmm2 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,28 ret ; Total bytes of code 120 ``` #### System.Numerics.Tests.Perf_Matrix3x2.SubtractOperatorBenchmark ```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 3.88469459974706 < 9.08325017314001. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 116.19368578455898 (T) = (0 -3.539852190050767) / Math.Sqrt((0.03286232024538485 / (299)) + (0.037629145801566025 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.626820337400225 = (9.485651402839608 - 3.539852190050767) / 9.485651402839608 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.SubtractOperatorBenchmark() push ebp mov ebp,esp push esi sub esp,48 vzeroupper mov esi,edx lea ecx,[ebp-1C] call dword ptr ds:[0B681018]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-34] call dword ptr ds:[0B681018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [ebp-1C] vsubss xmm0,xmm0,dword ptr [ebp-34] vmovss dword ptr [ebp-4C],xmm0 vmovss xmm0,dword ptr [ebp-18] vsubss xmm0,xmm0,dword ptr [ebp-30] vmovss dword ptr [ebp-48],xmm0 vmovss xmm0,dword ptr [ebp-14] vsubss xmm0,xmm0,dword ptr [ebp-2C] vmovss dword ptr [ebp-44],xmm0 vmovss xmm0,dword ptr [ebp-10] vsubss xmm0,xmm0,dword ptr [ebp-28] vmovss dword ptr [ebp-40],xmm0 vmovss xmm0,dword ptr [ebp-0C] vsubss xmm0,xmm0,dword ptr [ebp-24] vmovss dword ptr [ebp-3C],xmm0 vmovss xmm0,dword ptr [ebp-8] vsubss xmm0,xmm0,dword ptr [ebp-20] vmovss dword ptr [ebp-38],xmm0 vmovdqu xmm0,xmmword ptr [ebp-4C] vmovdqu xmmword ptr [esi],xmm0 mov eax,[ebp-3C] mov [esi+10],eax mov eax,[ebp-38] mov [esi+14],eax lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 147 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7881228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.SubtractOperatorBenchmark() sub esp,50 vzeroupper vmovsd xmm0,qword ptr ds:[0B352B90] vmovsd qword ptr [esp+48],xmm0 vmovsd xmm1,qword ptr [esp+48] vmovsd xmm2,qword ptr ds:[0B352B98] vmovsd qword ptr [esp+40],xmm2 vmovsd xmm3,qword ptr [esp+40] vmovsd qword ptr [esp+38],xmm0 vmovsd xmm0,qword ptr [esp+38] vmovsd qword ptr [esp+30],xmm2 vmovsd xmm2,qword ptr [esp+30] vmovsd qword ptr [esp+18],xmm1 vmovsd qword ptr [esp+20],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [esp+28],xmm1 vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm2 vmovsd qword ptr [esp+10],xmm1 lea eax,[esp+18] vmovsd xmm0,qword ptr [eax] vmovsd xmm1,qword ptr [esp] vsubps xmm0,xmm0,xmm1 vmovsd xmm1,qword ptr [eax+8] vmovsd xmm2,qword ptr [esp+8] vsubps xmm1,xmm1,xmm2 vmovsd xmm2,qword ptr [eax+10] vxorps xmm3,xmm3,xmm3 vsubps xmm2,xmm2,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,50 ret ; Total bytes of code 172 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromVectorWithCenterBenchmark ```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.3599192839732841 < 7.331682882337715. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 190.81894722158407 (T) = (0 -0.3611892974485958) / Math.Sqrt((0.0865066150518855 / (299)) + (0.01878746700262224 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9540113741281716 = (7.85388322876271 - 0.3611892974485958) / 7.85388322876271 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromVectorWithCenterBenchmark() push esi sub esp,28 vzeroupper mov esi,edx vmovsd xmm0,qword ptr ds:[0B2E23E8] vmovsd qword ptr [esp+20],xmm0 lea ecx,[esp+8] call dword ptr ds:[0ADA1018]; System.Numerics.Matrix3x2.get_Identity() vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp],xmm0 vmovss xmm0,dword ptr ds:[0B2E23E8] vsubss xmm1,xmm0,dword ptr [esp+20] vmulss xmm1,xmm1,dword ptr [esp] vsubss xmm0,xmm0,dword ptr [esp+24] vmulss xmm0,xmm0,dword ptr [esp+4] vmovss xmm2,dword ptr [esp+20] vmovss dword ptr [esp+8],xmm2 vmovss xmm2,dword ptr [esp+24] vmovss dword ptr [esp+14],xmm2 vmovss dword ptr [esp+18],xmm1 vmovss dword ptr [esp+1C],xmm0 vmovdqu xmm0,xmmword ptr [esp+8] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+18] mov [esi+10],eax mov eax,[esp+1C] mov [esi+14],eax add esp,28 pop esi ret ; Total bytes of code 138 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7031228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromVectorWithCenterBenchmark() sub esp,8 vzeroupper vmovsd xmm0,qword ptr ds:[0B1C2AB0] vmovsd qword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp] vinsertps xmm0,xmm0,xmm0,3E vmovss xmm1,dword ptr [esp+4] vinsertps xmm1,xmm1,xmm1,1D vmovsd xmm2,qword ptr [esp] vmovsd xmm3,qword ptr ds:[0B1C2AB8] vsubps xmm2,xmm3,xmm2 vxorps xmm3,xmm3,xmm3 vmulps xmm2,xmm2,xmm3 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vmovsd qword ptr [edx+10],xmm2 add esp,8 ret ; Total bytes of code 85 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarBenchmark ```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.35718382004756993 < 6.717619308641627. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 146.62822264211394 (T) = (0 -0.40365928893225295) / Math.Sqrt((0.0037375341294329837 / (299)) + (0.030633112536567 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9427446042876767 = (7.050152809359962 - 0.40365928893225295) / 7.050152809359962 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarBenchmark() push esi sub esp,18 vzeroupper mov esi,edx lea ecx,[esp] call dword ptr ds:[0A871018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr ds:[0ADB237C] vmovss dword ptr [esp],xmm0 vmovss dword ptr [esp+0C],xmm0 vmovdqu xmm0,xmmword ptr [esp] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+10] mov [esi+10],eax mov eax,[esp+14] mov [esi+14],eax add esp,18 pop esi ret ; Total bytes of code 65 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6AB1228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromScalarBenchmark() sub esp,10 vzeroupper vmovsd xmm0,qword ptr ds:[0B822A80] vmovsd qword ptr [esp+8],xmm0 vmovsd xmm0,qword ptr [esp+8] vmovsd xmm1,qword ptr ds:[0B822A88] vmovsd qword ptr [esp],xmm1 vmovsd xmm1,qword ptr [esp] vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [edx+10],xmm0 add esp,10 ret ; Total bytes of code 66 ``` #### System.Numerics.Tests.Perf_Matrix3x2.LerpBenchmark ```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 2.542826422640187 < 14.109992372124065. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 126.85702089512691 (T) = (0 -2.2790262407512794) / Math.Sqrt((0.02654180088868296 / (299)) + (0.15115449698652375 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.8487648296063877 = (15.069419598759799 - 2.2790262407512794) / 15.069419598759799 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.LerpBenchmark() push ebp mov ebp,esp push esi sub esp,30 vzeroupper mov esi,edx vxorps xmm0,xmm0,xmm0 vmovdqu xmmword ptr [ebp-1C],xmm0 vmovq qword ptr [ebp-0C],xmm0 lea ecx,[ebp-34] call dword ptr ds:[0A8C1018]; System.Numerics.Matrix3x2.get_Identity() sub esp,18 vmovdqu xmm0,xmmword ptr [ebp-1C] vmovdqu xmmword ptr [esp],xmm0 vmovq xmm0,qword ptr [ebp-0C] vmovq qword ptr [esp+10],xmm0 sub esp,18 vmovdqu xmm0,xmmword ptr [ebp-34] vmovdqu xmmword ptr [esp],xmm0 vmovq xmm0,qword ptr [ebp-24] vmovq qword ptr [esp+10],xmm0 vmovss xmm0,dword ptr ds:[0AE0242C] sub esp,4 vmovss dword ptr [esp],xmm0 mov ecx,esi call dword ptr ds:[0A8C12A0]; System.Numerics.Matrix3x2.Lerp(System.Numerics.Matrix3x2, System.Numerics.Matrix3x2, Single) lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 113 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6B11228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ```assembly ; System.Numerics.Matrix3x2.Lerp(System.Numerics.Matrix3x2, System.Numerics.Matrix3x2, Single) push ebp mov ebp,esp sub esp,18 vzeroupper vmovss xmm0,dword ptr [ebp+8] vmovss xmm1,dword ptr [ebp+0C] vmovss xmm2,dword ptr [ebp+24] vsubss xmm1,xmm1,xmm2 vmulss xmm1,xmm1,xmm0 vaddss xmm1,xmm1,xmm2 vmovss dword ptr [ebp-18],xmm1 vmovss xmm1,dword ptr [ebp+10] vmovss xmm2,dword ptr [ebp+28] vsubss xmm1,xmm1,xmm2 vmulss xmm1,xmm1,xmm0 vaddss xmm1,xmm1,xmm2 vmovss dword ptr [ebp-14],xmm1 vmovss xmm1,dword ptr [ebp+14] vmovss xmm2,dword ptr [ebp+2C] vsubss xmm1,xmm1,xmm2 vmulss xmm1,xmm1,xmm0 vaddss xmm1,xmm1,xmm2 vmovss dword ptr [ebp-10],xmm1 vmovss xmm1,dword ptr [ebp+18] vmovss xmm2,dword ptr [ebp+30] vsubss xmm1,xmm1,xmm2 vmulss xmm1,xmm1,xmm0 vaddss xmm1,xmm1,xmm2 vmovss dword ptr [ebp-0C],xmm1 vmovss xmm1,dword ptr [ebp+1C] vmovss xmm2,dword ptr [ebp+34] vsubss xmm1,xmm1,xmm2 vmulss xmm1,xmm1,xmm0 vaddss xmm1,xmm1,xmm2 vmovss dword ptr [ebp-8],xmm1 vmovss xmm1,dword ptr [ebp+20] vmovss xmm2,dword ptr [ebp+38] vsubss xmm1,xmm1,xmm2 vmulss xmm0,xmm1,xmm0 vaddss xmm0,xmm0,xmm2 vmovss dword ptr [ebp-4],xmm0 vmovdqu xmm0,xmmword ptr [ebp-18] vmovdqu xmmword ptr [ecx],xmm0 mov eax,[ebp-8] mov [ecx+10],eax mov eax,[ebp-4] mov [ecx+14],eax mov esp,ebp pop ebp ret 34 ; Total bytes of code 203 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.LerpBenchmark() sub esp,40 vzeroupper vmovsd xmm0,qword ptr ds:[0B352B70] vmovsd qword ptr [esp+38],xmm0 vmovsd xmm0,qword ptr [esp+38] vmovsd xmm1,qword ptr ds:[0B352B78] vmovsd qword ptr [esp+30],xmm1 vmovsd xmm1,qword ptr [esp+30] vxorps xmm2,xmm2,xmm2 vmovdqu xmmword ptr [esp+18],xmm2 vmovq qword ptr [esp+28],xmm2 vmovsd qword ptr [esp],xmm0 vmovsd qword ptr [esp+8],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [esp+10],xmm0 lea eax,[esp+18] vmovsd xmm0,qword ptr [eax] vmovsd xmm1,qword ptr ds:[0B352B80] vmulps xmm0,xmm0,xmm1 vmovsd xmm2,qword ptr [esp] vmulps xmm2,xmm2,xmm1 vaddps xmm0,xmm0,xmm2 vmovsd xmm2,qword ptr [eax+8] vmulps xmm2,xmm2,xmm1 vmovsd xmm3,qword ptr [esp+8] vmulps xmm3,xmm3,xmm1 vaddps xmm2,xmm2,xmm3 vmovsd xmm3,qword ptr [eax+10] vmulps xmm3,xmm3,xmm1 vxorps xmm4,xmm4,xmm4 vmulps xmm1,xmm1,xmm4 vaddps xmm1,xmm3,xmm1 vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm2 vmovsd qword ptr [edx+10],xmm1 add esp,40 ret ; Total bytes of code 178 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromVectorBenchmark ```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.12531114176028704 < 7.011409515986367. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 391.8020620861858 (T) = (0 -0.10214588381948335) / Math.Sqrt((0.07597394240649918 / (299)) + (0.0015337807273982697 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.9863773498352463 = (7.49823878497359 - 0.10214588381948335) / 7.49823878497359 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromVectorBenchmark() push esi sub esp,20 vzeroupper mov esi,edx vmovsd xmm0,qword ptr ds:[0B9A2390] vmovsd qword ptr [esp+18],xmm0 lea ecx,[esp] call dword ptr ds:[0B461018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr [esp+18] vmovss dword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp+1C] vmovss dword ptr [esp+0C],xmm0 vmovdqu xmm0,xmmword ptr [esp] vmovdqu xmmword ptr [esi],xmm0 mov eax,[esp+10] mov [esi+10],eax mov eax,[esp+14] mov [esi+14],eax add esp,20 pop esi ret ; Total bytes of code 83 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7621228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateScaleFromVectorBenchmark() sub esp,8 vzeroupper vmovsd xmm0,qword ptr ds:[0B082A78] vmovsd qword ptr [esp],xmm0 vmovss xmm0,dword ptr [esp] vinsertps xmm0,xmm0,xmm0,3E vinsertps xmm1,xmm1,dword ptr [esp+4],1D vmovsd qword ptr [edx],xmm0 vmovsd qword ptr [edx+8],xmm1 vxorps xmm0,xmm0,xmm0 vmovsd qword ptr [edx+10],xmm0 add esp,8 ret ; Total bytes of code 60 ``` #### System.Numerics.Tests.Perf_Matrix3x2.InequalityOperatorBenchmark ```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 3.6578289704087132 < 7.363192647785829. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 85.56640478360666 (T) = (0 -3.6324095902934324) / Math.Sqrt((0.42649455704530376 / (299)) + (0.011910850664332276 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.5260703467502093 = (7.66444885941527 - 3.6324095902934324) / 7.66444885941527 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.InequalityOperatorBenchmark() push ebp mov ebp,esp sub esp,60 vzeroupper lea ecx,[ebp-18] call dword ptr ds:[0B067BE8]; System.Numerics.Matrix3x2.get_Identity() lea ecx,[ebp-30] call dword ptr ds:[0B067BE8]; System.Numerics.Matrix3x2.get_Identity() vmovdqu xmm0,xmmword ptr [ebp-18] vmovdqu xmmword ptr [ebp-48],xmm0 mov eax,[ebp-8] mov [ebp-38],eax mov eax,[ebp-4] mov [ebp-34],eax vmovdqu xmm0,xmmword ptr [ebp-30] vmovdqu xmmword ptr [ebp-60],xmm0 mov eax,[ebp-20] mov [ebp-50],eax mov eax,[ebp-1C] mov [ebp-4C],eax vmovss xmm0,dword ptr [ebp-48] vucomiss xmm0,dword ptr [ebp-60] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-3C] vucomiss xmm0,dword ptr [ebp-54] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-44] vucomiss xmm0,dword ptr [ebp-5C] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-40] vucomiss xmm0,dword ptr [ebp-58] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-38] vucomiss xmm0,dword ptr [ebp-50] jp short M00_L01 jne short M00_L01 vmovss xmm0,dword ptr [ebp-34] xor eax,eax vucomiss xmm0,dword ptr [ebp-4C] setnp al jp short M00_L00 sete al M00_L00: jmp short M00_L02 M00_L01: xor eax,eax M00_L02: test eax,eax sete al movzx eax,al mov esp,ebp pop ebp ret ; Total bytes of code 177 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[6CC1228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.InequalityOperatorBenchmark() push ebp mov ebp,esp sub esp,50 vzeroupper vmovsd xmm0,qword ptr ds:[0B182A08] vmovsd qword ptr [ebp-8],xmm0 vmovsd xmm1,qword ptr [ebp-8] vmovsd xmm2,qword ptr ds:[0B182A10] vmovsd qword ptr [ebp-10],xmm2 vmovsd xmm3,qword ptr [ebp-10] vmovsd qword ptr [ebp-18],xmm0 vmovsd xmm0,qword ptr [ebp-18] vmovsd qword ptr [ebp-20],xmm2 vmovsd xmm2,qword ptr [ebp-20] vmovsd qword ptr [ebp-38],xmm1 vmovsd qword ptr [ebp-30],xmm3 vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [ebp-28],xmm1 vmovsd qword ptr [ebp-50],xmm0 vmovsd qword ptr [ebp-48],xmm2 vmovsd qword ptr [ebp-40],xmm1 lea eax,[ebp-38] vmovsd xmm0,qword ptr [eax] vmovsd xmm1,qword ptr [ebp-50] vcmpeqps xmm0,xmm0,xmm1 vmovmskps edx,xmm0 and edx,3 cmp edx,3 jne short M00_L00 vmovsd xmm0,qword ptr [eax+8] vmovsd xmm1,qword ptr [ebp-48] vcmpeqps xmm0,xmm0,xmm1 vmovmskps edx,xmm0 and edx,3 cmp edx,3 jne short M00_L00 vmovsd xmm0,qword ptr [eax+10] vxorps xmm1,xmm1,xmm1 vcmpeqps xmm0,xmm0,xmm1 vmovmskps eax,xmm0 and eax,3 cmp eax,3 setne al movzx eax,al jmp short M00_L01 M00_L00: mov eax,1 M00_L01: mov esp,ebp pop ebp ret ; Total bytes of code 196 ``` #### System.Numerics.Tests.Perf_Matrix3x2.CreateSkewFromScalarXYWithCenterBenchmark ```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 42.02792644633662 < 42.542327343415224. IsChangePoint: Marked as a change because one of 1/6/2023 2:04:15 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsImprovementStdDev: Marked as improvement because 21.4126559199165 (T) = (0 -42.049802814348126) / Math.Sqrt((6.151759601131703 / (299)) + (0.10457851403434928 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.07792963662666672 = (45.60368111226535 - 42.049802814348126) / 45.60368111226535 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateSkewFromScalarXYWithCenterBenchmark() push ebp mov ebp,esp push esi sub esp,28 vzeroupper mov esi,edx lea ecx,[ebp-1C] call dword ptr ds:[0B191018]; System.Numerics.Matrix3x2.get_Identity() vmovss xmm0,dword ptr ds:[0B6D2410] sub esp,4 vmovss dword ptr [esp],xmm0 call System.MathF.Tan(Single) fstp dword ptr [ebp-2C] vmovss xmm0,dword ptr [ebp-2C] vmovss dword ptr [ebp-20],xmm0 vmovss xmm1,dword ptr ds:[0B6D2414] sub esp,4 vmovss dword ptr [esp],xmm1 call System.MathF.Tan(Single) fstp dword ptr [ebp-2C] vmovss xmm0,dword ptr [ebp-2C] vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [ebp-28],xmm1 vmovss xmm1,dword ptr [ebp-24] vxorps xmm1,xmm1,ds:[0B6D2420] vmovss xmm2,dword ptr [ebp-20] vmulss xmm1,xmm1,xmm2 vmovss xmm3,dword ptr [ebp-28] vxorps xmm3,xmm3,ds:[0B6D2420] vmulss xmm3,xmm3,xmm0 vmovss dword ptr [ebp-18],xmm0 vmovss dword ptr [ebp-14],xmm2 vmovss dword ptr [ebp-0C],xmm1 vmovss dword ptr [ebp-8],xmm3 vmovdqu xmm0,xmmword ptr [ebp-1C] vmovdqu xmmword ptr [esi],xmm0 mov eax,[ebp-0C] mov [esi+10],eax mov eax,[ebp-8] mov [esi+14],eax lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 179 ``` ```assembly ; System.Numerics.Matrix3x2.get_Identity() vzeroupper mov eax,ds:[7451228] vmovdqu xmm0,xmmword ptr [eax+4] vmovdqu xmmword ptr [ecx],xmm0 mov edx,[eax+14] mov [ecx+10],edx mov edx,[eax+18] mov [ecx+14],edx ret ; Total bytes of code 30 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix3x2.CreateSkewFromScalarXYWithCenterBenchmark() push ebp mov ebp,esp push esi sub esp,10 vzeroupper mov esi,edx vmovss xmm0,dword ptr ds:[0AF02B10] sub esp,4 vmovss dword ptr [esp],xmm0 call System.MathF.Tan(Single) fstp dword ptr [ebp-14] vmovss xmm0,dword ptr [ebp-14] vmovss dword ptr [ebp-8],xmm0 vmovss xmm1,dword ptr ds:[0AF02B14] sub esp,4 vmovss dword ptr [esp],xmm1 call System.MathF.Tan(Single) fstp dword ptr [ebp-14] vmovss xmm0,dword ptr [ebp-14] vxorps xmm1,xmm1,xmm1 vmovsd qword ptr [ebp-10],xmm1 vmovss xmm1,dword ptr [ebp-0C] vxorps xmm1,xmm1,ds:[0AF02B20] vmovss xmm2,dword ptr [ebp-8] vmulss xmm1,xmm1,xmm2 vmovss xmm3,dword ptr [ebp-10] vxorps xmm3,xmm3,ds:[0AF02B20] vmulss xmm3,xmm3,xmm0 vmovupd xmm4,ds:[0AF02B30] vinsertps xmm0,xmm4,xmm0,1C vinsertps xmm2,xmm2,dword ptr ds:[0AF02B30],1C vinsertps xmm1,xmm1,xmm3,1C vmovsd qword ptr [esi],xmm0 vmovsd qword ptr [esi+8],xmm2 vmovsd qword ptr [esi+10],xmm1 lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 173 ``` ### 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)