Skip to content

Instantly share code, notes, and snippets.

@MihuBot
Created July 4, 2024 20:47
Show Gist options
  • Save MihuBot/5224cefdce546b3814278dfdc52bd5c4 to your computer and use it in GitHub Desktop.
Save MihuBot/5224cefdce546b3814278dfdc52bd5c4 to your computer and use it in GitHub Desktop.

Top method improvements

-5 (-1.57 % of base) - System.Globalization.EastAsianLunisolarCalendar:MaxEraCalendarYear(int):int:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:MaxEraCalendarYear(int):int: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; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] ( 11,  7.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
+;  V00 this         [V00,T01] ( 15,  9.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T02] (  7,  7.50)     int  ->  r15        
-;  V02 loc0         [V02,T03] (  5,  7   )     ref  ->  r12         class-hnd exact single-def <System.Globalization.EraInfo[]>
-;  V03 loc1         [V03,T08] (  2,  1   )     int  ->  rdi        
+;  V02 loc0         [V02,T03] (  5,  7   )     ref  ->  r13         class-hnd exact single-def <System.Globalization.EraInfo[]>
+;  V03 loc1         [V03,T07] (  2,  1   )     int  ->  rdi        
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "spilled call-like call argument" <System.DateTime>
-;  V06 tmp2         [V06,T11] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;  V07 tmp3         [V07,T12] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V08 tmp4         [V08,T07] (  2,  2   )     int  ->  r12         "non-inline candidate call"
+;  V06 tmp2         [V06,T10] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+;  V07 tmp3         [V07,T11] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+;  V08 tmp4         [V08,T06] (  2,  2   )     int  ->  r13         "non-inline candidate call"
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "spilled call-like call argument" <System.DateTime>
-;  V10 tmp6         [V10,T09] (  2,  1   )    long  ->  rsi         "field V05._dateData (fldOffset=0x0)" P-INDEP
-;  V11 tmp7         [V11,T10] (  2,  1   )    long  ->  rdx         "field V09._dateData (fldOffset=0x0)" P-INDEP
-;  V12 tmp8         [V12,T13] (  2,  0   )     ref  ->  r14         single-def "argument with side effect"
-;  V13 tmp9         [V13,T14] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
-;  V14 cse0         [V14,T05] (  7,  4.50)    long  ->  r13         "CSE #02: aggressive"
+;  V10 tmp6         [V10,T08] (  2,  1   )    long  ->  rsi         "field V05._dateData (fldOffset=0x0)" P-INDEP
+;  V11 tmp7         [V11,T09] (  2,  1   )    long  ->  rdx         "field V09._dateData (fldOffset=0x0)" P-INDEP
+;  V12 tmp8         [V12,T12] (  2,  0   )     ref  ->  r14         single-def "argument with side effect"
+;  V13 tmp9         [V13,T13] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
+;  V14 cse0         [V14,T05] (  7,  4.50)    long  ->  r14         "CSE #02: aggressive"
 ;  V15 cse1         [V15,T04] (  3,  5   )     int  ->  rcx         "CSE #03: aggressive"
-;  V16 cse2         [V16,T06] (  4,  3   )    long  ->  r14         "CSE #01: aggressive"
-;  V17 rat0         [V17,T00] (  6, 17   )    long  ->  rdi         "Widened IV V03"
+;  V16 rat0         [V16,T00] (  6, 17   )    long  ->  rdi         "Widened IV V03"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M1184_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x30]
+       lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15d, esi
-						;; size=22 bbWeight=1 PerfScore 8.00
+						;; size=19 bbWeight=1 PerfScore 6.00
 G_M1184_IG02:
        mov      rdi, rbx
-       mov      r14, qword ptr [rbx]
-       mov      r13, qword ptr [r14+0x78]
-       call     [r13+0x28]System.Globalization.EastAsianLunisolarCalendar:get_CalEraInfo():System.Globalization.EraInfo[]:this
-       mov      r12, rax
-       test     r12, r12
+       mov      rax, qword ptr [rbx]
+       mov      r14, qword ptr [rax+0x78]
+       call     [r14+0x20]System.Globalization.EastAsianLunisolarCalendar:get_CalEraInfo():System.Globalization.EraInfo[]:this
+       mov      r13, rax
+       test     r13, r13
        jne      SHORT G_M1184_IG05
 						;; size=22 bbWeight=1 PerfScore 8.75
 G_M1184_IG03:
        mov      rdi, rbx
-       mov      rax, r13
+       mov      rax, r14
 						;; size=6 bbWeight=0.50 PerfScore 0.25
 G_M1184_IG04:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
-       tail.jmp [rax+0x20]System.Globalization.EastAsianLunisolarCalendar:get_MaxCalendarYear():int:this
-						;; size=18 bbWeight=0.50 PerfScore 2.62
+       tail.jmp [rax+0x18]System.Globalization.EastAsianLunisolarCalendar:get_MaxCalendarYear():int:this
+						;; size=12 bbWeight=0.50 PerfScore 2.25
 G_M1184_IG05:
        test     r15d, r15d
+       jne      SHORT G_M1184_IG07
+       cmp      dword ptr [rbx+0x08], -1
        jne      SHORT G_M1184_IG06
        mov      rdi, rbx
-       mov      rax, qword ptr [r14+0x48]
-       call     [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this
-       mov      r15d, eax
-						;; size=18 bbWeight=0.50 PerfScore 3.38
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       call     [rax]System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       mov      dword ptr [rbx+0x08], eax
+						;; size=29 bbWeight=0.50 PerfScore 4.88
 G_M1184_IG06:
+       mov      r15d, dword ptr [rbx+0x08]
+						;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M1184_IG07:
        mov      rdi, rbx
-       call     [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:get_MaxDate():System.DateTime:this
+       call     [r14+0x30]System.Globalization.EastAsianLunisolarCalendar:get_MaxDate():System.DateTime:this
        mov      rsi, rax
        mov      rdi, rbx
-       mov      rax, qword ptr [r14+0x58]
-       call     [rax+0x10]System.Globalization.Calendar:GetEra(System.DateTime):int:this
+       mov      rax, qword ptr [rbx]
+       mov      rax, qword ptr [rax+0x58]
+       call     [rax+0x08]System.Globalization.Calendar:GetEra(System.DateTime):int:this
        cmp      eax, r15d
-       jne      SHORT G_M1184_IG08
+       jne      SHORT G_M1184_IG09
        mov      rdi, rbx
-       call     [r13+0x20]System.Globalization.EastAsianLunisolarCalendar:get_MaxCalendarYear():int:this
-       mov      r12d, eax
+       call     [r14+0x18]System.Globalization.EastAsianLunisolarCalendar:get_MaxCalendarYear():int:this
+       mov      r13d, eax
        mov      rdi, rbx
-       call     [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:get_MaxDate():System.DateTime:this
+       call     [r14+0x30]System.Globalization.EastAsianLunisolarCalendar:get_MaxDate():System.DateTime:this
        mov      rdx, rax
        mov      rdi, rbx
-       mov      esi, r12d
-       mov      rax, r13
-						;; size=54 bbWeight=0.50 PerfScore 8.88
-G_M1184_IG07:
-       add      rsp, 8
+       mov      esi, r13d
+       mov      rax, r14
+						;; size=57 bbWeight=0.50 PerfScore 9.88
+G_M1184_IG08:
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
-       tail.jmp [rax+0x08]System.Globalization.EastAsianLunisolarCalendar:GetYear(int,System.DateTime):int:this
-						;; size=18 bbWeight=0.50 PerfScore 2.62
-G_M1184_IG08:
+       tail.jmp [rax]System.Globalization.EastAsianLunisolarCalendar:GetYear(int,System.DateTime):int:this
+						;; size=11 bbWeight=0.50 PerfScore 2.25
+G_M1184_IG09:
        xor      edi, edi
-       mov      ecx, dword ptr [r12+0x08]
+       mov      ecx, dword ptr [r13+0x08]
        test     ecx, ecx
-       jle      SHORT G_M1184_IG13
-       align    [0 bytes for IG09]
-						;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M1184_IG09:
-       mov      rax, gword ptr [r12+8*rdi+0x10]
+       jle      SHORT G_M1184_IG14
+       align    [0 bytes for IG10]
+						;; size=10 bbWeight=0.50 PerfScore 1.75
+G_M1184_IG10:
+       mov      rax, gword ptr [r13+8*rdi+0x10]
        cmp      dword ptr [rax+0x28], r15d
-       jne      SHORT G_M1184_IG12
+       jne      SHORT G_M1184_IG13
 						;; size=11 bbWeight=4 PerfScore 24.00
-G_M1184_IG10:
+G_M1184_IG11:
        mov      eax, edi
-       mov      rax, gword ptr [r12+8*rax+0x10]
+       mov      rax, gword ptr [r13+8*rax+0x10]
        mov      eax, dword ptr [rax+0x34]
 						;; size=10 bbWeight=0.50 PerfScore 2.12
-G_M1184_IG11:
-       add      rsp, 8
+G_M1184_IG12:
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M1184_IG12:
+						;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M1184_IG13:
        inc      edi
        cmp      ecx, edi
-       jg       SHORT G_M1184_IG09
+       jg       SHORT G_M1184_IG10
 						;; size=6 bbWeight=4 PerfScore 6.00
-G_M1184_IG13:
+G_M1184_IG14:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      dword ptr [rbx+0x08], r15d
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      edi, 0x14AFC
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r14, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        mov      rcx, rax
        mov      rsi, r14
        mov      rdx, rbx
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=108 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 319, prolog size 22, PerfScore 70.50, instruction count 102, allocated bytes for code 319 (MethodHash=016bfb5f) for method System.Globalization.EastAsianLunisolarCalendar:MaxEraCalendarYear(int):int:this (FullOpts)
+; Total bytes of code 314, prolog size 19, PerfScore 70.88, instruction count 98, allocated bytes for code 314 (MethodHash=016bfb5f) for method System.Globalization.EastAsianLunisolarCalendar:MaxEraCalendarYear(int):int:this (FullOpts)
-5 (-1.57 % of base) - System.Globalization.EastAsianLunisolarCalendar:MinEraCalendarYear(int):int:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:MinEraCalendarYear(int):int: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; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] ( 11,  7.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
+;  V00 this         [V00,T01] ( 15,  9.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;  V01 arg1         [V01,T02] (  7,  7.50)     int  ->  r15        
-;  V02 loc0         [V02,T03] (  5,  7   )     ref  ->  r12         class-hnd exact single-def <System.Globalization.EraInfo[]>
-;  V03 loc1         [V03,T08] (  2,  1   )     int  ->  rdi        
+;  V02 loc0         [V02,T03] (  5,  7   )     ref  ->  r13         class-hnd exact single-def <System.Globalization.EraInfo[]>
+;  V03 loc1         [V03,T07] (  2,  1   )     int  ->  rdi        
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "spilled call-like call argument" <System.DateTime>
-;  V06 tmp2         [V06,T11] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;  V07 tmp3         [V07,T12] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V08 tmp4         [V08,T07] (  2,  2   )     int  ->  r12         "non-inline candidate call"
+;  V06 tmp2         [V06,T10] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+;  V07 tmp3         [V07,T11] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+;  V08 tmp4         [V08,T06] (  2,  2   )     int  ->  r13         "non-inline candidate call"
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "spilled call-like call argument" <System.DateTime>
-;  V10 tmp6         [V10,T09] (  2,  1   )    long  ->  rsi         "field V05._dateData (fldOffset=0x0)" P-INDEP
-;  V11 tmp7         [V11,T10] (  2,  1   )    long  ->  rdx         "field V09._dateData (fldOffset=0x0)" P-INDEP
-;  V12 tmp8         [V12,T13] (  2,  0   )     ref  ->  r14         single-def "argument with side effect"
-;  V13 tmp9         [V13,T14] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
-;  V14 cse0         [V14,T05] (  7,  4.50)    long  ->  r13         "CSE #02: aggressive"
+;  V10 tmp6         [V10,T08] (  2,  1   )    long  ->  rsi         "field V05._dateData (fldOffset=0x0)" P-INDEP
+;  V11 tmp7         [V11,T09] (  2,  1   )    long  ->  rdx         "field V09._dateData (fldOffset=0x0)" P-INDEP
+;  V12 tmp8         [V12,T12] (  2,  0   )     ref  ->  r14         single-def "argument with side effect"
+;  V13 tmp9         [V13,T13] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
+;  V14 cse0         [V14,T05] (  7,  4.50)    long  ->  r14         "CSE #02: aggressive"
 ;  V15 cse1         [V15,T04] (  3,  5   )     int  ->  rcx         "CSE #03: aggressive"
-;  V16 cse2         [V16,T06] (  4,  3   )    long  ->  r14         "CSE #01: aggressive"
-;  V17 rat0         [V17,T00] (  6, 17   )    long  ->  rdi         "Widened IV V03"
+;  V16 rat0         [V16,T00] (  6, 17   )    long  ->  rdi         "Widened IV V03"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M38142_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x30]
+       lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15d, esi
-						;; size=22 bbWeight=1 PerfScore 8.00
+						;; size=19 bbWeight=1 PerfScore 6.00
 G_M38142_IG02:
        mov      rdi, rbx
-       mov      r14, qword ptr [rbx]
-       mov      r13, qword ptr [r14+0x78]
-       call     [r13+0x28]System.Globalization.EastAsianLunisolarCalendar:get_CalEraInfo():System.Globalization.EraInfo[]:this
-       mov      r12, rax
-       test     r12, r12
+       mov      rax, qword ptr [rbx]
+       mov      r14, qword ptr [rax+0x78]
+       call     [r14+0x20]System.Globalization.EastAsianLunisolarCalendar:get_CalEraInfo():System.Globalization.EraInfo[]:this
+       mov      r13, rax
+       test     r13, r13
        jne      SHORT G_M38142_IG05
 						;; size=22 bbWeight=1 PerfScore 8.75
 G_M38142_IG03:
        mov      rdi, rbx
-       mov      rax, r13
+       mov      rax, r14
 						;; size=6 bbWeight=0.50 PerfScore 0.25
 G_M38142_IG04:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
-       tail.jmp [rax+0x18]System.Globalization.EastAsianLunisolarCalendar:get_MinCalendarYear():int:this
-						;; size=18 bbWeight=0.50 PerfScore 2.62
+       tail.jmp [rax+0x10]System.Globalization.EastAsianLunisolarCalendar:get_MinCalendarYear():int:this
+						;; size=12 bbWeight=0.50 PerfScore 2.25
 G_M38142_IG05:
        test     r15d, r15d
+       jne      SHORT G_M38142_IG07
+       cmp      dword ptr [rbx+0x08], -1
        jne      SHORT G_M38142_IG06
        mov      rdi, rbx
-       mov      rax, qword ptr [r14+0x48]
-       call     [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this
-       mov      r15d, eax
-						;; size=18 bbWeight=0.50 PerfScore 3.38
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       call     [rax]System.Globalization.CalendarData:GetCalendarCurrentEra(System.Globalization.Calendar):int
+       mov      dword ptr [rbx+0x08], eax
+						;; size=29 bbWeight=0.50 PerfScore 4.88
 G_M38142_IG06:
+       mov      r15d, dword ptr [rbx+0x08]
+						;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M38142_IG07:
        mov      rdi, rbx
-       call     [r13+0x30]System.Globalization.EastAsianLunisolarCalendar:get_MinDate():System.DateTime:this
+       call     [r14+0x28]System.Globalization.EastAsianLunisolarCalendar:get_MinDate():System.DateTime:this
        mov      rsi, rax
        mov      rdi, rbx
-       mov      rax, qword ptr [r14+0x58]
-       call     [rax+0x10]System.Globalization.Calendar:GetEra(System.DateTime):int:this
+       mov      rax, qword ptr [rbx]
+       mov      rax, qword ptr [rax+0x58]
+       call     [rax+0x08]System.Globalization.Calendar:GetEra(System.DateTime):int:this
        cmp      eax, r15d
-       jne      SHORT G_M38142_IG08
+       jne      SHORT G_M38142_IG09
        mov      rdi, rbx
-       call     [r13+0x18]System.Globalization.EastAsianLunisolarCalendar:get_MinCalendarYear():int:this
-       mov      r12d, eax
+       call     [r14+0x10]System.Globalization.EastAsianLunisolarCalendar:get_MinCalendarYear():int:this
+       mov      r13d, eax
        mov      rdi, rbx
-       call     [r13+0x30]System.Globalization.EastAsianLunisolarCalendar:get_MinDate():System.DateTime:this
+       call     [r14+0x28]System.Globalization.EastAsianLunisolarCalendar:get_MinDate():System.DateTime:this
        mov      rdx, rax
        mov      rdi, rbx
-       mov      esi, r12d
-       mov      rax, r13
-						;; size=54 bbWeight=0.50 PerfScore 8.88
-G_M38142_IG07:
-       add      rsp, 8
+       mov      esi, r13d
+       mov      rax, r14
+						;; size=57 bbWeight=0.50 PerfScore 9.88
+G_M38142_IG08:
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
-       tail.jmp [rax+0x08]System.Globalization.EastAsianLunisolarCalendar:GetYear(int,System.DateTime):int:this
-						;; size=18 bbWeight=0.50 PerfScore 2.62
-G_M38142_IG08:
+       tail.jmp [rax]System.Globalization.EastAsianLunisolarCalendar:GetYear(int,System.DateTime):int:this
+						;; size=11 bbWeight=0.50 PerfScore 2.25
+G_M38142_IG09:
        xor      edi, edi
-       mov      ecx, dword ptr [r12+0x08]
+       mov      ecx, dword ptr [r13+0x08]
        test     ecx, ecx
-       jle      SHORT G_M38142_IG13
-       align    [0 bytes for IG09]
-						;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M38142_IG09:
-       mov      rax, gword ptr [r12+8*rdi+0x10]
+       jle      SHORT G_M38142_IG14
+       align    [0 bytes for IG10]
+						;; size=10 bbWeight=0.50 PerfScore 1.75
+G_M38142_IG10:
+       mov      rax, gword ptr [r13+8*rdi+0x10]
        cmp      dword ptr [rax+0x28], r15d
-       jne      SHORT G_M38142_IG12
+       jne      SHORT G_M38142_IG13
 						;; size=11 bbWeight=4 PerfScore 24.00
-G_M38142_IG10:
+G_M38142_IG11:
        mov      eax, edi
-       mov      rax, gword ptr [r12+8*rax+0x10]
+       mov      rax, gword ptr [r13+8*rax+0x10]
        mov      eax, dword ptr [rax+0x30]
 						;; size=10 bbWeight=0.50 PerfScore 2.12
-G_M38142_IG11:
-       add      rsp, 8
+G_M38142_IG12:
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M38142_IG12:
+						;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M38142_IG13:
        inc      edi
        cmp      ecx, edi
-       jg       SHORT G_M38142_IG09
+       jg       SHORT G_M38142_IG10
 						;; size=6 bbWeight=4 PerfScore 6.00
-G_M38142_IG13:
+G_M38142_IG14:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      dword ptr [rbx+0x08], r15d
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      edi, 0x14AFC
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r14, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String
        mov      rcx, rax
        mov      rsi, r14
        mov      rdx, rbx
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=108 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 319, prolog size 22, PerfScore 70.50, instruction count 102, allocated bytes for code 319 (MethodHash=874e6b01) for method System.Globalization.EastAsianLunisolarCalendar:MinEraCalendarYear(int):int:this (FullOpts)
+; Total bytes of code 314, prolog size 19, PerfScore 70.88, instruction count 98, allocated bytes for code 314 (MethodHash=874e6b01) for method System.Globalization.EastAsianLunisolarCalendar:MinEraCalendarYear(int):int:this (FullOpts)
-3 (-0.51 % of base) - System.Globalization.HebrewCalendar:AddMonths(System.DateTime,int):System.DateTime:this
 ; Assembly listing for method System.Globalization.HebrewCalendar:AddMonths(System.DateTime,int):System.DateTime: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; 5 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] ( 11, 16.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.HebrewCalendar>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.DateTime>
 ;  V02 arg2         [V02,T04] ( 14, 14.50)     int  ->  [rbp-0x2C]  do-not-enreg[Z] EH-live
 ;  V03 loc0         [V03,T00] ( 12, 20.50)     int  ->  r12        
 ;  V04 loc1         [V04,T16] (  4,  2.50)     int  ->  [rbp-0x30] 
 ;  V05 loc2         [V05,T11] (  5,  5   )     int  ->  r13        
 ;* V06 loc3         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;  V07 loc4         [V07,T05] (  9, 12   )     int  ->  [rbp-0x34] 
 ;  V08 loc5         [V08,T15] (  3,  3   )     int  ->  rax        
 ;* V09 loc6         [V09    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret ld-addr-op <System.DateTime>
 ;  V10 OutArgs      [V10    ] (  1,  1   )  struct (16) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V11 tmp1         [V11,T17] (  2,  2   )     int  ->  rdi         "dup spill"
 ;* V12 tmp2         [V12    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V13 tmp3         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.DateTime>
 ;  V14 tmp4         [V14,T01] (  3, 20   )     int  ->  rax         "dup spill"
 ;  V15 tmp5         [V15,T02] (  3, 20   )     int  ->  rax         "dup spill"
 ;* V16 tmp6         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impSpillSpecialSideEff" <System.ArgumentException>
 ;  V17 tmp7         [V17,T20] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V18 tmp8         [V18,T21] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;  V19 tmp9         [V19,T08] (  3,  6   )    long  ->  rax         "Inlining Arg"
 ;  V20 tmp10        [V20,T14] (  2,  2   )    long  ->  rsi         single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
 ;  V21 tmp11        [V21,T18] (  2,  2   )    long  ->  rcx         "field V09._dateData (fldOffset=0x0)" P-INDEP
 ;* V22 tmp12        [V22    ] (  0,  0   )    long  ->  zero-ref    "field V13._dateData (fldOffset=0x0)" P-INDEP
 ;  V23 tmp13        [V23,T07] (  4,  8   )    long  ->  r15         "fgMakeTemp is creating a new local variable"
 ;  V24 tmp14        [V24,T22] (  2,  0   )     ref  ->  r14         single-def "argument with side effect"
 ;  V25 tmp15        [V25,T23] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
 ;  V26 PSPSym       [V26,T19] (  1,  1   )    long  ->  [rbp-0x50]  do-not-enreg[V] "PSPSym"
 ;  V27 cse0         [V27,T06] (  5,  9.50)    long  ->  [rbp-0x40]  hoist multi-def "CSE #04: aggressive"
 ;  V28 cse1         [V28,T13] (  4,  4   )    long  ->  r13         "CSE #03: moderate"
 ;  V29 cse2         [V29,T12] (  5,  5   )    long  ->  r15         "CSE #01: moderate"
 ;  V30 cse3         [V30,T10] (  6,  5   )    long  ->  r14         "CSE #02: moderate"
 ;  V31 rat0         [V31,T09] (  3,  6   )    long  ->  rdx         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 56
 
 G_M14055_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 56
        lea      rbp, [rsp+0x60]
        mov      qword ptr [rbp-0x50], rsp
        mov      dword ptr [rbp-0x2C], edx
        mov      rbx, rdi
 						;; size=29 bbWeight=1 PerfScore 9.00
 G_M14055_IG02:
        mov      r15, 0xD1FFAB1E
        and      r15, rsi
        mov      rsi, r15
        mov      rdi, rbx
        xor      edx, edx
        mov      r14, qword ptr [rbx]
        mov      r13, qword ptr [r14+0x70]
-       call     [r13+0x38]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
+       call     [r13+0x30]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
        mov      r12d, eax
        mov      rsi, r15
        mov      rdi, rbx
        mov      edx, 2
-       call     [r13+0x38]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
+       call     [r13+0x30]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
        mov      dword ptr [rbp-0x30], eax
        mov      rsi, r15
        mov      rdi, rbx
        mov      edx, 3
-       call     [r13+0x38]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
+       call     [r13+0x30]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
        mov      r13d, eax
        cmp      dword ptr [rbp-0x2C], 0
        jl       G_M14055_IG09
 						;; size=81 bbWeight=1 PerfScore 20.25
 G_M14055_IG03:
        mov      eax, dword ptr [rbp-0x30]
        add      eax, dword ptr [rbp-0x2C]
        mov      dword ptr [rbp-0x34], eax
        mov      rcx, qword ptr [r14+0x60]
        jmp      SHORT G_M14055_IG05
 						;; size=15 bbWeight=0.50 PerfScore 4.00
 G_M14055_IG04:
        inc      r12d
        sub      edi, eax
        mov      dword ptr [rbp-0x34], edi
        mov      rcx, qword ptr [rbp-0x40]
 						;; size=12 bbWeight=2 PerfScore 5.00
 G_M14055_IG05:
        mov      rdi, rbx
        mov      esi, r12d
        xor      edx, edx
        mov      qword ptr [rbp-0x40], rcx
-       call     [rcx+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rcx]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        mov      edi, dword ptr [rbp-0x34]
        cmp      edi, eax
        jg       SHORT G_M14055_IG04
-						;; size=22 bbWeight=4 PerfScore 28.00
+						;; size=21 bbWeight=4 PerfScore 28.00
 G_M14055_IG06:
        mov      dword ptr [rbp-0x34], edi
 						;; size=3 bbWeight=2 PerfScore 2.00
 G_M14055_IG07:
        mov      rdi, rbx
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x34]
        mov      rax, qword ptr [r14+0x50]
-       call     [rax+0x30]System.Globalization.Calendar:GetDaysInMonth(int,int):int:this
+       call     [rax+0x28]System.Globalization.Calendar:GetDaysInMonth(int,int):int:this
        cmp      r13d, eax
        cmovg    r13d, eax
        xor      edi, edi
        mov      dword ptr [rsp], edi
 						;; size=28 bbWeight=1 PerfScore 8.25
 G_M14055_IG08:
        mov      dword ptr [rsp+0x08], edi
        mov      rdi, rbx
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x34]
        mov      ecx, r13d
        xor      r8d, r8d
        xor      r9d, r9d
        mov      rax, qword ptr [r14+0x68]
-       call     [rax+0x30]System.Globalization.Calendar:ToDateTime(int,int,int,int,int,int,int):System.DateTime:this
+       call     [rax+0x28]System.Globalization.Calendar:ToDateTime(int,int,int,int,int,int,int):System.DateTime:this
        mov      rcx, rax
        mov      rdx, 0xD1FFAB1E
        mov      rax, rdx
        imul     rdx:rax, r15
        add      rdx, r15
        mov      rdi, rdx
        shr      rdi, 63
        sar      rdx, 39
        add      rdi, rdx
        mov      rsi, 0xD1FFAB1E
        imul     rdi, rsi
        sub      r15, rdi
        mov      rax, 0xD1FFAB1E
        and      rax, rcx
        add      rax, r15
        mov      rdi, 0xD1FFAB1E
        cmp      rax, rdi
        jbe      G_M14055_IG14
        jmp      SHORT G_M14055_IG13
 						;; size=119 bbWeight=1 PerfScore 20.50
 G_M14055_IG09:
        mov      eax, dword ptr [rbp-0x30]
        mov      edi, eax
        add      edi, dword ptr [rbp-0x2C]
        mov      ecx, edi
        mov      dword ptr [rbp-0x34], ecx
        test     ecx, ecx
        jg       G_M14055_IG07
        mov      edi, eax
        mov      esi, dword ptr [rbp-0x2C]
        neg      esi
        mov      dword ptr [rbp-0x2C], esi
        mov      esi, dword ptr [rbp-0x2C]
        sub      esi, edi
        mov      dword ptr [rbp-0x2C], esi
        dec      r12d
        mov      rcx, qword ptr [r14+0x60]
        mov      rax, rcx
        jmp      SHORT G_M14055_IG11
 						;; size=51 bbWeight=0.50 PerfScore 7.50
 G_M14055_IG10:
        dec      r12d
        mov      edi, dword ptr [rbp-0x2C]
        sub      edi, eax
        mov      dword ptr [rbp-0x2C], edi
        mov      rax, qword ptr [rbp-0x40]
 						;; size=15 bbWeight=2 PerfScore 7.00
 G_M14055_IG11:
        mov      rdi, rbx
        mov      esi, r12d
        xor      edx, edx
        mov      qword ptr [rbp-0x40], rax
-       call     [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        cmp      dword ptr [rbp-0x2C], eax
        jg       SHORT G_M14055_IG10
-						;; size=20 bbWeight=4 PerfScore 31.00
+						;; size=19 bbWeight=4 PerfScore 31.00
 G_M14055_IG12:
        mov      rdi, rbx
        mov      esi, r12d
        xor      edx, edx
        mov      rax, qword ptr [rbp-0x40]
-       call     [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        mov      edx, eax
        sub      edx, dword ptr [rbp-0x2C]
        mov      eax, edx
        mov      dword ptr [rbp-0x34], eax
        jmp      G_M14055_IG07
-						;; size=30 bbWeight=0.50 PerfScore 5.12
+						;; size=29 bbWeight=0.50 PerfScore 5.12
 G_M14055_IG13:
        mov      rax, 0xD1FFAB1E      ; code for System.DateTime:ThrowTicksOutOfRange()
        call     [rax]System.DateTime:ThrowTicksOutOfRange()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M14055_IG14:
        add      rsp, 56
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M14055_IG15:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        mov      rbp, qword ptr [rdi+0x10]
        mov      qword ptr [rsp+0x10], rbp
        lea      rbp, [rbp+0x60]
 						;; size=27 bbWeight=0 PerfScore 0.00
 G_M14055_IG16:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      edi, dword ptr [rbp-0x2C]
        mov      dword ptr [rbx+0x08], edi
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      edi, 0x14B3
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r14, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_AddValue():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_AddValue():System.String
        mov      rcx, rax
        mov      rsi, r14
        mov      rdx, rbx
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=110 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 590, prolog size 29, PerfScore 151.88, instruction count 171, allocated bytes for code 590 (MethodHash=b3cec918) for method System.Globalization.HebrewCalendar:AddMonths(System.DateTime,int):System.DateTime:this (FullOpts)
+; Total bytes of code 587, prolog size 29, PerfScore 151.88, instruction count 171, allocated bytes for code 587 (MethodHash=b3cec918) for method System.Globalization.HebrewCalendar:AddMonths(System.DateTime,int):System.DateTime:this (FullOpts)
-2 (-1.98 % of base) - System.Globalization.Calendar:IsValidMonth(int,int,int):ubyte:this
 ; Assembly listing for method System.Globalization.Calendar:IsValidMonth(int,int,int):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] (  6,  5   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.Calendar>
 ;  V01 arg1         [V01,T01] (  4,  3.50)     int  ->  r15         single-def
 ;  V02 arg2         [V02,T03] (  4,  3   )     int  ->  r13         single-def
 ;  V03 arg3         [V03,T02] (  4,  3.50)     int  ->  r14         single-def
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 0
 
 G_M11141_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15d, esi
        mov      r13d, edx
        mov      r14d, ecx
 						;; size=25 bbWeight=1 PerfScore 6.50
 G_M11141_IG02:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x70]
-       call     [rax+0x08]System.Globalization.Calendar:IsValidYear(int,int):ubyte:this
+       call     [rax]System.Globalization.Calendar:IsValidYear(int,int):ubyte:this
        test     eax, eax
        je       SHORT G_M11141_IG05
-						;; size=23 bbWeight=1 PerfScore 9.00
+						;; size=22 bbWeight=1 PerfScore 9.00
 G_M11141_IG03:
        test     r13d, r13d
        jle      SHORT G_M11141_IG05
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x60]
-       call     [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        cmp      eax, r13d
        setge    al
        movzx    rax, al
-						;; size=33 bbWeight=0.50 PerfScore 5.25
+						;; size=32 bbWeight=0.50 PerfScore 5.25
 G_M11141_IG04:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M11141_IG05:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M11141_IG06:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 101, prolog size 13, PerfScore 24.38, instruction count 42, allocated bytes for code 101 (MethodHash=4eead47a) for method System.Globalization.Calendar:IsValidMonth(int,int,int):ubyte:this (FullOpts)
+; Total bytes of code 99, prolog size 13, PerfScore 24.38, instruction count 42, allocated bytes for code 99 (MethodHash=4eead47a) for method System.Globalization.Calendar:IsValidMonth(int,int,int):ubyte:this (FullOpts)
-2 (-0.43 % of base) - System.Globalization.HijriCalendar:GetDatePart(long,int):int:this
 ; Assembly listing for method System.Globalization.HijriCalendar:GetDatePart(long,int):int: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,T03] (  9,  8   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.HijriCalendar>
 ;  V01 arg1         [V01,T05] (  5,  5   )    long  ->  r15         single-def
 ;  V02 arg2         [V02,T06] (  6,  4.50)     int  ->  r14         single-def
 ;  V03 loc0         [V03,T02] ( 12, 12   )    long  ->  r15        
 ;  V04 loc1         [V04,T04] ( 11,  7   )     int  ->  r13        
 ;  V05 loc2         [V05,T07] ( 10,  6   )    long  ->  r12        
 ;  V06 loc3         [V06,T11] (  3,  2   )    long  ->  rax        
 ;  V07 loc4         [V07,T00] (  9, 14.50)     int  ->  rax        
 ;  V08 loc5         [V08,T14] (  2,  1   )     int  ->  rax        
 ;* V09 loc6         [V09    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.ReadOnlySpan`1[int]>
 ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V11 tmp1         [V11,T15] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
 ;* V12 tmp2         [V12    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
 ;* V13 tmp3         [V13    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
 ;* V14 tmp4         [V14    ] (  0,  0   )   byref  ->  zero-ref    "field V09._reference (fldOffset=0x0)" P-INDEP
 ;* V15 tmp5         [V15    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
 ;* V16 tmp6         [V16    ] (  0,  0   )   byref  ->  zero-ref    "field V12._reference (fldOffset=0x0)" P-INDEP
 ;* V17 tmp7         [V17    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
 ;* V18 tmp8         [V18    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V19 tmp9         [V19    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
 ;  V20 tmp10        [V20,T16] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V21 cse0         [V21,T10] (  3,  2.50)    long  ->  [rbp-0x30]  spill-single-def "CSE #03: moderate"
 ;  V22 cse1         [V22,T12] (  3,  1.50)    long  ->  rax         "CSE #04: moderate"
 ;  V23 cse2         [V23,T01] (  5, 13   )     int  ->  rdi         multi-def "CSE #05: aggressive"
 ;  V24 cse3         [V24,T13] (  3,  1.50)     int  ->  rax         "CSE #06: moderate"
 ;  V25 rat0         [V25,T08] (  3,  6   )    long  ->  rdx         "ReplaceWithLclVar is creating a new local variable"
 ;  V26 rat1         [V26,T09] (  3,  6   )    long  ->  rdx         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 8
 
 G_M55766_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
        mov      r14d, edx
 						;; size=25 bbWeight=1 PerfScore 8.25
 G_M55766_IG02:
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.HijriCalendar:CheckTicksRange(long)
        call     [rax]System.Globalization.HijriCalendar:CheckTicksRange(long)
        mov      rdx, 0xD1FFAB1E
        mov      rax, rdx
        imul     rdx:rax, r15
        add      rdx, r15
        mov      rax, rdx
        shr      rax, 63
        sar      rdx, 39
        lea      r15, [rdx+rax+0x01]
        cmp      dword ptr [rbx+0x14], 0xD1FFAB1E
        jne      SHORT G_M55766_IG04
 						;; size=59 bbWeight=1 PerfScore 13.50
 G_M55766_IG03:
        xor      eax, eax
        mov      dword ptr [rbx+0x14], eax
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M55766_IG04:
        movsxd   rax, dword ptr [rbx+0x14]
        add      r15, rax
        lea      rax, [r15-0x000376C5]
        imul     rdx, rax, 30
        mov      rdi, 0xD1FFAB1E
        mov      rax, rdi
        imul     rdx:rax, rdx
        mov      r13, rdx
        shr      r13, 63
        sar      rdx, 11
        add      r13, rdx
        inc      r13d
        mov      rdi, rbx
        mov      esi, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.HijriCalendar:DaysUpToHijriYear(int):long:this
        call     [rax]System.Globalization.HijriCalendar:DaysUpToHijriYear(int):long:this
        mov      r12, rax
        mov      rdi, rbx
        mov      esi, r13d
        xor      edx, edx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x58]
        mov      qword ptr [rbp-0x30], rax
-       call     [rax+0x08]System.Globalization.Calendar:GetDaysInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetDaysInYear(int,int):int:this
        cdqe     
        cmp      r15, r12
        jge      SHORT G_M55766_IG06
-						;; size=101 bbWeight=1 PerfScore 26.25
+						;; size=100 bbWeight=1 PerfScore 26.25
 G_M55766_IG05:
        sub      r12, rax
        dec      r13d
        jmp      SHORT G_M55766_IG08
 						;; size=8 bbWeight=0.50 PerfScore 1.25
 G_M55766_IG06:
        cmp      r15, r12
        jne      SHORT G_M55766_IG07
        dec      r13d
        mov      rdi, rbx
        mov      esi, r13d
        xor      edx, edx
        mov      rbx, qword ptr [rbp-0x30]
-       call     [rbx+0x08]System.Globalization.Calendar:GetDaysInYear(int,int):int:this
+       call     [rbx]System.Globalization.Calendar:GetDaysInYear(int,int):int:this
        cdqe     
        sub      r12, rax
        jmp      SHORT G_M55766_IG08
-						;; size=30 bbWeight=0.50 PerfScore 4.38
+						;; size=29 bbWeight=0.50 PerfScore 4.38
 G_M55766_IG07:
        add      rax, r12
        cmp      rax, r15
        jge      SHORT G_M55766_IG08
        mov      r12, rax
        inc      r13d
 						;; size=14 bbWeight=0.50 PerfScore 1.00
 G_M55766_IG08:
        test     r14d, r14d
        jne      SHORT G_M55766_IG11
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M55766_IG09:
        mov      eax, r13d
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M55766_IG10:
        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_M55766_IG11:
        mov      eax, 1
        sub      r15, r12
        cmp      r14d, 1
        jne      SHORT G_M55766_IG14
        mov      eax, r15d
 						;; size=17 bbWeight=0.50 PerfScore 1.00
 G_M55766_IG12:
        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_M55766_IG13:
        inc      eax
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M55766_IG14:
        cmp      eax, 12
        jg       SHORT G_M55766_IG15
        lea      edi, [rax-0x01]
        cmp      edi, 13
        jae      G_M55766_IG20
        mov      rcx, 0xD1FFAB1E      ; static handle
        movsxd   rdi, dword ptr [rcx+4*rdi]
        cmp      r15, rdi
        jg       SHORT G_M55766_IG13
 						;; size=36 bbWeight=4 PerfScore 34.00
 G_M55766_IG15:
        lea      edi, [rax-0x01]
        mov      eax, edi
        cmp      r14d, 2
        jne      SHORT G_M55766_IG17
 						;; size=11 bbWeight=0.50 PerfScore 1.00
 G_M55766_IG16:
        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_M55766_IG17:
        dec      eax
        cmp      eax, 13
        jae      SHORT G_M55766_IG20
        mov      rdi, 0xD1FFAB1E      ; static handle
        mov      ecx, r15d
        sub      ecx, dword ptr [rdi+4*rax]
        mov      eax, ecx
        cmp      r14d, 3
        jne      SHORT G_M55766_IG19
 						;; size=31 bbWeight=0.50 PerfScore 3.25
 G_M55766_IG18:
        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_M55766_IG19:
        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_InvalidOperation_DateTimeParsing():System.String
        call     [rax]System.SR:get_InvalidOperation_DateTimeParsing():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this
        call     [rax]System.InvalidOperationException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=57 bbWeight=0 PerfScore 0.00
 G_M55766_IG20:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 470, prolog size 25, PerfScore 104.88, instruction count 149, allocated bytes for code 470 (MethodHash=0f172629) for method System.Globalization.HijriCalendar:GetDatePart(long,int):int:this (FullOpts)
+; Total bytes of code 468, prolog size 25, PerfScore 104.88, instruction count 149, allocated bytes for code 468 (MethodHash=0f172629) for method System.Globalization.HijriCalendar:GetDatePart(long,int):int:this (FullOpts)
-1 (-1.00 % of base) - Internal.Cryptography.Helpers:IsValidMonth(System.Globalization.Calendar,int,int,int):ubyte
 ; Assembly listing for method Internal.Cryptography.Helpers:IsValidMonth(System.Globalization.Calendar,int,int,int):ubyte (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 arg0         [V00,T00] (  5,  4   )     ref  ->  rbx         class-hnd single-def <System.Globalization.Calendar>
 ;  V01 arg1         [V01,T01] (  4,  3.50)     int  ->  r15         single-def
 ;  V02 arg2         [V02,T02] (  4,  3   )     int  ->  r14         single-def
 ;  V03 arg3         [V03,T03] (  3,  2.50)     int  ->  r13         single-def
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 0
 
 G_M37873_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15d, esi
        mov      r14d, edx
        mov      r13d, ecx
 						;; size=25 bbWeight=1 PerfScore 6.50
 G_M37873_IG02:
        mov      rdi, rbx
        mov      esi, r15d
        mov      rax, 0xD1FFAB1E      ; code for Internal.Cryptography.Helpers:IsValidYear(System.Globalization.Calendar,int):ubyte
        call     [rax]Internal.Cryptography.Helpers:IsValidYear(System.Globalization.Calendar,int):ubyte
        test     eax, eax
        je       SHORT G_M37873_IG05
 						;; size=22 bbWeight=1 PerfScore 5.00
 G_M37873_IG03:
        test     r14d, r14d
        jle      SHORT G_M37873_IG05
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r13d
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x60]
-       call     [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        cmp      eax, r14d
        setge    al
        movzx    rax, al
-						;; size=33 bbWeight=0.50 PerfScore 5.25
+						;; size=32 bbWeight=0.50 PerfScore 5.25
 G_M37873_IG04:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M37873_IG05:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M37873_IG06:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 100, prolog size 13, PerfScore 20.38, instruction count 40, allocated bytes for code 100 (MethodHash=b0906c0e) for method Internal.Cryptography.Helpers:IsValidMonth(System.Globalization.Calendar,int,int,int):ubyte (FullOpts)
+; Total bytes of code 99, prolog size 13, PerfScore 20.38, instruction count 40, allocated bytes for code 99 (MethodHash=b0906c0e) for method Internal.Cryptography.Helpers:IsValidMonth(System.Globalization.Calendar,int,int,int):ubyte (FullOpts)
-1 (-5.56 % of base) - System.Globalization.Calendar:GetDaysInYear(int):int:this
 ; Assembly listing for method System.Globalization.Calendar:GetDaysInYear(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->  rdi         this class-hnd single-def <System.Globalization.Calendar>
 ;  V01 arg1         [V01,T01] (  3,  3   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 0
 
 G_M2372_IG01:
        push     rbp
        mov      rbp, rsp
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M2372_IG02:
        xor      edx, edx
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x58]
 						;; size=9 bbWeight=1 PerfScore 4.25
 G_M2372_IG03:
        pop      rbp
-       tail.jmp [rax+0x08]System.Globalization.Calendar:GetDaysInYear(int,int):int:this
-						;; size=5 bbWeight=1 PerfScore 2.50
+       tail.jmp [rax]System.Globalization.Calendar:GetDaysInYear(int,int):int:this
+						;; size=4 bbWeight=1 PerfScore 2.50
 
-; Total bytes of code 18, prolog size 4, PerfScore 8.00, instruction count 7, allocated bytes for code 18 (MethodHash=8e31f6bb) for method System.Globalization.Calendar:GetDaysInYear(int):int:this (FullOpts)
+; Total bytes of code 17, prolog size 4, PerfScore 8.00, instruction count 7, allocated bytes for code 17 (MethodHash=8e31f6bb) for method System.Globalization.Calendar:GetDaysInYear(int):int:this (FullOpts)
-1 (-0.67 % of base) - System.Globalization.Calendar:GetLeapMonth(int,int):int:this
 ; Assembly listing for method System.Globalization.Calendar:GetLeapMonth(int,int):int: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,T01] (  7,  9   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.Calendar>
 ;  V01 arg1         [V01,T02] (  5,  7.50)     int  ->  r15         single-def
 ;  V02 arg2         [V02,T03] (  5,  7.50)     int  ->  r14         single-def
 ;  V03 loc0         [V03,T05] (  3,  5   )     int  ->  r12        
 ;  V04 loc1         [V04,T00] (  6, 17   )     int  ->  [rbp-0x2C] 
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 cse0         [V06,T04] (  3,  6   )    long  ->  r13         "CSE #02: aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M36788_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      rbx, rdi
        mov      r15d, esi
        mov      r14d, edx
 						;; size=25 bbWeight=1 PerfScore 8.25
 G_M36788_IG02:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      rax, qword ptr [rbx]
        mov      r13, qword ptr [rax+0x68]
-       call     [r13+0x28]System.Globalization.Calendar:IsLeapYear(int,int):ubyte:this
+       call     [r13+0x20]System.Globalization.Calendar:IsLeapYear(int,int):ubyte:this
        test     eax, eax
        jne      SHORT G_M36788_IG05
 						;; size=24 bbWeight=1 PerfScore 9.00
 G_M36788_IG03:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M36788_IG04:
        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_M36788_IG05:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x60]
-       call     [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        mov      r12d, eax
        mov      eax, 1
        test     r12d, r12d
        jle      SHORT G_M36788_IG03
-						;; size=32 bbWeight=0.50 PerfScore 4.75
+						;; size=31 bbWeight=0.50 PerfScore 4.75
 G_M36788_IG06:
        mov      rdi, rbx
        mov      esi, r15d
        mov      dword ptr [rbp-0x2C], eax
        mov      edx, eax
        mov      ecx, r14d
-       call     [r13+0x08]System.Globalization.Calendar:IsLeapMonth(int,int,int):ubyte:this
+       call     [r13]System.Globalization.Calendar:IsLeapMonth(int,int,int):ubyte:this
        test     eax, eax
        je       SHORT G_M36788_IG09
 						;; size=22 bbWeight=4 PerfScore 25.00
 G_M36788_IG07:
        mov      eax, dword ptr [rbp-0x2C]
 						;; size=3 bbWeight=0.50 PerfScore 0.50
 G_M36788_IG08:
        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_M36788_IG09:
        mov      eax, dword ptr [rbp-0x2C]
        inc      eax
        cmp      eax, r12d
        jle      SHORT G_M36788_IG06
        jmp      SHORT G_M36788_IG03
 						;; size=12 bbWeight=4 PerfScore 18.00
 
-; Total bytes of code 150, prolog size 16, PerfScore 69.88, instruction count 60, allocated bytes for code 150 (MethodHash=2fd0704b) for method System.Globalization.Calendar:GetLeapMonth(int,int):int:this (FullOpts)
+; Total bytes of code 149, prolog size 16, PerfScore 69.88, instruction count 60, allocated bytes for code 149 (MethodHash=2fd0704b) for method System.Globalization.Calendar:GetLeapMonth(int,int):int:this (FullOpts)
-1 (-5.56 % of base) - System.Globalization.Calendar:GetMonthsInYear(int):int:this
 ; Assembly listing for method System.Globalization.Calendar:GetMonthsInYear(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->  rdi         this class-hnd single-def <System.Globalization.Calendar>
 ;  V01 arg1         [V01,T01] (  3,  3   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 0
 
 G_M22472_IG01:
        push     rbp
        mov      rbp, rsp
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M22472_IG02:
        xor      edx, edx
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x60]
 						;; size=9 bbWeight=1 PerfScore 4.25
 G_M22472_IG03:
        pop      rbp
-       tail.jmp [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
-						;; size=5 bbWeight=1 PerfScore 2.50
+       tail.jmp [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+						;; size=4 bbWeight=1 PerfScore 2.50
 
-; Total bytes of code 18, prolog size 4, PerfScore 8.00, instruction count 7, allocated bytes for code 18 (MethodHash=624da837) for method System.Globalization.Calendar:GetMonthsInYear(int):int:this (FullOpts)
+; Total bytes of code 17, prolog size 4, PerfScore 8.00, instruction count 7, allocated bytes for code 17 (MethodHash=624da837) for method System.Globalization.Calendar:GetMonthsInYear(int):int:this (FullOpts)
-1 (-5.56 % of base) - System.Globalization.Calendar:IsLeapMonth(int,int):ubyte:this
 ; Assembly listing for method System.Globalization.Calendar:IsLeapMonth(int,int):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->  rdi         this class-hnd single-def <System.Globalization.Calendar>
 ;  V01 arg1         [V01,T01] (  3,  3   )     int  ->  rsi         single-def
 ;  V02 arg2         [V02,T02] (  3,  3   )     int  ->  rdx         single-def
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 0
 
 G_M36788_IG01:
        push     rbp
        mov      rbp, rsp
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M36788_IG02:
        xor      ecx, ecx
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x68]
 						;; size=9 bbWeight=1 PerfScore 4.25
 G_M36788_IG03:
        pop      rbp
-       tail.jmp [rax+0x08]System.Globalization.Calendar:IsLeapMonth(int,int,int):ubyte:this
-						;; size=5 bbWeight=1 PerfScore 2.50
+       tail.jmp [rax]System.Globalization.Calendar:IsLeapMonth(int,int,int):ubyte:this
+						;; size=4 bbWeight=1 PerfScore 2.50
 
-; Total bytes of code 18, prolog size 4, PerfScore 8.00, instruction count 7, allocated bytes for code 18 (MethodHash=8bcd704b) for method System.Globalization.Calendar:IsLeapMonth(int,int):ubyte:this (FullOpts)
+; Total bytes of code 17, prolog size 4, PerfScore 8.00, instruction count 7, allocated bytes for code 17 (MethodHash=8bcd704b) for method System.Globalization.Calendar:IsLeapMonth(int,int):ubyte:this (FullOpts)
-1 (-0.53 % of base) - System.Globalization.EastAsianLunisolarCalendar:GetYear(System.DateTime):int:this
 ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:GetYear(System.DateTime):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; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] (  6,  6   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.DateTime>
 ;  V02 loc0         [V02    ] (  2,  2   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V03 loc1         [V03    ] (  1,  1   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V04 loc2         [V04    ] (  1,  1   )     int  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T00] (  5, 10   )     ref  ->  r14         class-hnd single-def "dup spill" <System.Globalization.Calendar>
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.DateTime>
 ;* V08 tmp3         [V08    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V09 tmp4         [V09    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V10 tmp5         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V11 tmp6         [V11,T02] (  6,  6   )    long  ->  r15         single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
 ;* V12 tmp7         [V12    ] (  0,  0   )    long  ->  zero-ref    "field V07._dateData (fldOffset=0x0)" P-INDEP
 ;  V13 tmp8         [V13,T04] (  2,  4   )     int  ->  r12         "argument with side effect"
 ;  V14 tmp9         [V14,T05] (  2,  4   )     int  ->  [rbp-0x44]  spill-single-def "argument with side effect"
 ;  V15 tmp10        [V15,T06] (  2,  4   )     int  ->  rcx         "argument with side effect"
 ;  V16 cse0         [V16,T03] (  4,  4   )    long  ->  r13         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 40
 
 G_M8511_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=25 bbWeight=1 PerfScore 7.25
 G_M8511_IG02:
        mov      rsi, 0xD1FFAB1E
        and      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
        call     [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
        mov      r14, rax
        mov      rdi, r14
        mov      rsi, r15
        mov      r13, qword ptr [r14]
        mov      rax, qword ptr [r13+0x60]
-       call     [rax+0x28]System.Globalization.Calendar:GetYear(System.DateTime):int:this
+       call     [rax+0x20]System.Globalization.Calendar:GetYear(System.DateTime):int:this
        mov      r12d, eax
        mov      rdi, r14
        mov      rsi, r15
        mov      rax, qword ptr [r13+0x58]
-       call     [rax+0x38]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
+       call     [rax+0x30]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
        mov      dword ptr [rbp-0x44], eax
        mov      rdi, r14
        mov      rsi, r15
        mov      rcx, qword ptr [r13+0x50]
-       call     [rcx+0x18]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
+       call     [rcx+0x10]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
        mov      ecx, eax
        lea      rsi, [rbp-0x40]
        mov      qword ptr [rsp], rsi
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x44]
        lea      r8, [rbp-0x30]
        lea      r9, [rbp-0x38]
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
        call     [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
        mov      rdi, rbx
        mov      esi, dword ptr [rbp-0x30]
        mov      rdx, r15
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x78]
-       call     [rax+0x08]System.Globalization.EastAsianLunisolarCalendar:GetYear(int,System.DateTime):int:this
+       call     [rax]System.Globalization.EastAsianLunisolarCalendar:GetYear(int,System.DateTime):int:this
        nop      
-						;; size=150 bbWeight=1 PerfScore 43.50
+						;; size=149 bbWeight=1 PerfScore 43.50
 G_M8511_IG03:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 
-; Total bytes of code 190, prolog size 19, PerfScore 55.00, instruction count 58, allocated bytes for code 190 (MethodHash=76b0dec0) for method System.Globalization.EastAsianLunisolarCalendar:GetYear(System.DateTime):int:this (FullOpts)
+; Total bytes of code 189, prolog size 19, PerfScore 55.00, instruction count 58, allocated bytes for code 189 (MethodHash=76b0dec0) for method System.Globalization.EastAsianLunisolarCalendar:GetYear(System.DateTime):int:this (FullOpts)
-1 (-0.27 % of base) - System.Globalization.HebrewCalendar:AddYears(System.DateTime,int):System.DateTime:this
 ; Assembly listing for method System.Globalization.HebrewCalendar:AddYears(System.DateTime,int):System.DateTime: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; 5 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 11, 11   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.HebrewCalendar>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.DateTime>
 ;  V02 arg2         [V02,T09] (  3,  3   )     int  ->  r15         single-def
 ;  V03 loc0         [V03,T03] (  7,  7   )     int  ->  [rbp-0x2C] 
 ;  V04 loc1         [V04,T04] (  6,  6   )     int  ->  [rbp-0x30] 
 ;  V05 loc2         [V05,T07] (  5,  5   )     int  ->  r12        
 ;  V06 loc3         [V06,T12] (  3,  3   )     int  ->  rax        
 ;  V07 loc4         [V07,T13] (  3,  3   )     int  ->  rax        
 ;* V08 loc5         [V08    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret ld-addr-op <System.DateTime>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (16) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;  V11 tmp2         [V11,T01] (  4,  8   )    long  ->  r15         "dup spill"
 ;* V12 tmp3         [V12    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "non-inline candidate call" <System.DateTime>
 ;* V13 tmp4         [V13    ] (  0,  0   )  struct ( 8) zero-ref    multireg-ret "spilled call-like call argument" <System.DateTime>
 ;* V14 tmp5         [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.DateTime>
 ;  V15 tmp6         [V15,T11] (  2,  2   )    long  ->  rsi         single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
 ;  V16 tmp7         [V16,T15] (  2,  2   )    long  ->  r15         "field V08._dateData (fldOffset=0x0)" P-INDEP
 ;  V17 tmp8         [V17,T16] (  2,  2   )    long  ->  r13         "field V12._dateData (fldOffset=0x0)" P-INDEP
 ;  V18 tmp9         [V18,T17] (  2,  2   )    long  ->  rdx         "field V13._dateData (fldOffset=0x0)" P-INDEP
 ;* V19 tmp10        [V19    ] (  0,  0   )    long  ->  zero-ref    "field V14._dateData (fldOffset=0x0)" P-INDEP
 ;  V20 tmp11        [V20,T02] (  4,  8   )    long  ->  r14         "fgMakeTemp is creating a new local variable"
 ;  V21 cse0         [V21,T10] (  4,  4   )    long  ->  r12         "CSE #03: moderate"
 ;  V22 cse1         [V22,T14] (  3,  3   )    long  ->  r14         "CSE #04: moderate"
 ;  V23 cse2         [V23,T08] (  5,  5   )    long  ->  r14         "CSE #01: aggressive"
 ;  V24 cse3         [V24,T05] (  6,  6   )    long  ->  r13         "CSE #02: aggressive"
 ;  V25 rat0         [V25,T06] (  3,  6   )    long  ->  rdx         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 24
 
 G_M40760_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        mov      rbx, rdi
        mov      r15d, edx
 						;; size=25 bbWeight=1 PerfScore 7.25
 G_M40760_IG02:
        mov      r14, 0xD1FFAB1E
        and      r14, rsi
        mov      rsi, r14
        mov      rdi, rbx
        xor      edx, edx
        mov      r13, qword ptr [rbx]
        mov      r12, qword ptr [r13+0x70]
-       call     [r12+0x38]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
+       call     [r12+0x30]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
        mov      dword ptr [rbp-0x2C], eax
        mov      rsi, r14
        mov      rdi, rbx
        mov      edx, 2
-       call     [r12+0x38]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
+       call     [r12+0x30]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
        mov      dword ptr [rbp-0x30], eax
        mov      rsi, r14
        mov      rdi, rbx
        mov      edx, 3
-       call     [r12+0x38]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
+       call     [r12+0x30]System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
        mov      r12d, eax
        mov      eax, dword ptr [rbp-0x2C]
        add      eax, r15d
        mov      dword ptr [rbp-0x2C], eax
        mov      edi, eax
        xor      esi, esi
        mov      rdx, 0xD1FFAB1E      ; 'years'
        mov      rcx, 0xD1FFAB1E      ; code for System.Globalization.HebrewCalendar:CheckHebrewYearValue(int,int,System.String)
        call     [rcx]System.Globalization.HebrewCalendar:CheckHebrewYearValue(int,int,System.String)
        mov      rdi, rbx
        mov      esi, dword ptr [rbp-0x2C]
        xor      edx, edx
        mov      rax, qword ptr [r13+0x60]
-       call     [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        mov      r15d, dword ptr [rbp-0x30]
        cmp      r15d, eax
        cmovg    r15d, eax
        mov      rdi, rbx
        mov      esi, dword ptr [rbp-0x2C]
        mov      edx, r15d
        mov      rax, qword ptr [r13+0x50]
-       call     [rax+0x30]System.Globalization.Calendar:GetDaysInMonth(int,int):int:this
+       call     [rax+0x28]System.Globalization.Calendar:GetDaysInMonth(int,int):int:this
        cmp      r12d, eax
        cmovg    r12d, eax
        xor      edi, edi
        mov      dword ptr [rsp], edi
-						;; size=163 bbWeight=1 PerfScore 40.50
+						;; size=162 bbWeight=1 PerfScore 40.50
 G_M40760_IG03:
        mov      dword ptr [rsp+0x08], edi
        mov      rdi, rbx
        mov      esi, dword ptr [rbp-0x2C]
        mov      edx, r15d
        mov      ecx, r12d
        xor      r8d, r8d
        xor      r9d, r9d
        mov      rax, qword ptr [r13+0x68]
-       call     [rax+0x30]System.Globalization.Calendar:ToDateTime(int,int,int,int,int,int,int):System.DateTime:this
+       call     [rax+0x28]System.Globalization.Calendar:ToDateTime(int,int,int,int,int,int,int):System.DateTime:this
        mov      r15, rax
        mov      rdx, 0xD1FFAB1E
        mov      rax, rdx
        imul     rdx:rax, r14
        add      rdx, r14
        mov      rdi, rdx
        shr      rdi, 63
        sar      rdx, 39
        add      rdi, rdx
        mov      rax, 0xD1FFAB1E
        imul     rdi, rax
        sub      r14, rdi
        mov      r12, 0xD1FFAB1E
        and      r15, r12
        add      r15, r14
        mov      rdi, rbx
        mov      r14, qword ptr [r13+0x40]
        call     [r14+0x20]System.Globalization.Calendar:get_MinSupportedDateTime():System.DateTime:this
        mov      r13, rax
        mov      rdi, rbx
        call     [r14+0x28]System.Globalization.Calendar:get_MaxSupportedDateTime():System.DateTime:this
        mov      rdx, rax
        mov      rdi, r15
        mov      rsi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Calendar:CheckAddResult(long,System.DateTime,System.DateTime)
        call     [rax]System.Globalization.Calendar:CheckAddResult(long,System.DateTime,System.DateTime)
        mov      rax, 0xD1FFAB1E
        cmp      r15, rax
        ja       SHORT G_M40760_IG05
        mov      rax, r15
 						;; size=158 bbWeight=1 PerfScore 31.50
 G_M40760_IG04:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M40760_IG05:
        mov      rax, 0xD1FFAB1E      ; code for System.DateTime:ThrowTicksOutOfRange()
        call     [rax]System.DateTime:ThrowTicksOutOfRange()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 374, prolog size 19, PerfScore 83.50, instruction count 104, allocated bytes for code 374 (MethodHash=e9e460c7) for method System.Globalization.HebrewCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
+; Total bytes of code 373, prolog size 19, PerfScore 83.50, instruction count 104, allocated bytes for code 373 (MethodHash=e9e460c7) for method System.Globalization.HebrewCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
-1 (-0.42 % of base) - System.Globalization.HebrewCalendar:CheckHebrewMonthValue(int,int,int):this
 ; Assembly listing for method System.Globalization.HebrewCalendar:CheckHebrewMonthValue(int,int,int):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,T01] (  4,  4   )     ref  ->  rdi         this class-hnd single-def <System.Globalization.HebrewCalendar>
 ;  V01 arg1         [V01,T02] (  3,  3   )     int  ->  rsi         single-def
 ;  V02 arg2         [V02,T00] (  5,  4   )     int  ->  rbx         single-def
 ;  V03 arg3         [V03,T03] (  3,  3   )     int  ->  rcx         single-def
 ;  V04 loc0         [V04,T04] (  3,  2   )     int  ->  r15        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T05] (  3,  0   )     ref  ->  r14         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V07 tmp2         [V07,T06] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V08 tmp3         [V08,T09] (  2,  0   )     ref  ->  r13         class-hnd exact single-def "impImportAndPushBox" <System.String>
 ;  V09 tmp4         [V09,T07] (  3,  0   )     ref  ->  r12         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V10 tmp5         [V10,T08] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;  V11 tmp6         [V11,T10] (  2,  0   )     ref  ->  [rbp-0x30]  spill-single-def "argument with side effect"
 ;  V12 tmp7         [V12,T11] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
 ;
 ; Lcl frame size = 8
 
 G_M54049_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      ebx, edx
 						;; size=18 bbWeight=1 PerfScore 7.75
 G_M54049_IG02:
        mov      edx, ecx
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x60]
-       call     [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        mov      r15d, eax
        test     ebx, ebx
        jle      SHORT G_M54049_IG04
        cmp      ebx, r15d
        jg       SHORT G_M54049_IG04
-						;; size=24 bbWeight=1 PerfScore 10.00
+						;; size=23 bbWeight=1 PerfScore 10.00
 G_M54049_IG03:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M54049_IG04:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      dword ptr [r14+0x08], ebx
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_Range():System.String
        call     [rax]System.SR:get_ArgumentOutOfRange_Range():System.String
        mov      r13, rax
        mov      dword ptr [rbx+0x08], 1
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      dword ptr [r12+0x08], r15d
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      edi, 0x13334
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      gword ptr [rbp-0x30], rax
        mov      rdx, r12
        mov      rsi, rbx
        mov      rdi, r13
        mov      rcx, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object,System.Object):System.String
        call     [rcx]System.SR:Format(System.String,System.Object,System.Object):System.String
        mov      rcx, rax
        mov      rsi, gword ptr [rbp-0x30]
        mov      rdx, r14
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=182 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 239, prolog size 16, PerfScore 22.00, instruction count 62, allocated bytes for code 239 (MethodHash=92cb2cde) for method System.Globalization.HebrewCalendar:CheckHebrewMonthValue(int,int,int):this (FullOpts)
+; Total bytes of code 238, prolog size 16, PerfScore 22.00, instruction count 62, allocated bytes for code 238 (MethodHash=92cb2cde) for method System.Globalization.HebrewCalendar:CheckHebrewMonthValue(int,int,int):this (FullOpts)
-1 (-0.49 % of base) - System.Globalization.HebrewCalendar:IsLeapDay(int,int,int,int):ubyte:this
 ; Assembly listing for method System.Globalization.HebrewCalendar:IsLeapDay(int,int,int,int):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] (  7,  5.50)     ref  ->  rbx         this class-hnd single-def <System.Globalization.HebrewCalendar>
 ;  V01 arg1         [V01,T01] (  6,  4.50)     int  ->  r15         single-def
 ;  V02 arg2         [V02,T02] (  6,  4.50)     int  ->  r14         single-def
 ;  V03 arg3         [V03,T04] (  5,  3.50)     int  ->  r12         single-def
 ;  V04 arg4         [V04,T03] (  5,  4   )     int  ->  r13         single-def
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 cse0         [V06,T05] (  3,  2.50)    long  ->  [rbp-0x30]  spill-single-def "CSE #02: aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M51319_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      rbx, rdi
        mov      r15d, esi
        mov      r14d, edx
        mov      r12d, ecx
        mov      r13d, r8d
 						;; size=31 bbWeight=1 PerfScore 8.75
 G_M51319_IG02:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      ecx, r13d
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x68]
        mov      qword ptr [rbp-0x30], rax
-       call     [rax+0x08]System.Globalization.Calendar:IsLeapMonth(int,int,int):ubyte:this
+       call     [rax]System.Globalization.Calendar:IsLeapMonth(int,int,int):ubyte:this
        test     eax, eax
        je       SHORT G_M51319_IG05
-						;; size=30 bbWeight=1 PerfScore 10.25
+						;; size=29 bbWeight=1 PerfScore 10.25
 G_M51319_IG03:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      ecx, r12d
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.HebrewCalendar:CheckHebrewDayValue(int,int,int,int):this
        call     [rax]System.Globalization.HebrewCalendar:CheckHebrewDayValue(int,int,int,int):this
        mov      eax, 1
 						;; size=32 bbWeight=0.50 PerfScore 2.38
 G_M51319_IG04:
        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_M51319_IG05:
        mov      rdi, rbx
        mov      esi, r15d
        xor      edx, edx
        mov      rax, qword ptr [rbp-0x30]
-       call     [rax+0x28]System.Globalization.Calendar:IsLeapYear(int,int):ubyte:this
+       call     [rax+0x20]System.Globalization.Calendar:IsLeapYear(int,int):ubyte:this
        test     eax, eax
        je       SHORT G_M51319_IG07
        cmp      r14d, 6
        jne      SHORT G_M51319_IG07
        cmp      r12d, 30
        jne      SHORT G_M51319_IG07
        mov      eax, 1
 						;; size=36 bbWeight=0.50 PerfScore 4.38
 G_M51319_IG06:
        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_M51319_IG07:
        mov      rdi, rbx
        mov      esi, r15d
        mov      edx, r14d
        mov      ecx, r12d
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.HebrewCalendar:CheckHebrewDayValue(int,int,int,int):this
        call     [rax]System.Globalization.HebrewCalendar:CheckHebrewDayValue(int,int,int,int):this
        xor      eax, eax
 						;; size=29 bbWeight=0.50 PerfScore 2.38
 G_M51319_IG08:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 
-; Total bytes of code 203, prolog size 16, PerfScore 34.50, instruction count 75, allocated bytes for code 203 (MethodHash=6f413788) for method System.Globalization.HebrewCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
+; Total bytes of code 202, prolog size 16, PerfScore 34.50, instruction count 75, allocated bytes for code 202 (MethodHash=6f413788) for method System.Globalization.HebrewCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
-1 (-0.24 % of base) - System.Security.Cryptography.X509Certificates.X509Certificate:FormatDate(System.DateTime):System.String
 ; Assembly listing for method System.Security.Cryptography.X509Certificates.X509Certificate:FormatDate(System.DateTime):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; 9 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00    ] (  7,  7   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
 ;  V01 loc0         [V01,T01] ( 11,  7.50)     ref  ->  rbx         class-hnd <System.Globalization.CultureInfo>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T00] (  6,  8   )     ref  ->  r14         class-hnd single-def "impAppendStmt" <System.Globalization.Calendar>
 ;  V04 tmp2         [V04,T02] (  4,  6   )     int  ->  r13         "impAppendStmt"
 ;  V05 tmp3         [V05,T03] (  4,  5   )     int  ->  r12         "impAppendStmt"
 ;  V06 tmp4         [V06,T04] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Globalization.HijriCalendar>
 ;  V07 tmp5         [V07,T07] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Globalization.DateTimeFormatInfo>
 ;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
 ;* V09 tmp7         [V09,T12] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V10 tmp8         [V10,T05] (  3,  4   )     int  ->  [rbp-0x34]  spill-single-def "Inlining Arg"
 ;* V11 tmp9         [V11,T13] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V12 tmp10        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
 ;* V13 tmp11        [V13    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.DateTime>
 ;* V14 tmp12        [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
 ;  V15 tmp13        [V15    ] (  7,  7   )    long  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
 ;  V16 tmp14        [V16,T10] (  2,  2   )    long  ->  rdi         "field V13._dateData (fldOffset=0x0)" P-INDEP
 ;* V17 tmp15        [V17,T11] (  0,  0   )    long  ->  zero-ref    "field V14._ticks (fldOffset=0x0)" P-INDEP
 ;  V18 tmp16        [V18,T08] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V19 tmp17        [V19,T09] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V20 cse0         [V20,T06] (  3,  2.50)    long  ->  r15         "CSE #03: moderate"
 ;
 ; Lcl frame size = 24
 
 G_M18190_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        mov      qword ptr [rbp-0x30], rdi
 						;; size=23 bbWeight=1 PerfScore 7.75
 G_M18190_IG02:
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo
        call     [rax]System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo
        mov      rbx, rax
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      r15, qword ptr [rax+0x50]
        call     [r15+0x20]System.Globalization.CultureInfo:get_DateTimeFormat():System.Globalization.DateTimeFormatInfo:this
        mov      r14, gword ptr [rax+0x90]
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.DateTime:get_Year():int:this
        call     [rax]System.DateTime:get_Year():int:this
        mov      r13d, eax
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.DateTime:get_Month():int:this
        call     [rax]System.DateTime:get_Month():int:this
        mov      r12d, eax
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.DateTime:get_Day():int:this
        call     [rax]System.DateTime:get_Day():int:this
        mov      dword ptr [rbp-0x34], eax
        mov      rdi, r14
        mov      esi, r13d
        mov      rcx, 0xD1FFAB1E      ; code for Internal.Cryptography.Helpers:IsValidYear(System.Globalization.Calendar,int):ubyte
        call     [rcx]Internal.Cryptography.Helpers:IsValidYear(System.Globalization.Calendar,int):ubyte
        test     eax, eax
        je       SHORT G_M18190_IG04
 						;; size=115 bbWeight=1 PerfScore 30.50
 G_M18190_IG03:
        test     r12d, r12d
        jle      SHORT G_M18190_IG04
        mov      rdi, r14
        mov      esi, r13d
        xor      edx, edx
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x60]
-       call     [rax+0x08]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
+       call     [rax]System.Globalization.Calendar:GetMonthsInYear(int,int):int:this
        cmp      eax, r12d
        jl       SHORT G_M18190_IG04
        cmp      dword ptr [rbp-0x34], 0
        jle      SHORT G_M18190_IG04
        mov      rdi, r14
        mov      esi, r13d
        mov      edx, r12d
        xor      ecx, ecx
        mov      r8, qword ptr [r14]
        mov      r8, qword ptr [r8+0x50]
-       call     [r8+0x38]System.Globalization.Calendar:GetDaysInMonth(int,int,int):int:this
+       call     [r8+0x30]System.Globalization.Calendar:GetDaysInMonth(int,int,int):int:this
        cmp      eax, dword ptr [rbp-0x34]
        jge      G_M18190_IG06
-						;; size=65 bbWeight=0.50 PerfScore 12.12
+						;; size=64 bbWeight=0.50 PerfScore 12.12
 G_M18190_IG04:
        mov      rdi, rbx
        call     [r15+0x20]System.Globalization.CultureInfo:get_DateTimeFormat():System.Globalization.DateTimeFormatInfo:this
        mov      rsi, gword ptr [rax+0x90]
        mov      rdi, 0xD1FFAB1E      ; System.Globalization.UmAlQuraCalendar
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        test     rax, rax
        je       SHORT G_M18190_IG05
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x58]
        call     [rax]System.Globalization.CultureInfo:Clone():System.Object:this
        mov      rsi, rax
        mov      rdi, 0xD1FFAB1E      ; System.Globalization.CultureInfo
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        mov      rbx, rax
        mov      rdi, 0xD1FFAB1E      ; System.Globalization.HijriCalendar
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x20]System.Globalization.CultureInfo:get_DateTimeFormat():System.Globalization.DateTimeFormatInfo:this
        mov      rdi, rax
        mov      dword ptr [r15+0x14], 0xD1FFAB1E
        mov      qword ptr [r15+0x08], -1
        mov      rsi, r15
        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      SHORT G_M18190_IG06
 						;; size=150 bbWeight=0.50 PerfScore 20.38
 G_M18190_IG05:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rbx, gword ptr [rdi]
 						;; size=13 bbWeight=0.50 PerfScore 1.12
 G_M18190_IG06:
        mov      rdi, qword ptr [rbp-0x30]
        mov      rcx, 0xD1FFAB1E
        mov      rdx, rbx
        xor      rsi, rsi
        mov      rax, 0xD1FFAB1E      ; code for System.DateTimeFormat:Format(System.DateTime,System.String,System.IFormatProvider,System.TimeSpan):System.String
        call     [rax]System.DateTimeFormat:Format(System.DateTime,System.String,System.IFormatProvider,System.TimeSpan):System.String
        nop      
 						;; size=32 bbWeight=1 PerfScore 5.25
 G_M18190_IG07:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 
-; Total bytes of code 413, prolog size 19, PerfScore 81.38, instruction count 105, allocated bytes for code 413 (MethodHash=2e35b8f1) for method System.Security.Cryptography.X509Certificates.X509Certificate:FormatDate(System.DateTime):System.String (FullOpts)
+; Total bytes of code 412, prolog size 19, PerfScore 81.38, instruction count 105, allocated bytes for code 412 (MethodHash=2e35b8f1) for method System.Security.Cryptography.X509Certificates.X509Certificate:FormatDate(System.DateTime):System.String (FullOpts)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment