MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] [EgorBo] Mark some structs as byreflike #523

Open MihuBot opened 3 months ago

MihuBot commented 3 months ago

Job completed in 14 minutes. https://github.com/dotnet/runtime/pull/104870

Diffs

Found 267 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39113879
Total bytes of diff: 39113497
Total bytes of delta: -382 (-0.00 % of base)
Total relative delta: -6.52
    diff is an improvement.
    relative diff is an improvement.

Top file improvements (bytes):
        -321 : System.Private.CoreLib.dasm (-0.00 % of base)
         -26 : System.Security.Cryptography.dasm (-0.00 % of base)
         -15 : System.Text.RegularExpressions.dasm (-0.00 % of base)
         -11 : System.Net.NetworkInformation.dasm (-0.02 % of base)
          -9 : System.Reflection.Metadata.dasm (-0.00 % of base)

5 total files with Code Size differences (5 improved, 0 regressed), 254 unchanged.

Top method improvements (bytes):
         -41 (-77.36 % of base) : System.Private.CoreLib.dasm - System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts)
         -41 (-77.36 % of base) : System.Private.CoreLib.dasm - System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts)
         -36 (-7.07 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String (FullOpts)
         -24 (-5.63 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this (FullOpts)
         -13 (-36.11 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this (FullOpts)
         -11 (-5.61 % of base) : System.Net.NetworkInformation.dasm - System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this (FullOpts)
         -10 (-35.71 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts)
         -10 (-27.03 % of base) : System.Private.CoreLib.dasm - System.ParsingInfo:.ctor(System.Globalization.Calendar):this (FullOpts)
         -10 (-38.46 % of base) : System.Private.CoreLib.dasm - System.TimeZoneInfo+StringSerializer:.ctor(System.String):this (FullOpts)
          -9 (-7.14 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (FullOpts)
          -9 (-69.23 % of base) : System.Private.CoreLib.dasm - System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:<GetPropertyGetter>b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:<GetPropertyGetter>b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:<GetPropertyGetter>b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:<GetPropertyGetter>b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:<GetPropertyGetter>b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:<GetPropertyGetter>b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:<GetPropertyGetter>b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:<GetPropertyGetter>b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-9.20 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility+UrlDecoder:AddByte(ubyte):this (FullOpts)
          -8 (-7.55 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility+UrlDecoder:AddChar(ushort):this (FullOpts)
          -8 (-8.08 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility+UrlDecoder:FlushBytes():this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_1(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_12(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_2(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_3(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_4(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_5(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.62 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_6(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.62 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_7(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.14 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_14[System.__Canon]:<GetPropertyGetter>b__14(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -3 (-42.86 % of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext+NullableAttributeStateParser:.ctor(System.Object):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[double]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[double]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[int]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[int]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[long]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[long]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[short]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[short]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[ubyte]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[ubyte]):this (FullOpts)
          -2 (-0.97 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.XmlKeyHelper:ParseDocument(System.String):System.Security.Cryptography.XmlKeyHelper+ParseState (FullOpts)

Top method improvements (percentages):
         -41 (-77.36 % of base) : System.Private.CoreLib.dasm - System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts)
         -41 (-77.36 % of base) : System.Private.CoreLib.dasm - System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts)
          -9 (-69.23 % of base) : System.Private.CoreLib.dasm - System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) (FullOpts)
          -3 (-42.86 % of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext+NullableAttributeStateParser:.ctor(System.Object):this (FullOpts)
         -10 (-38.46 % of base) : System.Private.CoreLib.dasm - System.TimeZoneInfo+StringSerializer:.ctor(System.String):this (FullOpts)
         -13 (-36.11 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this (FullOpts)
         -10 (-35.71 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts)
         -10 (-27.03 % of base) : System.Private.CoreLib.dasm - System.ParsingInfo:.ctor(System.Globalization.Calendar):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[double]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[double]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[int]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[int]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[long]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[long]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[short]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[short]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[ubyte]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[ubyte]):this (FullOpts)
          -8 (-9.20 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility+UrlDecoder:AddByte(ubyte):this (FullOpts)
          -8 (-8.08 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility+UrlDecoder:FlushBytes():this (FullOpts)
          -8 (-7.55 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility+UrlDecoder:AddChar(ushort):this (FullOpts)
          -9 (-7.14 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (FullOpts)
         -36 (-7.07 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String (FullOpts)
         -24 (-5.63 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this (FullOpts)
         -11 (-5.61 % of base) : System.Net.NetworkInformation.dasm - System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:<GetPropertyGetter>b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:<GetPropertyGetter>b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:<GetPropertyGetter>b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:<GetPropertyGetter>b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:<GetPropertyGetter>b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:<GetPropertyGetter>b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:<GetPropertyGetter>b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:<GetPropertyGetter>b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.62 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_6(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.62 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_7(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_1(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_2(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_3(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_4(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_5(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_12(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.14 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_14[System.__Canon]:<GetPropertyGetter>b__14(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -2 (-0.97 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.XmlKeyHelper:ParseDocument(System.String):System.Security.Cryptography.XmlKeyHelper+ParseState (FullOpts)

39 total methods with Code Size differences (39 improved, 0 regressed), 230439 unchanged.

--------------------------------------------------------------------------------

Artifacts:

MihuBot commented 3 months ago

Top method improvements

-41 (-77.36 % of base) - System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this ```diff ; Assembly listing for method System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 5, 5 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 5, 5 ) byref -> rdi this single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def -; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def -; V03 arg3 [V03,T03] ( 3, 3 ) ref -> r14 class-hnd single-def +; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def +; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rcx class-hnd single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M26553_IG01: - push r15 - push r14 - push rbx - mov rbx, rdi - mov r15, rdx - mov r14, rcx - ;; size=14 bbWeight=1 PerfScore 3.75 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M26553_IG02: - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x08] - mov rsi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x10] - mov rsi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF - nop - ;; size=33 bbWeight=1 PerfScore 5.00 + mov gword ptr [rdi], rsi + mov gword ptr [rdi+0x08], rdx + mov gword ptr [rdi+0x10], rcx + ;; size=11 bbWeight=1 PerfScore 3.00 G_M26553_IG03: - pop rbx - pop r14 - pop r15 ret - ;; size=6 bbWeight=1 PerfScore 2.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 53, prolog size 5, PerfScore 11.25, instruction count 19, allocated bytes for code 53 (MethodHash=6b259846) for method System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts) +; Total bytes of code 12, prolog size 0, PerfScore 4.00, instruction count 4, allocated bytes for code 12 (MethodHash=6b259846) for method System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts) ```
-41 (-77.36 % of base) - System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this ```diff ; Assembly listing for method System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 5, 5 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 5, 5 ) byref -> rdi this single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def -; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def -; V03 arg3 [V03,T03] ( 3, 3 ) ref -> r14 class-hnd single-def +; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def +; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rcx class-hnd single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M55325_IG01: - push r15 - push r14 - push rbx - mov rbx, rdi - mov r15, rdx - mov r14, rcx - ;; size=14 bbWeight=1 PerfScore 3.75 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M55325_IG02: - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x08] - mov rsi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x10] - mov rsi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF - nop - ;; size=33 bbWeight=1 PerfScore 5.00 + mov gword ptr [rdi], rsi + mov gword ptr [rdi+0x08], rdx + mov gword ptr [rdi+0x10], rcx + ;; size=11 bbWeight=1 PerfScore 3.00 G_M55325_IG03: - pop rbx - pop r14 - pop r15 ret - ;; size=6 bbWeight=1 PerfScore 2.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 53, prolog size 5, PerfScore 11.25, instruction count 19, allocated bytes for code 53 (MethodHash=115e27e2) for method System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts) +; Total bytes of code 12, prolog size 0, PerfScore 4.00, instruction count 4, allocated bytes for code 12 (MethodHash=115e27e2) for method System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts) ```
-36 (-7.07 % of base) - System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String ```diff ; Assembly listing for method System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 3, 3 ) ushort -> rdi single-def ; V01 arg1 [V01,T00] ( 9, 6 ) byref -> rbx single-def ; V02 arg2 [V02,T02] ( 6, 4 ) byref -> r14 single-def ; V03 arg3 [V03,T01] ( 9, 5.50) byref -> r15 single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 3 ) byref -> rdi single-def "dup spill" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ; V07 tmp3 [V07,T07] ( 3, 3 ) byref -> r15 single-def "dup spill" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V09 tmp5 [V09,T10] ( 2, 2 ) byref -> rdi single-def "dup spill" ; V10 tmp6 [V10,T11] ( 2, 2 ) byref -> rdi single-def "dup spill" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ;* V12 tmp8 [V12,T18] ( 0, 0 ) long -> zero-ref "field V06._ticks (fldOffset=0x0)" P-INDEP ; V13 tmp9 [V13,T09] ( 3, 2 ) ref -> rax single-def "argument with side effect" ; V14 tmp10 [V14,T12] ( 2, 2 ) ref -> rsi single-def "argument with side effect" ; V15 tmp11 [V15,T13] ( 2, 2 ) ref -> r14 single-def "argument with side effect" ; V16 cse0 [V16,T15] ( 3, 1.50) int -> rsi "CSE #03: moderate" ; V17 cse1 [V17,T16] ( 3, 1.50) int -> rsi "CSE #05: moderate" ; V18 cse2 [V18,T03] ( 7, 5 ) int -> r13 "CSE #01: aggressive" ; V19 cse3 [V19,T14] ( 3, 1.50) ref -> rdi "CSE #06: moderate" ; V20 rat0 [V20,T05] ( 4, 3.50) ref -> rsi "replacement local" ; V21 rat1 [V21,T17] ( 3, 1 ) long -> rdi "CSE for expectedClsNode" ; V22 rat2 [V22,T08] ( 3, 2.88) int -> r12 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 8 G_M44728_IG01: push rbp push r15 push r14 push r13 push r12 push rbx push rax lea rbp, [rsp+0x30] mov rbx, rsi mov r14, rdx mov r15, rcx ;; size=25 bbWeight=1 PerfScore 8.25 G_M44728_IG02: movzx r13, di cmp r13d, 82 ja SHORT G_M44728_IG04 ;; size=10 bbWeight=1 PerfScore 1.50 G_M44728_IG03: cmp r13d, 79 je G_M44728_IG10 cmp r13d, 82 je G_M44728_IG11 jmp G_M44728_IG12 ;; size=25 bbWeight=0.50 PerfScore 2.25 G_M44728_IG04: cmp r13d, 85 je SHORT G_M44728_IG06 lea r12d, [r13-0x6F] cmp r12d, 6 ja G_M44728_IG12 ;; size=20 bbWeight=0.50 PerfScore 1.50 G_M44728_IG05: mov eax, r12d lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rax] lea rdx, G_M44728_IG02 add rcx, rdx jmp rcx ;; size=25 bbWeight=0.44 PerfScore 2.62 G_M44728_IG06: mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar - mov rsi, rax - mov rdi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [r14], rax lea rdi, bword ptr [r15+0x2C] or dword ptr [rdi], 256 xor edi, edi mov qword ptr [r15+0x38], rdi add r15, 44 or dword ptr [r15], 512 mov rdi, gword ptr [rbx] mov rax, gword ptr [rdi+0x90] mov rcx, 0xD1FFAB1E ; System.Globalization.GregorianCalendar cmp qword ptr [rax], rcx je G_M44728_IG12 mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:Clone():System.Object:this call [rax]System.Globalization.DateTimeFormatInfo:Clone():System.Object:this mov rsi, rax test rsi, rsi je SHORT G_M44728_IG08 - ;; size=99 bbWeight=0.50 PerfScore 12.88 + ;; size=91 bbWeight=0.50 PerfScore 12.62 G_M44728_IG07: mov rdi, 0xD1FFAB1E ; System.Globalization.DateTimeFormatInfo cmp qword ptr [rsi], rdi jne G_M44728_IG14 ;; size=19 bbWeight=0.25 PerfScore 1.06 G_M44728_IG08: mov rdi, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov r14, gword ptr [rbx] mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar mov rsi, rax mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:set_Calendar(System.Globalization.Calendar):this cmp dword ptr [rdi], edi call [rax]System.Globalization.DateTimeFormatInfo:set_Calendar(System.Globalization.Calendar):this jmp G_M44728_IG12 ;; size=48 bbWeight=0.50 PerfScore 7.62 G_M44728_IG09: mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar - mov rsi, rax - mov rdi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [r14], rax mov rdi, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdi] mov rdi, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov esi, dword ptr [r15+0x2C] test esi, 0x800 - je G_M44728_IG12 + je SHORT G_M44728_IG12 lea rdi, bword ptr [r15+0x2C] or esi, 0x4000 mov dword ptr [rdi], esi jmp SHORT G_M44728_IG12 - ;; size=74 bbWeight=0.50 PerfScore 7.62 + ;; size=62 bbWeight=0.50 PerfScore 7.38 G_M44728_IG10: mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar - mov rsi, rax - mov rdi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [r14], rax mov rdi, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdi] mov rdi, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF jmp SHORT G_M44728_IG12 - ;; size=46 bbWeight=0.50 PerfScore 5.12 + ;; size=38 bbWeight=0.50 PerfScore 4.88 G_M44728_IG11: mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar - mov rsi, rax - mov rdi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [r14], rax mov rdi, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdi] mov rdi, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF mov esi, dword ptr [r15+0x2C] test esi, 0x800 je SHORT G_M44728_IG12 lea rdi, bword ptr [r15+0x2C] or esi, 0x2000 mov dword ptr [rdi], esi - ;; size=68 bbWeight=0.50 PerfScore 6.62 + ;; size=60 bbWeight=0.50 PerfScore 6.38 G_M44728_IG12: mov rsi, gword ptr [rbx] mov edi, r13d mov rax, 0xD1FFAB1E ; code for System.DateTimeFormat:ExpandStandardFormatToCustomPattern(ushort,System.Globalization.DateTimeFormatInfo):System.String call [rax]System.DateTimeFormat:ExpandStandardFormatToCustomPattern(ushort,System.Globalization.DateTimeFormatInfo):System.String nop ;; size=19 bbWeight=1 PerfScore 5.75 G_M44728_IG13: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M44728_IG14: mov rsi, rax mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS int3 ;; size=16 bbWeight=0 PerfScore 0.00 RWD00 dd G_M44728_IG10 - G_M44728_IG02 dd G_M44728_IG12 - G_M44728_IG02 dd G_M44728_IG12 - G_M44728_IG02 dd G_M44728_IG11 - G_M44728_IG02 dd G_M44728_IG10 - G_M44728_IG02 dd G_M44728_IG12 - G_M44728_IG02 dd G_M44728_IG09 - G_M44728_IG02 -; Total bytes of code 509, prolog size 16, PerfScore 67.06, instruction count 123, allocated bytes for code 509 (MethodHash=d2f95147) for method System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String (FullOpts) +; Total bytes of code 473, prolog size 16, PerfScore 66.06, instruction count 115, allocated bytes for code 473 (MethodHash=d2f95147) for method System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String (FullOpts) ```
-24 (-5.63 % of base) - System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this ```diff ; Assembly listing for method System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 19, 18.50) byref -> rbx this single-def ; V01 arg1 [V01,T02] ( 6, 10 ) ref -> r15 class-hnd single-def ; V02 loc0 [V02,T06] ( 4, 7 ) int -> r14 ; V03 loc1 [V03,T01] ( 7, 15.50) int -> r13 ; V04 loc2 [V04,T03] ( 5, 10 ) ref -> rsi class-hnd exact ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" ; V07 tmp2 [V07,T05] ( 2, 8 ) byref -> rdi "impAppendStmt" ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref "Single return block return value" ; V09 cse0 [V09,T07] ( 3, 6 ) int -> r12 "CSE #02: aggressive" ; V10 cse1 [V10,T08] ( 3, 2.50) ref -> rdi "CSE #01: aggressive" ; ; Lcl frame size = 8 G_M48016_IG01: push rbp push r15 push r14 push r13 push r12 push rbx push rax lea rbp, [rsp+0x30] mov rbx, rdi mov r15, rsi ;; size=22 bbWeight=1 PerfScore 8.00 G_M48016_IG02: mov rdi, gword ptr [rbx] test rdi, rdi je SHORT G_M48016_IG06 ;; size=8 bbWeight=1 PerfScore 3.25 G_M48016_IG03: cmp gword ptr [rbx+0x08], 0 jne SHORT G_M48016_IG04 mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this call [r11]System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this - lea rdi, bword ptr [rbx+0x08] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF - ;; size=32 bbWeight=0.50 PerfScore 4.50 + mov gword ptr [rbx+0x08], rax + ;; size=24 bbWeight=0.50 PerfScore 4.12 G_M48016_IG04: mov r14d, dword ptr [rbx+0x10] mov r13d, r14d mov rdi, gword ptr [rbx+0x08] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne SHORT G_M48016_IG08 mov r13d, -1 mov rdi, gword ptr [rbx] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this call [r11]System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this - lea rdi, bword ptr [rbx+0x08] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x08], rax mov rdi, gword ptr [rbx+0x08] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne SHORT G_M48016_IG08 - ;; size=83 bbWeight=0.50 PerfScore 11.25 + ;; size=75 bbWeight=0.50 PerfScore 10.88 G_M48016_IG05: xor rax, rax mov gword ptr [rbx], rax ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M48016_IG06: xor rax, rax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M48016_IG07: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M48016_IG08: inc r13d cmp r13d, r14d je SHORT G_M48016_IG06 ;; size=8 bbWeight=4 PerfScore 6.00 G_M48016_IG09: mov rdi, gword ptr [rbx+0x08] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this call [r11]System.Collections.IEnumerator:get_Current():System.Object:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:GetLocalName(System.Object):System.String call [rax]System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:GetLocalName(System.Object):System.String mov rsi, rax cmp r15, rsi jne SHORT G_M48016_IG12 ;; size=40 bbWeight=2 PerfScore 20.50 G_M48016_IG10: mov dword ptr [rbx+0x10], r13d mov rdi, gword ptr [rbx+0x08] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this call [r11]System.Collections.IEnumerator:get_Current():System.Object:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:GetValue(System.Object):System.String ;; size=34 bbWeight=0.50 PerfScore 3.38 G_M48016_IG11: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp tail.jmp [rax]System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:GetValue(System.Object):System.String ;; size=17 bbWeight=0.50 PerfScore 2.62 G_M48016_IG12: test r15, r15 je SHORT G_M48016_IG13 test rsi, rsi je SHORT G_M48016_IG13 mov r12d, dword ptr [r15+0x08] cmp r12d, dword ptr [rsi+0x08] je SHORT G_M48016_IG15 ;; size=20 bbWeight=2 PerfScore 17.00 G_M48016_IG13: mov rdi, gword ptr [rbx+0x08] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne G_M48016_IG08 mov r13d, -1 test r14d, r14d jge SHORT G_M48016_IG16 ;; size=36 bbWeight=2 PerfScore 16.00 G_M48016_IG14: xor rdx, rdx mov gword ptr [rbx+0x08], rdx jmp G_M48016_IG06 ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M48016_IG15: lea rdi, bword ptr [r15+0x0C] add r12d, r12d mov edx, r12d add rsi, 12 mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte test eax, eax je SHORT G_M48016_IG13 jmp G_M48016_IG10 ;; size=35 bbWeight=2 PerfScore 15.50 G_M48016_IG16: mov rdi, gword ptr [rbx] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this call [r11]System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this - lea rdi, bword ptr [rbx+0x08] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x08], rax mov rdi, gword ptr [rbx+0x08] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne G_M48016_IG08 jmp G_M48016_IG05 - ;; size=58 bbWeight=2 PerfScore 31.00 + ;; size=50 bbWeight=2 PerfScore 29.50 -; Total bytes of code 426, prolog size 16, PerfScore 143.50, instruction count 115, allocated bytes for code 426 (MethodHash=823d446f) for method System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this (FullOpts) +; Total bytes of code 402, prolog size 16, PerfScore 141.25, instruction count 109, allocated bytes for code 402 (MethodHash=823d446f) for method System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this (FullOpts) ```
-13 (-36.11 % of base) - System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this ```diff ; Assembly listing for method System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 8, 8 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 8, 8 ) byref -> rdi this single-def ; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def ; V02 arg2 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M57609_IG01: - push rbx - mov rbx, rdi - ;; size=4 bbWeight=1 PerfScore 1.25 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M57609_IG02: - mov dword ptr [rbx+0x18], esi - lea rdi, bword ptr [rbx+0x10] - mov rsi, rdx - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov dword ptr [rdi+0x18], esi + mov gword ptr [rdi+0x10], rdx xor rax, rax - mov gword ptr [rbx], rax - ;; size=20 bbWeight=1 PerfScore 4.00 + mov gword ptr [rdi], rax + ;; size=12 bbWeight=1 PerfScore 3.25 G_M57609_IG03: - mov dword ptr [rbx+0x1C], eax + mov dword ptr [rdi+0x1C], eax ;; size=3 bbWeight=1 PerfScore 1.00 G_M57609_IG04: - mov dword ptr [rbx+0x20], eax + mov dword ptr [rdi+0x20], eax ;; size=3 bbWeight=1 PerfScore 1.00 G_M57609_IG05: - mov gword ptr [rbx+0x08], rax + mov gword ptr [rdi+0x08], rax ;; size=4 bbWeight=1 PerfScore 1.00 G_M57609_IG06: - pop rbx ret - ;; size=2 bbWeight=1 PerfScore 1.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 36, prolog size 1, PerfScore 9.75, instruction count 13, allocated bytes for code 36 (MethodHash=47051ef6) for method System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this (FullOpts) +; Total bytes of code 23, prolog size 0, PerfScore 7.25, instruction count 8, allocated bytes for code 23 (MethodHash=47051ef6) for method System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this (FullOpts) ```
-11 (-5.61 % of base) - System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this ```diff ; Assembly listing for method System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 4.50) byref -> rbx this single-def ; V01 arg1 [V01,T02] ( 4, 3 ) ref -> r15 class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" ; V04 tmp2 [V04,T00] ( 7, 12 ) ref -> rdi class-hnd single-def "Inlining Arg" ; V05 tmp3 [V05,T05] ( 3, 2.50) ref -> rdx class-hnd single-def "Inline stloc first use temp" ; V06 tmp4 [V06,T03] ( 4, 3 ) int -> rsi "Inline stloc first use temp" ; ; Lcl frame size = 8 G_M6204_IG01: push rbp push r15 push r14 push rbx push rax lea rbp, [rsp+0x20] mov rbx, rdi mov r15, rsi ;; size=18 bbWeight=1 PerfScore 6.00 G_M6204_IG02: cmp gword ptr [rbx+0x08], 0 jne SHORT G_M6204_IG05 ;; size=7 bbWeight=1 PerfScore 4.00 G_M6204_IG03: mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Exception] call CORINFO_HELP_NEWSFAST mov r14, rax mov rdi, 0xD1FFAB1E ; global ptr test byte ptr [rdi], 1 je SHORT G_M6204_IG10 ;; size=33 bbWeight=0.50 PerfScore 2.88 G_M6204_IG04: mov rdi, 0xD1FFAB1E ; data for System.Collections.Generic.List`1[System.Exception]:s_emptyArray mov rsi, gword ptr [rdi] lea rdi, bword ptr [r14+0x08] call CORINFO_HELP_ASSIGN_REF - lea rdi, bword ptr [rbx+0x08] - mov rsi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF - ;; size=34 bbWeight=0.50 PerfScore 2.75 + mov gword ptr [rbx+0x08], r14 + ;; size=26 bbWeight=0.50 PerfScore 2.38 G_M6204_IG05: mov rdi, gword ptr [rbx+0x08] inc dword ptr [rdi+0x14] mov rdx, gword ptr [rdi+0x08] mov esi, dword ptr [rdi+0x10] cmp dword ptr [rdx+0x08], esi jbe SHORT G_M6204_IG08 ;; size=19 bbWeight=1 PerfScore 13.00 G_M6204_IG06: lea eax, [rsi+0x01] mov dword ptr [rdi+0x10], eax movsxd rsi, esi mov rdi, rdx mov rdx, r15 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST nop ;; size=28 bbWeight=0.50 PerfScore 2.88 G_M6204_IG07: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M6204_IG08: mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this ;; size=13 bbWeight=0.50 PerfScore 0.25 G_M6204_IG09: add rsp, 8 pop rbx pop r14 pop r15 pop rbp tail.jmp [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this ;; size=13 bbWeight=0.50 PerfScore 2.12 G_M6204_IG10: mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Exception] call CORINFO_HELP_GET_GCSTATIC_BASE - jmp G_M6204_IG04 - ;; size=20 bbWeight=0 PerfScore 0.00 + jmp SHORT G_M6204_IG04 + ;; size=17 bbWeight=0 PerfScore 0.00 -; Total bytes of code 196, prolog size 18, PerfScore 35.50, instruction count 54, allocated bytes for code 196 (MethodHash=6fcbe7c3) for method System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this (FullOpts) +; Total bytes of code 185, prolog size 18, PerfScore 35.12, instruction count 52, allocated bytes for code 185 (MethodHash=6fcbe7c3) for method System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this (FullOpts) ```
-10 (-35.71 % of base) - System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 5, 5 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 5, 5 ) byref -> rdi this single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M33264_IG01: - push rbx - mov rbx, rdi - ;; size=4 bbWeight=1 PerfScore 1.25 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M33264_IG02: - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rdi], rsi vxorps xmm0, xmm0, xmm0 - vmovdqu xmmword ptr [rbx+0x10], xmm0 + vmovdqu xmmword ptr [rdi+0x10], xmm0 xor eax, eax - mov dword ptr [rbx+0x08], eax - ;; size=22 bbWeight=1 PerfScore 4.83 + mov dword ptr [rdi+0x08], eax + ;; size=17 bbWeight=1 PerfScore 4.58 G_M33264_IG03: - pop rbx ret - ;; size=2 bbWeight=1 PerfScore 1.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 28, prolog size 1, PerfScore 7.58, instruction count 10, allocated bytes for code 28 (MethodHash=421d7e0f) for method System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts) +; Total bytes of code 18, prolog size 0, PerfScore 5.58, instruction count 6, allocated bytes for code 18 (MethodHash=421d7e0f) for method System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts) ```
-10 (-27.03 % of base) - System.ParsingInfo:.ctor(System.Globalization.Calendar):this ```diff ; Assembly listing for method System.ParsingInfo:.ctor(System.Globalization.Calendar):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 7, 7 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 7, 7 ) byref -> rdi this single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M25598_IG01: - push rbx - mov rbx, rdi - ;; size=4 bbWeight=1 PerfScore 1.25 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M25598_IG02: - xor edi, edi - mov dword ptr [rbx+0x10], edi - mov byte ptr [rbx+0x14], 0 - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF - mov dword ptr [rbx+0x08], -1 - mov dword ptr [rbx+0x0C], -1 - ;; size=31 bbWeight=1 PerfScore 5.50 + xor eax, eax + mov dword ptr [rdi+0x10], eax + mov byte ptr [rdi+0x14], 0 + mov gword ptr [rdi], rsi + mov dword ptr [rdi+0x08], -1 + mov dword ptr [rdi+0x0C], -1 + ;; size=26 bbWeight=1 PerfScore 5.25 G_M25598_IG03: - pop rbx ret - ;; size=2 bbWeight=1 PerfScore 1.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 37, prolog size 1, PerfScore 8.25, instruction count 11, allocated bytes for code 37 (MethodHash=3cb49c01) for method System.ParsingInfo:.ctor(System.Globalization.Calendar):this (FullOpts) +; Total bytes of code 27, prolog size 0, PerfScore 6.25, instruction count 7, allocated bytes for code 27 (MethodHash=3cb49c01) for method System.ParsingInfo:.ctor(System.Globalization.Calendar):this (FullOpts) ```
-10 (-38.46 % of base) - System.TimeZoneInfo+StringSerializer:.ctor(System.String):this ```diff ; Assembly listing for method System.TimeZoneInfo+StringSerializer:.ctor(System.String):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 5, 5 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 5, 5 ) byref -> rdi this single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M39859_IG01: - push rbx - mov rbx, rdi - ;; size=4 bbWeight=1 PerfScore 1.25 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M39859_IG02: - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rdi], rsi xor eax, eax - mov dword ptr [rbx+0x08], eax - mov dword ptr [rbx+0x0C], 2 - ;; size=20 bbWeight=1 PerfScore 3.50 + mov dword ptr [rdi+0x08], eax + mov dword ptr [rdi+0x0C], 2 + ;; size=15 bbWeight=1 PerfScore 3.25 G_M39859_IG03: - pop rbx ret - ;; size=2 bbWeight=1 PerfScore 1.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 26, prolog size 1, PerfScore 6.25, instruction count 9, allocated bytes for code 26 (MethodHash=d646644c) for method System.TimeZoneInfo+StringSerializer:.ctor(System.String):this (FullOpts) +; Total bytes of code 16, prolog size 0, PerfScore 4.25, instruction count 5, allocated bytes for code 16 (MethodHash=d646644c) for method System.TimeZoneInfo+StringSerializer:.ctor(System.String):this (FullOpts) ```
-9 (-7.14 % of base) - System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this ```diff ; Assembly listing for method System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 6 ) byref -> rbx this single-def ; V01 arg1 [V01,T01] ( 5, 5 ) ref -> r15 class-hnd single-def ; V02 arg2 [V02,T03] ( 3, 3 ) int -> r14 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" ; ; Lcl frame size = 8 G_M36073_IG01: push rbp push r15 push r14 push rbx push rax lea rbp, [rsp+0x20] mov rbx, rdi mov r15, rsi mov r14d, edx ;; size=21 bbWeight=1 PerfScore 6.25 G_M36073_IG02: mov rdi, r15 mov rax, qword ptr [r15] mov rax, qword ptr [rax+0x48] call [rax+0x10]System.IO.Stream:get_Position():long:this mov qword ptr [rbx+0x08], rax movsxd rdi, r14d add rdi, qword ptr [rbx+0x08] mov qword ptr [rbx+0x10], rdi mov rdi, 0xD1FFAB1E ; System.IO.BinaryReader call CORINFO_HELP_NEWSFAST mov r14, rax mov rdx, 0xD1FFAB1E ; const ptr mov rdx, gword ptr [rdx] mov rdi, r14 mov rsi, r15 mov ecx, 1 mov rax, 0xD1FFAB1E ; code for System.IO.BinaryReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte):this call [rax]System.IO.BinaryReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte):this - mov rdi, rbx - mov rsi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF - nop - ;; size=94 bbWeight=1 PerfScore 22.00 + mov gword ptr [rbx], r14 + ;; size=85 bbWeight=1 PerfScore 21.25 G_M36073_IG03: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25 -; Total bytes of code 126, prolog size 12, PerfScore 31.50, instruction count 37, allocated bytes for code 126 (MethodHash=3c457316) for method System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (FullOpts) +; Total bytes of code 117, prolog size 12, PerfScore 30.75, instruction count 34, allocated bytes for code 117 (MethodHash=3c457316) for method System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (FullOpts) ```
-9 (-69.23 % of base) - System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) ```diff ; Assembly listing for method System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def -; V01 arg0 [V01,T00] ( 3, 3 ) byref -> rdi single-def +; V01 arg0 [V01,T00] ( 3, 3 ) byref -> rsi single-def ; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M37111_IG01: - mov rdi, rsi - ;; size=3 bbWeight=1 PerfScore 0.25 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M37111_IG02: - mov rsi, rdx - call CORINFO_HELP_CHECKED_ASSIGN_REF - nop - ;; size=9 bbWeight=1 PerfScore 1.50 + mov gword ptr [rsi], rdx + ;; size=3 bbWeight=1 PerfScore 1.00 G_M37111_IG03: ret ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 13, prolog size 0, PerfScore 2.75, instruction count 5, allocated bytes for code 13 (MethodHash=79bd6f08) for method System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) (FullOpts) +; Total bytes of code 4, prolog size 0, PerfScore 2.00, instruction count 2, allocated bytes for code 4 (MethodHash=79bd6f08) for method System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) (FullOpts) ```
-8 (-5.52 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_2[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) ubyte -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) ubyte -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "V05.[016..017)" ;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "V06.[000..001)" ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "V08.[000..001)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M22027_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M22027_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M22027_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M22027_IG03: cmp qword ptr [rax], rdi je SHORT G_M22027_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M22027_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M22027_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,ubyte]:Invoke(System.__Canon):ubyte:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M22027_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M22027_IG07: mov dword ptr [rbx+0x08], 1 - mov byte ptr [rbx+0x10], dl + mov byte ptr [rbx+0x10], al mov rax, rbx - ;; size=53 bbWeight=1 PerfScore 13.83 -G_M22027_IG06: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M22027_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 145, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 145 (MethodHash=1b2ba9f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 137, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 137 (MethodHash=1b2ba9f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.52 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_3[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) ubyte -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) ubyte -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "V05.[016..017)" ;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "V06.[000..001)" ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "V08.[000..001)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M55051_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M55051_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M55051_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M55051_IG03: cmp qword ptr [rax], rdi je SHORT G_M55051_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M55051_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M55051_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,ubyte]:Invoke(System.__Canon):ubyte:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M55051_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M55051_IG07: mov dword ptr [rbx+0x08], 1 - mov byte ptr [rbx+0x10], dl + mov byte ptr [rbx+0x10], al mov rax, rbx - ;; size=53 bbWeight=1 PerfScore 13.83 -G_M55051_IG06: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M55051_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 145, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 145 (MethodHash=d5e128f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 137, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 137 (MethodHash=d5e128f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.52 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_4[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) byte -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) byte -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) byte -> zero-ref "V05.[016..017)" ;* V12 tmp9 [V12 ] ( 0, 0 ) byte -> zero-ref "V06.[000..001)" ;* V13 tmp10 [V13 ] ( 0, 0 ) byte -> zero-ref "V08.[000..001)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M44171_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M44171_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M44171_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M44171_IG03: cmp qword ptr [rax], rdi je SHORT G_M44171_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M44171_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M44171_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,byte]:Invoke(System.__Canon):byte:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M44171_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M44171_IG07: mov dword ptr [rbx+0x08], 1 - mov byte ptr [rbx+0x10], dl + mov byte ptr [rbx+0x10], al mov rax, rbx - ;; size=53 bbWeight=1 PerfScore 13.83 -G_M44171_IG06: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M44171_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 145, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 145 (MethodHash=2fca5374) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 137, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 137 (MethodHash=2fca5374) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/7683ff78f93906f0a0d4e93ae1940907

MihuBot commented 3 months ago

@EgorBo