Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
MihuBot opened this issue Jul 14, 2024 · 2 comments
Open

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

MihuBot opened this issue Jul 14, 2024 · 2 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jul 14, 2024

Job completed in 14 minutes.
dotnet/runtime#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
Copy link
Owner Author

MihuBot commented Jul 14, 2024

Top method improvements

-41 (-77.36 % of base) - System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this
 ; 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 <System.Array>
-;  V02 arg2         [V02,T02] (  3,  3   )     ref  ->  r15         class-hnd single-def <System.Array>
-;  V03 arg3         [V03,T03] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Collections.IComparer>
+;  V02 arg2         [V02,T02] (  3,  3   )     ref  ->  rdx         class-hnd single-def <System.Array>
+;  V03 arg3         [V03,T03] (  3,  3   )     ref  ->  rcx         class-hnd single-def <System.Collections.IComparer>
 ;# 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
 ; 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 <System.Object[]>
-;  V02 arg2         [V02,T02] (  3,  3   )     ref  ->  r15         class-hnd single-def <System.Object[]>
-;  V03 arg3         [V03,T03] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Collections.IComparer>
+;  V02 arg2         [V02,T02] (  3,  3   )     ref  ->  rdx         class-hnd single-def <System.Object[]>
+;  V03 arg3         [V03,T03] (  3,  3   )     ref  ->  rcx         class-hnd single-def <System.Collections.IComparer>
 ;# 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
 ; 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" <System.TimeSpan>
 ;  V07 tmp3         [V07,T07] (  3,  3   )   byref  ->  r15         single-def "dup spill"
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;  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" <System.Globalization.DateTimeFormatInfo>
 ;* 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
 ; 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 <System.String>
 ;  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 <System.String>
 ;# 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
 ; 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 <System.Text.Encoding>
 ;# 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
 ; 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 <System.Exception>
 ;# 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" <System.Collections.Generic.List`1[System.Exception]>
 ;  V04 tmp2         [V04,T00] (  7, 12   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Exception]>
 ;  V05 tmp3         [V05,T05] (  3,  2.50)     ref  ->  rdx         class-hnd single-def "Inline stloc first use temp" <System.Exception[]>
 ;  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
 ; 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 <System.Object>
 ;# 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
 ; 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 <System.Globalization.Calendar>
 ;# 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
 ; 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 <System.String>
 ;# 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
 ; 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 <System.IO.Stream>
 ;  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" <System.IO.BinaryReader>
 ;
 ; 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)
 ; 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 <System.__Canon>
 ;# 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
 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
 ;# 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" <System.Func`2[System.__Canon,ubyte]>
 ;  V05 tmp2         [V05,T06] (  2,  4   )  struct (32) [rbp-0x40]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
 ;* V06 tmp3         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-;  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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
 ;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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
 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
 ;# 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" <System.Func`2[System.__Canon,ubyte]>
 ;  V05 tmp2         [V05,T06] (  2,  4   )  struct (32) [rbp-0x40]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
 ;* V06 tmp3         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-;  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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
 ;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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
 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
 ;# 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" <System.Func`2[System.__Canon,byte]>
 ;  V05 tmp2         [V05,T06] (  2,  4   )  struct (32) [rbp-0x40]  do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
 ;* V06 tmp3         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-;  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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
 ;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 14, 2024

@EgorBo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant