Skip to content

Instantly share code, notes, and snippets.

@MihuBot
Created July 14, 2024 21:50
Show Gist options
  • Save MihuBot/7683ff78f93906f0a0d4e93ae1940907 to your computer and use it in GitHub Desktop.
Save MihuBot/7683ff78f93906f0a0d4e93ae1940907 to your computer and use it in GitHub Desktop.

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)
-8 (-5.48 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this
 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:<GetPropertyGetter>b__5(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_5[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,ushort]>
 ;  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   )  ushort  ->  rdx         "Inlining Arg"
+;  V07 tmp4         [V07,T07] (  2,  4   )  ushort  ->  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   )  ushort  ->  zero-ref    "V05.[016..018)"
 ;* V12 tmp9         [V12    ] (  0,  0   )  ushort  ->  zero-ref    "V06.[000..002)"
 ;* V13 tmp10        [V13    ] (  0,  0   )  ushort  ->  zero-ref    "V08.[000..002)"
 ;  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_M43915_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_M43915_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_M43915_IG05
 						;; size=29 bbWeight=1 PerfScore 12.50
 G_M43915_IG03:
        cmp      qword ptr [rax], rdi
        je       SHORT G_M43915_IG05
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M43915_IG04:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTANY
        call     [rax]CORINFO_HELP_CHKCASTANY
 						;; size=12 bbWeight=0.25 PerfScore 0.81
 G_M43915_IG05:
        mov      rsi, rax
        mov      rdi, gword ptr [r14+0x08]
        call     [r14+0x18]System.Func`2[System.__Canon,ushort]:Invoke(System.__Canon):ushort: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_M43915_IG06:
+       vmovdqu  ymm0, ymmword ptr [rbp-0x40]
+       vmovdqu  ymmword ptr [rbx], ymm0
+						;; size=9 bbWeight=1 PerfScore 6.00
+G_M43915_IG07:
        mov      dword ptr [rbx+0x08], 2
-       mov      word  ptr [rbx+0x10], dx
+       mov      word  ptr [rbx+0x10], ax
        mov      rax, rbx
-						;; size=54 bbWeight=1 PerfScore 13.83
-G_M43915_IG06:
+						;; size=14 bbWeight=1 PerfScore 2.25
+G_M43915_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 146, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 146 (MethodHash=2b585474) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:<GetPropertyGetter>b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
+; Total bytes of code 138, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 138 (MethodHash=2b585474) for method 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.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this
 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:<GetPropertyGetter>b__6(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_6[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,short]>
 ;  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   )   short  ->  rdx         "Inlining Arg"
+;  V07 tmp4         [V07,T07] (  2,  4   )   short  ->  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   )   short  ->  zero-ref    "V05.[016..018)"
 ;* V12 tmp9         [V12    ] (  0,  0   )   short  ->  zero-ref    "V06.[000..002)"
 ;* V13 tmp10        [V13    ] (  0,  0   )   short  ->  zero-ref    "V08.[000..002)"
 ;  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_M14859_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_M14859_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_M14859_IG05
 						;; size=29 bbWeight=1 PerfScore 12.50
 G_M14859_IG03:
        cmp      qword ptr [rax], rdi
        je       SHORT G_M14859_IG05
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M14859_IG04:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTANY
        call     [rax]CORINFO_HELP_CHKCASTANY
 						;; size=12 bbWeight=0.25 PerfScore 0.81
 G_M14859_IG05:
        mov      rsi, rax
        mov      rdi, gword ptr [r14+0x08]
        call     [r14+0x18]System.Func`2[System.__Canon,short]:Invoke(System.__Canon):short: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_M14859_IG06:
+       vmovdqu  ymm0, ymmword ptr [rbp-0x40]
+       vmovdqu  ymmword ptr [rbx], ymm0
+						;; size=9 bbWeight=1 PerfScore 6.00
+G_M14859_IG07:
        mov      dword ptr [rbx+0x08], 2
-       mov      word  ptr [rbx+0x10], dx
+       mov      word  ptr [rbx+0x10], ax
        mov      rax, rbx
-						;; size=54 bbWeight=1 PerfScore 13.83
-G_M14859_IG06:
+						;; size=14 bbWeight=1 PerfScore 2.25
+G_M14859_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 146, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 146 (MethodHash=3962c5f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:<GetPropertyGetter>b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
+; Total bytes of code 138, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 138 (MethodHash=3962c5f4) for method 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.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this
 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:<GetPropertyGetter>b__7(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_7[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,ushort]>
 ;  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   )  ushort  ->  rdx         "Inlining Arg"
+;  V07 tmp4         [V07,T07] (  2,  4   )  ushort  ->  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   )  ushort  ->  zero-ref    "V05.[016..018)"
 ;* V12 tmp9         [V12    ] (  0,  0   )  ushort  ->  zero-ref    "V06.[000..002)"
 ;* V13 tmp10        [V13    ] (  0,  0   )  ushort  ->  zero-ref    "V08.[000..002)"
 ;  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_M47883_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_M47883_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_M47883_IG05
 						;; size=29 bbWeight=1 PerfScore 12.50
 G_M47883_IG03:
        cmp      qword ptr [rax], rdi
        je       SHORT G_M47883_IG05
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M47883_IG04:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTANY
        call     [rax]CORINFO_HELP_CHKCASTANY
 						;; size=12 bbWeight=0.25 PerfScore 0.81
 G_M47883_IG05:
        mov      rsi, rax
        mov      rdi, gword ptr [r14+0x08]
        call     [r14+0x18]System.Func`2[System.__Canon,ushort]:Invoke(System.__Canon):ushort: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_M47883_IG06:
+       vmovdqu  ymm0, ymmword ptr [rbp-0x40]
+       vmovdqu  ymmword ptr [rbx], ymm0
+						;; size=9 bbWeight=1 PerfScore 6.00
+G_M47883_IG07:
        mov      dword ptr [rbx+0x08], 2
-       mov      word  ptr [rbx+0x10], dx
+       mov      word  ptr [rbx+0x10], ax
        mov      rax, rbx
-						;; size=54 bbWeight=1 PerfScore 13.83
-G_M47883_IG06:
+						;; size=14 bbWeight=1 PerfScore 2.25
+G_M47883_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 146, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 146 (MethodHash=f41844f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:<GetPropertyGetter>b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
+; Total bytes of code 138, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 138 (MethodHash=f41844f4) for method 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.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this
 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:<GetPropertyGetter>b__8(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_8[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,int]>
 ;  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   )     int  ->  rdx         "Inlining Arg"
+;  V07 tmp4         [V07,T07] (  2,  4   )     int  ->  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   )     int  ->  zero-ref    "V05.[016..020)"
 ;* V12 tmp9         [V12    ] (  0,  0   )     int  ->  zero-ref    "V06.[000..004)"
 ;* V13 tmp10        [V13    ] (  0,  0   )     int  ->  zero-ref    "V08.[000..004)"
 ;  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_M37515_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_M37515_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_M37515_IG05
 						;; size=29 bbWeight=1 PerfScore 12.50
 G_M37515_IG03:
        cmp      qword ptr [rax], rdi
        je       SHORT G_M37515_IG05
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M37515_IG04:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTANY
        call     [rax]CORINFO_HELP_CHKCASTANY
 						;; size=12 bbWeight=0.25 PerfScore 0.81
 G_M37515_IG05:
        mov      rsi, rax
        mov      rdi, gword ptr [r14+0x08]
        call     [r14+0x18]System.Func`2[System.__Canon,int]:Invoke(System.__Canon):int: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_M37515_IG06:
+       vmovdqu  ymm0, ymmword ptr [rbp-0x40]
+       vmovdqu  ymmword ptr [rbx], ymm0
+						;; size=9 bbWeight=1 PerfScore 6.00
+G_M37515_IG07:
        mov      dword ptr [rbx+0x08], 4
-       mov      dword ptr [rbx+0x10], edx
+       mov      dword ptr [rbx+0x10], eax
        mov      rax, rbx
-						;; size=53 bbWeight=1 PerfScore 13.83
-G_M37515_IG06:
+						;; size=13 bbWeight=1 PerfScore 2.25
+G_M37515_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=63a16d74) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:<GetPropertyGetter>b__8(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=63a16d74) for method 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.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this
 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:<GetPropertyGetter>b__9(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_9[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,uint]>
 ;  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   )     int  ->  rdx         "Inlining Arg"
+;  V07 tmp4         [V07,T07] (  2,  4   )     int  ->  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   )     int  ->  zero-ref    "V05.[016..020)"
 ;* V12 tmp9         [V12    ] (  0,  0   )     int  ->  zero-ref    "V06.[000..004)"
 ;* V13 tmp10        [V13    ] (  0,  0   )     int  ->  zero-ref    "V08.[000..004)"
 ;  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_M37259_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_M37259_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_M37259_IG05
 						;; size=29 bbWeight=1 PerfScore 12.50
 G_M37259_IG03:
        cmp      qword ptr [rax], rdi
        je       SHORT G_M37259_IG05
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M37259_IG04:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTANY
        call     [rax]CORINFO_HELP_CHKCASTANY
 						;; size=12 bbWeight=0.25 PerfScore 0.81
 G_M37259_IG05:
        mov      rsi, rax
        mov      rdi, gword ptr [r14+0x08]
        call     [r14+0x18]System.Func`2[System.__Canon,uint]:Invoke(System.__Canon):uint: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_M37259_IG06:
+       vmovdqu  ymm0, ymmword ptr [rbp-0x40]
+       vmovdqu  ymmword ptr [rbx], ymm0
+						;; size=9 bbWeight=1 PerfScore 6.00
+G_M37259_IG07:
        mov      dword ptr [rbx+0x08], 4
-       mov      dword ptr [rbx+0x10], edx
+       mov      dword ptr [rbx+0x10], eax
        mov      rax, rbx
-						;; size=53 bbWeight=1 PerfScore 13.83
-G_M37259_IG06:
+						;; size=13 bbWeight=1 PerfScore 2.25
+G_M37259_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=5f2f6e74) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:<GetPropertyGetter>b__9(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=5f2f6e74) for method 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.Net.WebUtility+UrlDecoder:AddByte(ubyte):this
 ; Assembly listing for method System.Net.WebUtility+UrlDecoder:AddByte(ubyte):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  8,  7   )   byref  ->  rbx         this single-def
 ;  V01 arg1         [V01,T02] (  3,  3   )   ubyte  ->  r15         single-def
 ;  V02 loc0         [V02,T03] (  4,  4   )     int  ->  rcx        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T01] (  3,  6   )     ref  ->  rax         class-hnd single-def "impAppendStmt" <ubyte[]>
 ;
 ; Lcl frame size = 0
 
 G_M40093_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
        mov      r15d, esi
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M40093_IG02:
        cmp      gword ptr [rbx+0x08], 0
        jne      SHORT G_M40093_IG04
 						;; size=7 bbWeight=1 PerfScore 4.00
 G_M40093_IG03:
        movsxd   rsi, dword ptr [rbx+0x18]
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        call     CORINFO_HELP_NEWARR_1_VC
-       lea      rdi, bword ptr [rbx+0x08]
-       mov      rsi, rax
-       call     CORINFO_HELP_CHECKED_ASSIGN_REF
-						;; size=31 bbWeight=0.50 PerfScore 3.50
+       mov      gword ptr [rbx+0x08], rax
+						;; size=23 bbWeight=0.50 PerfScore 3.12
 G_M40093_IG04:
        mov      rax, gword ptr [rbx+0x08]
        mov      ecx, dword ptr [rbx+0x20]
        lea      edx, [rcx+0x01]
        mov      dword ptr [rbx+0x20], edx
        cmp      ecx, dword ptr [rax+0x08]
        jae      SHORT G_M40093_IG06
        mov      byte  ptr [rax+rcx+0x10], r15b
 						;; size=23 bbWeight=1 PerfScore 10.50
 G_M40093_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M40093_IG06:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 87, prolog size 9, PerfScore 24.50, instruction count 27, allocated bytes for code 87 (MethodHash=ced66362) for method System.Net.WebUtility+UrlDecoder:AddByte(ubyte):this (FullOpts)
+; Total bytes of code 79, prolog size 9, PerfScore 24.12, instruction count 25, allocated bytes for code 79 (MethodHash=ced66362) for method System.Net.WebUtility+UrlDecoder:AddByte(ubyte):this (FullOpts)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment