MihuBot / runtime-utils

0 stars 0 forks source link

[X64] xtqqczze/dotnet-runtime/CurrentEraValue #475

Open MihuBot opened 2 weeks ago

MihuBot commented 2 weeks ago

Job completed in 14 minutes.

Diffs

Found 263 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41551340
Total bytes of diff: 41551403
Total bytes of delta: 63 (0.00 % of base)
Total relative delta: 0.14
    diff is a regression.
    relative diff is a regression.

Top file regressions (bytes):
          65 : System.Private.CoreLib.dasm (0.00 % of base)

Top file improvements (bytes):
          -2 : System.Security.Cryptography.dasm (-0.00 % of base)

2 total files with Code Size differences (1 improved, 1 regressed), 257 unchanged.

Top method regressions (bytes):
          20 (3.05 % of base) : System.Private.CoreLib.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
          15 (6.41 % of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this (FullOpts)
          15 (7.77 % of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this (FullOpts)
          15 (3.18 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this (FullOpts)
          12 (5.66 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this (FullOpts)
           1 (0.05 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts)
           1 (0.09 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (FullOpts)
           1 (0.05 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:TryParse(System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,int,byref):ubyte (FullOpts) (2 methods)
           1 (0.27 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
           1 (0.93 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this (FullOpts)
           1 (0.39 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this (FullOpts)
           1 (1.64 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this (FullOpts)
           1 (1.52 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this (FullOpts)
           1 (1.67 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this (FullOpts)
           1 (4.00 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this (FullOpts)
           1 (0.30 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
           1 (1.32 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this (FullOpts)
           1 (1.75 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)

Top method improvements (bytes):
          -5 (-1.57 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:MaxEraCalendarYear(int):int:this (FullOpts)
          -5 (-1.57 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:MinEraCalendarYear(int):int:this (FullOpts)
          -3 (-0.51 % of base) : System.Private.CoreLib.dasm - System.Globalization.HebrewCalendar:AddMonths(System.DateTime,int):System.DateTime:this (FullOpts)
          -2 (-1.98 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:IsValidMonth(int,int,int):ubyte:this (FullOpts)
          -2 (-0.43 % of base) : System.Private.CoreLib.dasm - System.Globalization.HijriCalendar:GetDatePart(long,int):int:this (FullOpts)
          -1 (-1.00 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:IsValidMonth(System.Globalization.Calendar,int,int,int):ubyte (FullOpts)
          -1 (-5.56 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:GetDaysInYear(int):int:this (FullOpts)
          -1 (-0.67 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:GetLeapMonth(int,int):int:this (FullOpts)
          -1 (-5.56 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:GetMonthsInYear(int):int:this (FullOpts)
          -1 (-5.56 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:IsLeapMonth(int,int):ubyte:this (FullOpts)
          -1 (-0.53 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GetYear(System.DateTime):int:this (FullOpts)
          -1 (-0.27 % of base) : System.Private.CoreLib.dasm - System.Globalization.HebrewCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
          -1 (-0.42 % of base) : System.Private.CoreLib.dasm - System.Globalization.HebrewCalendar:CheckHebrewMonthValue(int,int,int):this (FullOpts)
          -1 (-0.49 % of base) : System.Private.CoreLib.dasm - System.Globalization.HebrewCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
          -1 (-0.24 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509Certificate:FormatDate(System.DateTime):System.String (FullOpts)

Top method regressions (percentages):
          15 (7.77 % of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this (FullOpts)
          15 (6.41 % of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this (FullOpts)
          12 (5.66 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this (FullOpts)
           1 (4.00 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this (FullOpts)
          15 (3.18 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this (FullOpts)
          20 (3.05 % of base) : System.Private.CoreLib.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
           1 (1.75 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)
           1 (1.67 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this (FullOpts)
           1 (1.64 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this (FullOpts)
           1 (1.52 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this (FullOpts)
           1 (1.32 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this (FullOpts)
           1 (0.93 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this (FullOpts)
           1 (0.39 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this (FullOpts)
           1 (0.30 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
           1 (0.27 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
           1 (0.09 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (FullOpts)
           1 (0.05 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts)
           1 (0.05 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:TryParse(System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,int,byref):ubyte (FullOpts) (2 methods)

Top method improvements (percentages):
          -1 (-5.56 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:GetDaysInYear(int):int:this (FullOpts)
          -1 (-5.56 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:GetMonthsInYear(int):int:this (FullOpts)
          -1 (-5.56 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:IsLeapMonth(int,int):ubyte:this (FullOpts)
          -2 (-1.98 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:IsValidMonth(int,int,int):ubyte:this (FullOpts)
          -5 (-1.57 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:MaxEraCalendarYear(int):int:this (FullOpts)
          -5 (-1.57 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:MinEraCalendarYear(int):int:this (FullOpts)
          -1 (-1.00 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:IsValidMonth(System.Globalization.Calendar,int,int,int):ubyte (FullOpts)
          -1 (-0.67 % of base) : System.Private.CoreLib.dasm - System.Globalization.Calendar:GetLeapMonth(int,int):int:this (FullOpts)
          -1 (-0.53 % of base) : System.Private.CoreLib.dasm - System.Globalization.EastAsianLunisolarCalendar:GetYear(System.DateTime):int:this (FullOpts)
          -3 (-0.51 % of base) : System.Private.CoreLib.dasm - System.Globalization.HebrewCalendar:AddMonths(System.DateTime,int):System.DateTime:this (FullOpts)
          -1 (-0.49 % of base) : System.Private.CoreLib.dasm - System.Globalization.HebrewCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
          -2 (-0.43 % of base) : System.Private.CoreLib.dasm - System.Globalization.HijriCalendar:GetDatePart(long,int):int:this (FullOpts)
          -1 (-0.42 % of base) : System.Private.CoreLib.dasm - System.Globalization.HebrewCalendar:CheckHebrewMonthValue(int,int,int):this (FullOpts)
          -1 (-0.27 % of base) : System.Private.CoreLib.dasm - System.Globalization.HebrewCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
          -1 (-0.24 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509Certificate:FormatDate(System.DateTime):System.String (FullOpts)

33 total methods with Code Size differences (15 improved, 18 regressed), 252440 unchanged.

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

Artifacts:

MihuBot commented 2 weeks ago

Top method regressions

20 (3.05 % of base) - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this ```diff ; Assembly listing for method System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):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; 1 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T10] ( 4, 3 ) ref -> r14 this class-hnd single-def +; V00 this [V00,T11] ( 4, 3 ) ref -> r14 this class-hnd single-def ; V01 arg1 [V01,T07] ( 6, 4.50) int -> rbx single-def ; V02 arg2 [V02,T06] ( 5, 7 ) int -> rdx ; V03 arg3 [V03,T08] ( 5, 3.50) ubyte -> r15 single-def ; V04 loc0 [V04,T05] ( 5, 9 ) ref -> r14 class-hnd exact single-def ; V05 loc1 [V05,T14] ( 2, 1 ) int -> r13 ; V06 loc2 [V06,T04] ( 8, 10 ) ref -> [rbp-0x30] class-hnd exact ; V07 loc3 [V07,T02] ( 7, 12.50) int -> rbx ; V08 loc4 [V08,T00] ( 12, 17.29) int -> r13 ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T17] ( 3, 0 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V11 tmp2 [V11,T22] ( 2, 0 ) ref -> r14 class-hnd exact "impImportAndPushBox" ; V12 tmp3 [V12,T18] ( 3, 0 ) ref -> r13 class-hnd exact "Single-def Box Helper" ; V13 tmp4 [V13,T19] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V14 tmp5 [V14,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ; V15 tmp6 [V15,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V16 tmp7 [V16,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" -; V17 tmp8 [V17,T11] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V16 tmp7 [V16,T10] ( 5, 5 ) ref -> r13 class-hnd single-def "Inlining Arg" +; V17 tmp8 [V17,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ; V18 tmp9 [V18,T23] ( 2, 0 ) ref -> r12 "argument with side effect" ; V19 tmp10 [V19,T24] ( 2, 0 ) ref -> rdx "argument with side effect" ; V20 tmp11 [V20,T25] ( 2, 0 ) ref -> r15 single-def "argument with side effect" ; V21 tmp12 [V21,T26] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V22 tmp13 [V22,T27] ( 2, 0 ) ref -> r15 single-def "argument with side effect" ; V23 tmp14 [V23,T28] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V24 cse0 [V24,T16] ( 3, 0.12) int -> rdi "CSE #10: conservative" ; V25 cse1 [V25,T03] ( 3, 11.88) int -> rdi "CSE #06: aggressive" ; V26 cse2 [V26,T15] ( 3, 1.50) int -> rdi "CSE #03: moderate" ; V27 cse3 [V27,T09] ( 5, 5.29) int -> r12 "CSE #01: aggressive" ; V28 cse4 [V28,T13] ( 3, 1.50) byref -> rsi "CSE #02: moderate" ; V29 rat0 [V29,T01] ( 6, 17 ) long -> r13 "Widened IV V05" ; ; Lcl frame size = 8 G_M29959_IG01: push rbp push r15 push r14 push r13 push r12 push rbx push rax lea rbp, [rsp+0x30] mov r14, rdi mov ebx, esi mov r15d, ecx ;; size=24 bbWeight=1 PerfScore 8.25 G_M29959_IG02: test ebx, ebx jge SHORT G_M29959_IG06 ;; size=4 bbWeight=1 PerfScore 1.25 G_M29959_IG03: test r15b, r15b - jne G_M29959_IG27 + jne G_M29959_IG28 ;; size=9 bbWeight=0.50 PerfScore 0.62 G_M29959_IG04: mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M29959_IG05: 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_M29959_IG06: test edx, edx + jne SHORT G_M29959_IG08 + mov r13, gword ptr [r14+0x08] + cmp dword ptr [r13+0x08], -1 jne SHORT G_M29959_IG07 - mov rdi, gword ptr [r14+0x08] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x48] - call [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this - mov edx, eax - ;; size=20 bbWeight=0.50 PerfScore 5.25 + mov rdi, r13 + 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 [r13+0x08], eax + ;; size=34 bbWeight=0.50 PerfScore 5.88 G_M29959_IG07: + mov edx, dword ptr [r13+0x08] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M29959_IG08: mov r14, gword ptr [r14+0x10] xor r13d, r13d mov r12d, dword ptr [r14+0x08] test r12d, r12d - jle SHORT G_M29959_IG13 - align [3 bytes for IG08] - ;; size=19 bbWeight=0.50 PerfScore 2.88 -G_M29959_IG08: + jle SHORT G_M29959_IG14 + align [1 bytes for IG09] + ;; size=17 bbWeight=0.50 PerfScore 2.88 +G_M29959_IG09: mov rcx, gword ptr [r14+8*r13+0x10] cmp edx, dword ptr [rcx+0x28] - jne SHORT G_M29959_IG12 + jne SHORT G_M29959_IG13 ;; size=10 bbWeight=4 PerfScore 24.00 -G_M29959_IG09: +G_M29959_IG10: cmp ebx, dword ptr [rcx+0x30] - jl SHORT G_M29959_IG20 + jl SHORT G_M29959_IG21 cmp ebx, dword ptr [rcx+0x34] - jg SHORT G_M29959_IG14 + jg SHORT G_M29959_IG15 ;; size=10 bbWeight=0.50 PerfScore 4.00 -G_M29959_IG10: +G_M29959_IG11: mov eax, dword ptr [rcx+0x2C] ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M29959_IG11: +G_M29959_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_M29959_IG12: +G_M29959_IG13: lea ecx, [r13+0x01] mov r13d, ecx cmp r12d, r13d - jg SHORT G_M29959_IG08 + jg SHORT G_M29959_IG09 ;; size=12 bbWeight=4 PerfScore 8.00 -G_M29959_IG13: - test r15b, r15b - je SHORT G_M29959_IG04 - jmp G_M29959_IG25 - ;; size=10 bbWeight=0.50 PerfScore 1.62 G_M29959_IG14: + test r15b, r15b + je G_M29959_IG04 + jmp G_M29959_IG26 + ;; size=14 bbWeight=0.50 PerfScore 1.62 +G_M29959_IG15: mov rsi, 0xD1FFAB1E ; static handle mov edi, dword ptr [rsi] test edi, edi - jge SHORT G_M29959_IG22 + jge SHORT G_M29959_IG23 ;; size=16 bbWeight=0.50 PerfScore 1.75 -G_M29959_IG15: +G_M29959_IG16: mov gword ptr [rbp-0x30], rcx sub ebx, dword ptr [rcx+0x34] dec r13d - js SHORT G_M29959_IG18 + js SHORT G_M29959_IG19 ;; size=12 bbWeight=0.50 PerfScore 2.62 -G_M29959_IG16: +G_M29959_IG17: cmp r12d, r13d - jle SHORT G_M29959_IG23 - align [0 bytes for IG17] + jle SHORT G_M29959_IG24 + align [0 bytes for IG18] ;; size=5 bbWeight=0.25 PerfScore 0.31 -G_M29959_IG17: +G_M29959_IG18: mov edi, r13d mov rsi, gword ptr [r14+8*rdi+0x10] mov edi, dword ptr [rsi+0x34] cmp edi, ebx mov rcx, gword ptr [rbp-0x30] - jl SHORT G_M29959_IG19 - jmp SHORT G_M29959_IG10 + jl SHORT G_M29959_IG20 + jmp SHORT G_M29959_IG11 ;; size=21 bbWeight=3.96 PerfScore 33.66 -G_M29959_IG18: +G_M29959_IG19: mov rcx, gword ptr [rbp-0x30] - jmp SHORT G_M29959_IG20 + jmp SHORT G_M29959_IG21 ;; size=6 bbWeight=0.25 PerfScore 0.75 -G_M29959_IG19: +G_M29959_IG20: sub ebx, edi dec r13d - jns SHORT G_M29959_IG21 + jns SHORT G_M29959_IG22 ;; size=7 bbWeight=3.96 PerfScore 5.94 -G_M29959_IG20: +G_M29959_IG21: test r15b, r15b - je SHORT G_M29959_IG13 - jmp G_M29959_IG26 + je SHORT G_M29959_IG14 + jmp G_M29959_IG27 ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M29959_IG21: +G_M29959_IG22: mov gword ptr [rbp-0x30], rcx - jmp SHORT G_M29959_IG17 + jmp SHORT G_M29959_IG18 ;; size=6 bbWeight=1.98 PerfScore 5.94 -G_M29959_IG22: +G_M29959_IG23: test edi, edi - jg SHORT G_M29959_IG20 + jg SHORT G_M29959_IG21 mov gword ptr [rbp-0x30], rcx mov rdi, 0xD1FFAB1E ; 'Switch.System.Globalization.EnforceJapaneseEraYearRanges' mov rax, 0xD1FFAB1E ; code for System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte call [rax]System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte test eax, eax mov rcx, gword ptr [rbp-0x30] - jne SHORT G_M29959_IG20 - jmp SHORT G_M29959_IG15 + jne SHORT G_M29959_IG21 + jmp SHORT G_M29959_IG16 ;; size=40 bbWeight=0.50 PerfScore 5.00 -G_M29959_IG23: +G_M29959_IG24: cmp r13d, r12d - jae G_M29959_IG28 + jae G_M29959_IG29 mov edi, r13d mov rdi, gword ptr [r14+8*rdi+0x10] mov edi, dword ptr [rdi+0x34] cmp edi, ebx mov rcx, gword ptr [rbp-0x30] - jge G_M29959_IG10 + jge G_M29959_IG11 sub ebx, edi dec r13d - js SHORT G_M29959_IG20 + js SHORT G_M29959_IG21 ;; size=39 bbWeight=0.04 PerfScore 0.37 -G_M29959_IG24: +G_M29959_IG25: mov gword ptr [rbp-0x30], rcx - jmp SHORT G_M29959_IG23 + jmp SHORT G_M29959_IG24 ;; size=6 bbWeight=0.02 PerfScore 0.06 -G_M29959_IG25: +G_M29959_IG26: mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rbx, rax mov edi, 0x14AFC mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r15, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String call [rax]System.SR:get_ArgumentOutOfRange_InvalidEraValue():System.String mov rdx, rax mov rsi, r15 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this call [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=83 bbWeight=0 PerfScore 0.00 -G_M29959_IG26: +G_M29959_IG27: mov rbx, rcx mov rdi, 0xD1FFAB1E ; System.Int32 call CORINFO_HELP_NEWSFAST mov r15, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentOutOfRange_Range():System.String call [rax]System.SR:get_ArgumentOutOfRange_Range():System.String mov r14, rax mov edi, dword ptr [rbx+0x30] mov dword ptr [r15+0x08], edi mov rdi, 0xD1FFAB1E ; System.Int32 call CORINFO_HELP_NEWSFAST mov r13, rax mov edi, dword ptr [rbx+0x34] mov dword ptr [r13+0x08], edi mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rbx, rax mov edi, 0x1407 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r12, rax mov rdx, r13 mov rsi, r15 mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object,System.Object):System.String mov rdx, rax mov rsi, r12 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this call [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=160 bbWeight=0 PerfScore 0.00 -G_M29959_IG27: +G_M29959_IG28: mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rbx, rax mov edi, 0x1407 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r15, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String call [rax]System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String mov rdx, rax mov rsi, r15 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this call [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=83 bbWeight=0 PerfScore 0.00 -G_M29959_IG28: +G_M29959_IG29: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 656, prolog size 24, PerfScore 119.28, instruction count 181, allocated bytes for code 664 (MethodHash=7b408af8) for method System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts) +; Total bytes of code 676, prolog size 24, PerfScore 120.91, instruction count 184, allocated bytes for code 680 (MethodHash=7b408af8) for method System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts) ```
15 (6.41 % of base) - System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this ```diff ; Assembly listing for method System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 4.50) ref -> r15 this class-hnd single-def ; V01 arg1 [V01,T00] ( 10, 5.50) int -> rbx ; V02 loc0 [V02,T03] ( 3, 1.50) ref -> rax class-hnd exact single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" ; V05 tmp2 [V05,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V06 tmp3 [V06,T02] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V06 tmp3 [V06,T02] ( 5, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" ; V07 tmp4 [V07,T07] ( 2, 0 ) ref -> r14 single-def "argument with side effect" ; V08 tmp5 [V08,T08] ( 2, 0 ) ref -> rcx single-def "argument with side effect" ; V09 cse0 [V09,T04] ( 2, 1 ) int -> rdi "CSE #01: moderate" ; ; Lcl frame size = 8 G_M35548_IG01: push rbp push r15 push r14 push rbx push rax lea rbp, [rsp+0x20] mov r15, rdi mov ebx, esi ;; size=17 bbWeight=1 PerfScore 6.00 G_M35548_IG02: mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:get_AbbreviatedEraNames():System.String[]:this call [rax]System.Globalization.DateTimeFormatInfo:get_AbbreviatedEraNames():System.String[]:this cmp dword ptr [rax+0x08], 0 jne SHORT G_M35548_IG05 ;; size=21 bbWeight=1 PerfScore 7.50 G_M35548_IG03: mov rdi, r15 mov esi, ebx mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this ;; size=15 bbWeight=0.50 PerfScore 0.38 G_M35548_IG04: add rsp, 8 pop rbx pop r14 pop r15 pop rbp tail.jmp [rax]System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this ;; size=13 bbWeight=0.50 PerfScore 2.12 G_M35548_IG05: test ebx, ebx + jne SHORT G_M35548_IG07 + mov rbx, gword ptr [r15+0x90] + cmp dword ptr [rbx+0x08], -1 jne SHORT G_M35548_IG06 - mov rdi, gword ptr [r15+0x90] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x48] - call [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this - mov ebx, eax - ;; size=23 bbWeight=0.50 PerfScore 5.25 + mov rdi, rbx + 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=35 bbWeight=0.50 PerfScore 5.88 G_M35548_IG06: + mov ebx, dword ptr [rbx+0x08] + ;; size=3 bbWeight=0.50 PerfScore 1.00 +G_M35548_IG07: mov rax, gword ptr [r15+0x138] dec ebx mov edi, dword ptr [rax+0x08] cmp edi, ebx - jbe SHORT G_M35548_IG08 + jbe SHORT G_M35548_IG09 mov edi, ebx mov rax, gword ptr [rax+8*rdi+0x10] ;; size=23 bbWeight=0.50 PerfScore 3.88 -G_M35548_IG07: +G_M35548_IG08: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62 -G_M35548_IG08: +G_M35548_IG09: mov rdi, 0xD1FFAB1E ; System.Int32 call CORINFO_HELP_NEWSFAST mov r15, rax lea edi, [rbx+0x01] mov dword ptr [r15+0x08], edi mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rbx, 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, r15 mov rdi, rbx 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, rbx call CORINFO_HELP_THROW int3 ;; size=111 bbWeight=0 PerfScore 0.00 -; Total bytes of code 234, prolog size 12, PerfScore 26.75, instruction count 65, allocated bytes for code 234 (MethodHash=351f7523) for method System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this (FullOpts) +; Total bytes of code 249, prolog size 12, PerfScore 28.38, instruction count 68, allocated bytes for code 249 (MethodHash=351f7523) for method System.Globalization.DateTimeFormatInfo:GetAbbreviatedEraName(int):System.String:this (FullOpts) ```
15 (7.77 % of base) - System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this ```diff ; Assembly listing for method System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 3.50) ref -> r15 this class-hnd single-def ; V01 arg1 [V01,T00] ( 9, 7.50) int -> rbx -; V02 loc0 [V02,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def +; V02 loc0 [V02,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" ; V05 tmp2 [V05,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V06 tmp3 [V06,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V06 tmp3 [V06,T02] ( 5, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" ; V07 tmp4 [V07,T07] ( 2, 0 ) ref -> r14 single-def "argument with side effect" ; V08 tmp5 [V08,T08] ( 2, 0 ) ref -> rcx single-def "argument with side effect" ; V09 cse0 [V09,T04] ( 2, 2 ) int -> rdi "CSE #01: aggressive" ; ; Lcl frame size = 8 G_M27329_IG01: push rbp push r15 push r14 push rbx push rax lea rbp, [rsp+0x20] mov r15, rdi mov ebx, esi ;; size=17 bbWeight=1 PerfScore 6.00 G_M27329_IG02: test ebx, ebx - jne SHORT G_M27329_IG04 + jne SHORT G_M27329_IG05 ;; size=4 bbWeight=1 PerfScore 1.25 G_M27329_IG03: - mov rdi, gword ptr [r15+0x90] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x48] - call [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this - mov ebx, eax - ;; size=19 bbWeight=0.50 PerfScore 4.62 + mov rbx, gword ptr [r15+0x90] + cmp dword ptr [rbx+0x08], -1 + jne SHORT G_M27329_IG04 + mov rdi, rbx + 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=31 bbWeight=0.50 PerfScore 5.25 G_M27329_IG04: + mov ebx, dword ptr [rbx+0x08] + ;; size=3 bbWeight=0.50 PerfScore 1.00 +G_M27329_IG05: mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:get_EraNames():System.String[]:this call [rax]System.Globalization.DateTimeFormatInfo:get_EraNames():System.String[]:this dec ebx mov edi, dword ptr [rax+0x08] cmp edi, ebx - jbe SHORT G_M27329_IG06 + jbe SHORT G_M27329_IG07 mov edi, ebx mov rax, gword ptr [rax+8*rdi+0x10] ;; size=31 bbWeight=1 PerfScore 9.25 -G_M27329_IG05: +G_M27329_IG06: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25 -G_M27329_IG06: +G_M27329_IG07: mov rdi, 0xD1FFAB1E ; System.Int32 call CORINFO_HELP_NEWSFAST mov r15, rax lea edi, [rbx+0x01] mov dword ptr [r15+0x08], edi mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rbx, 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, r15 mov rdi, rbx 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, rbx call CORINFO_HELP_THROW int3 ;; size=111 bbWeight=0 PerfScore 0.00 -; Total bytes of code 193, prolog size 12, PerfScore 24.38, instruction count 53, allocated bytes for code 193 (MethodHash=0b4d953e) for method System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this (FullOpts) +; Total bytes of code 208, prolog size 12, PerfScore 26.00, instruction count 56, allocated bytes for code 208 (MethodHash=0b4d953e) for method System.Globalization.DateTimeFormatInfo:GetEraName(int):System.String:this (FullOpts) ```
15 (3.18 % of base) - System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this ```diff ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T05] ( 9, 7 ) ref -> r14 this class-hnd single-def +; V00 this [V00,T05] ( 11, 8 ) ref -> r14 this class-hnd single-def ; V01 arg1 [V01,T08] ( 4, 4 ) int -> r12 single-def ; V02 arg2 [V02,T07] ( 5, 4 ) int -> r13 single-def ; V03 arg3 [V03,T10] ( 4, 3.50) int -> [rbp-0x2C] single-def ; V04 arg4 [V04,T04] ( 15, 10 ) byref -> r15 single-def ; V05 arg5 [V05,T02] ( 5, 11 ) byref -> rbx single-def ; V06 arg6 [V06,T23] ( 1, 1 ) byref -> [rbp+0x10] single-def ; V07 loc0 [V07,T12] ( 5, 3 ) int -> [rbp-0x30] ; V08 loc1 [V08,T15] ( 4, 2.50) int -> rax ; V09 loc2 [V09,T00] ( 14, 21 ) int -> [rbp-0x34] ; V10 loc3 [V10,T03] ( 4, 13 ) int -> [rbp-0x38] ; V11 loc4 [V11,T09] ( 3, 6 ) int -> rax ; V12 loc5 [V12,T01] ( 5, 14 ) int -> rcx ;* V13 loc6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V15 tmp1 [V15 ] ( 0, 0 ) int -> zero-ref ;* V16 tmp2 [V16 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp4 [V18 ] ( 0, 0 ) int -> zero-ref ; V19 tmp5 [V19,T20] ( 2, 1 ) int -> rsi ; V20 tmp6 [V20,T17] ( 2, 2 ) int -> rcx ; V21 tmp7 [V21,T06] ( 3, 8 ) int -> rcx ;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref ;* V23 tmp9 [V23 ] ( 0, 0 ) int -> zero-ref ; V24 tmp10 [V24,T21] ( 2, 1 ) int -> rsi ;* V25 tmp11 [V25 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" ;* V26 tmp12 [V26 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" ;* V27 tmp13 [V27 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" ; V28 tmp14 [V28,T16] ( 3, 2 ) byref -> rdi "field V13._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp15 [V29,T22] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP ; V30 tmp16 [V30,T18] ( 2, 1 ) byref -> rdi single-def "field V25._reference (fldOffset=0x0)" P-INDEP ;* V31 tmp17 [V31,T24] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP ; V32 tmp18 [V32,T19] ( 2, 1 ) byref -> rdi single-def "field V26._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp19 [V33,T25] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP ;* V34 tmp20 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP ;* V35 tmp21 [V35 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP -; V36 cse0 [V36,T11] ( 7, 5 ) long -> [rbp-0x40] spill-single-def "CSE #04: moderate" +; V36 cse0 [V36,T11] ( 7, 4 ) long -> [rbp-0x40] multi-def "CSE #04: moderate" ; V37 cse1 [V37,T13] ( 3, 3 ) int -> rax "CSE #01: moderate" ; V38 cse2 [V38,T14] ( 3, 3 ) int -> rcx "CSE #05: moderate" ; ; Lcl frame size = 24 G_M4131_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 24 lea rbp, [rsp+0x40] mov dword ptr [rbp-0x2C], ecx mov r14, rdi mov r12d, esi mov r13d, edx mov r15, r8 mov rbx, r9 ;; size=37 bbWeight=1 PerfScore 9.00 G_M4131_IG02: mov edi, r12d mov rcx, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte call [rcx]System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte test eax, eax jne SHORT G_M4131_IG04 ;; size=19 bbWeight=1 PerfScore 4.75 G_M4131_IG03: mov rdi, 0xD1FFAB1E ; static handle jmp SHORT G_M4131_IG05 align [0 bytes for IG11] ;; size=12 bbWeight=0.50 PerfScore 1.12 G_M4131_IG04: mov rdi, 0xD1FFAB1E ; static handle ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M4131_IG05: lea eax, [r13-0x01] cmp eax, 12 jae G_M4131_IG17 mov ecx, dword ptr [rbp-0x2C] mov edx, ecx add edx, dword ptr [rdi+4*rax] mov dword ptr [rbp-0x34], edx mov dword ptr [r15], r12d mov r12d, dword ptr [r15] mov rdi, r14 mov rdx, qword ptr [r14] mov rdx, qword ptr [rdx+0x78] - mov qword ptr [rbp-0x40], rdx - call [rdx+0x20]System.Globalization.EastAsianLunisolarCalendar:get_MaxCalendarYear():int:this + call [rdx+0x18]System.Globalization.EastAsianLunisolarCalendar:get_MaxCalendarYear():int:this inc eax cmp r12d, eax jne SHORT G_M4131_IG07 - ;; size=54 bbWeight=1 PerfScore 19.75 + ;; size=50 bbWeight=1 PerfScore 18.75 G_M4131_IG06: dec dword ptr [r15] mov edi, dword ptr [r15] mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte call [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte mov esi, 366 mov edi, 365 test eax, eax cmove esi, edi mov r12d, dword ptr [rbp-0x34] add r12d, esi jmp SHORT G_M4131_IG09 ;; size=42 bbWeight=0.50 PerfScore 6.25 G_M4131_IG07: mov esi, dword ptr [r15] mov rdi, r14 mov edx, 1 - mov rax, qword ptr [rbp-0x40] - call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this + mov rax, qword ptr [r14] + mov rax, qword ptr [rax+0x70] + mov qword ptr [rbp-0x40], rax + call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this mov dword ptr [rbp-0x30], eax mov esi, dword ptr [r15] mov rdi, r14 mov edx, 2 mov rcx, qword ptr [rbp-0x40] - call [rcx]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this + call [rcx+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this mov ecx, dword ptr [rbp-0x30] cmp r13d, ecx jl SHORT G_M4131_IG08 jne SHORT G_M4131_IG10 mov r13d, dword ptr [rbp-0x2C] cmp r13d, eax jge SHORT G_M4131_IG10 - ;; size=56 bbWeight=0.50 PerfScore 9.75 + ;; size=65 bbWeight=0.50 PerfScore 11.75 G_M4131_IG08: dec dword ptr [r15] mov edi, dword ptr [r15] mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte call [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianIsLeapYear(int):ubyte mov esi, 366 mov edi, 365 test eax, eax cmove esi, edi mov r12d, dword ptr [rbp-0x34] add r12d, esi ;; size=40 bbWeight=0.50 PerfScore 5.25 G_M4131_IG09: mov esi, dword ptr [r15] mov rdi, r14 mov edx, 1 - mov r13, qword ptr [rbp-0x40] - call [r13]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this + mov rax, qword ptr [r14] + mov rcx, qword ptr [rax+0x70] + mov r13, rcx + call [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this mov dword ptr [rbp-0x30], eax mov esi, dword ptr [r15] mov rdi, r14 mov edx, 2 - call [r13]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this + call [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this mov dword ptr [rbp-0x34], r12d + mov qword ptr [rbp-0x40], r13 mov ecx, dword ptr [rbp-0x30] - ;; size=44 bbWeight=0.50 PerfScore 7.50 + ;; size=54 bbWeight=0.50 PerfScore 9.62 G_M4131_IG10: dec ecx cmp ecx, 12 jae G_M4131_IG17 mov esi, ecx mov rdi, 0xD1FFAB1E ; static handle mov r12d, dword ptr [rbp-0x34] sub r12d, dword ptr [rdi+4*rsi] dec eax sub r12d, eax mov dword ptr [rbp-0x38], 0x8000 mov esi, dword ptr [r15] mov rdi, r14 mov edx, 3 mov r13, qword ptr [rbp-0x40] - call [r13]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this + call [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this mov ecx, 30 mov edx, 29 test eax, 0x8000 cmove ecx, edx mov dword ptr [rbx], 1 cmp r12d, ecx jle SHORT G_M4131_IG15 ;; size=91 bbWeight=1 PerfScore 17.25 G_M4131_IG11: sub r12d, ecx inc dword ptr [rbx] mov r15d, dword ptr [rbp-0x38] sar r15d, 1 test eax, r15d jne SHORT G_M4131_IG13 ;; size=17 bbWeight=4 PerfScore 24.00 G_M4131_IG12: mov ecx, 29 jmp SHORT G_M4131_IG14 ;; size=7 bbWeight=2 PerfScore 4.50 G_M4131_IG13: mov ecx, 30 ;; size=5 bbWeight=2 PerfScore 0.50 G_M4131_IG14: cmp r12d, ecx mov dword ptr [rbp-0x38], r15d jg SHORT G_M4131_IG11 ;; size=9 bbWeight=4 PerfScore 9.00 G_M4131_IG15: mov rbx, bword ptr [rbp+0x10] mov dword ptr [rbx], r12d ;; size=7 bbWeight=1 PerfScore 2.00 G_M4131_IG16: add rsp, 24 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M4131_IG17: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 471, prolog size 37, PerfScore 125.00, instruction count 137, allocated bytes for code 471 (MethodHash=2499efdc) for method System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this (FullOpts) +; Total bytes of code 486, prolog size 37, PerfScore 128.12, instruction count 141, allocated bytes for code 486 (MethodHash=2499efdc) for method System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this (FullOpts) ```
12 (5.66 % of base) - System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this ```diff ; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(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; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 9, 8 ) ref -> rbx this class-hnd single-def +; V00 this [V00,T00] ( 11, 9 ) ref -> rbx this class-hnd single-def ; V01 arg1 [V01,T01] ( 7, 5.50) int -> r15 ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret "spilled call-like call argument" ; V04 tmp2 [V04,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" ; V05 tmp3 [V05,T08] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret "spilled call-like call argument" ; V07 tmp5 [V07,T05] ( 2, 2 ) long -> rsi "field V03._dateData (fldOffset=0x0)" P-INDEP ; V08 tmp6 [V08,T06] ( 2, 2 ) long -> rsi "field V06._dateData (fldOffset=0x0)" P-INDEP ; V09 tmp7 [V09,T09] ( 2, 0 ) ref -> r14 single-def "argument with side effect" ; V10 tmp8 [V10,T10] ( 2, 0 ) ref -> rcx single-def "argument with side effect" -; V11 cse0 [V11,T03] ( 3, 3 ) long -> r13 "CSE #02: aggressive" -; V12 cse1 [V12,T04] ( 3, 3 ) long -> r14 "CSE #03: aggressive" -; V13 cse2 [V13,T02] ( 5, 4 ) long -> r14 multi-def "CSE #01: aggressive" +; V11 cse0 [V11,T02] ( 3, 3 ) long -> r13 "CSE #02: aggressive" +; V12 cse1 [V12,T03] ( 3, 3 ) long -> r14 "CSE #03: aggressive" +; V13 cse2 [V13,T04] ( 3, 3 ) long -> r14 "CSE #01: aggressive" ; ; Lcl frame size = 0 G_M54329_IG01: push rbp push r15 push r14 push r13 push rbx lea rbp, [rsp+0x20] mov rbx, rdi mov r15d, esi ;; size=19 bbWeight=1 PerfScore 6.00 G_M54329_IG02: test r15d, r15d - jne SHORT G_M54329_IG04 + jne SHORT G_M54329_IG05 ;; size=5 bbWeight=1 PerfScore 1.25 G_M54329_IG03: + cmp dword ptr [rbx+0x08], -1 + jne SHORT G_M54329_IG04 mov rdi, rbx - mov r14, qword ptr [rbx] - mov rax, qword ptr [r14+0x48] - call [rax+0x10]System.Globalization.Calendar:get_CurrentEraValue():int:this - mov r15d, eax - ;; size=16 bbWeight=0.50 PerfScore 3.75 + 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=24 bbWeight=0.50 PerfScore 4.25 G_M54329_IG04: + mov r15d, dword ptr [rbx+0x08] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M54329_IG05: mov rdi, rbx mov r14, qword ptr [rbx] mov r13, qword ptr [r14+0x78] - call [r13+0x30]System.Globalization.EastAsianLunisolarCalendar:get_MinDate():System.DateTime:this + call [r13+0x28]System.Globalization.EastAsianLunisolarCalendar:get_MinDate():System.DateTime:this mov rsi, rax mov rdi, rbx mov r14, qword ptr [r14+0x58] - call [r14+0x10]System.Globalization.Calendar:GetEra(System.DateTime):int:this + call [r14+0x08]System.Globalization.Calendar:GetEra(System.DateTime):int:this cmp eax, r15d - jg SHORT G_M54329_IG06 + jg SHORT G_M54329_IG07 mov rdi, rbx - call [r13+0x38]System.Globalization.EastAsianLunisolarCalendar:get_MaxDate():System.DateTime:this + call [r13+0x30]System.Globalization.EastAsianLunisolarCalendar:get_MaxDate():System.DateTime:this mov rsi, rax mov rdi, rbx - call [r14+0x10]System.Globalization.Calendar:GetEra(System.DateTime):int:this + call [r14+0x08]System.Globalization.Calendar:GetEra(System.DateTime):int:this cmp eax, r15d - jl SHORT G_M54329_IG06 + jl SHORT G_M54329_IG07 ;; size=55 bbWeight=1 PerfScore 22.00 -G_M54329_IG05: +G_M54329_IG06: pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=9 bbWeight=1 PerfScore 3.50 -G_M54329_IG06: +G_M54329_IG07: 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 212, prolog size 13, PerfScore 36.50, instruction count 60, allocated bytes for code 212 (MethodHash=49422bc6) for method System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this (FullOpts) +; Total bytes of code 224, prolog size 13, PerfScore 38.00, instruction count 62, allocated bytes for code 224 (MethodHash=49422bc6) for method System.Globalization.EastAsianLunisolarCalendar:CheckEraRange(int):this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/409c5832cba6c3090e35eaa62df170a6

MihuBot commented 2 weeks ago

Top method improvements

-5 (-1.57 % of base) - System.Globalization.EastAsianLunisolarCalendar:MaxEraCalendarYear(int):int:this ```diff ; 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 +; V00 this [V00,T01] ( 15, 9.50) ref -> rbx this class-hnd single-def ; V01 arg1 [V01,T02] ( 7, 7.50) int -> r15 -; V02 loc0 [V02,T03] ( 5, 7 ) ref -> r12 class-hnd exact single-def -; V03 loc1 [V03,T08] ( 2, 1 ) int -> rdi +; V02 loc0 [V02,T03] ( 5, 7 ) ref -> r13 class-hnd exact single-def +; 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" -; V06 tmp2 [V06,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" -; V07 tmp3 [V07,T12] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" -; 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" +; V07 tmp3 [V07,T11] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" +; 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" -; 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 ```diff ; 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 +; V00 this [V00,T01] ( 15, 9.50) ref -> rbx this class-hnd single-def ; V01 arg1 [V01,T02] ( 7, 7.50) int -> r15 -; V02 loc0 [V02,T03] ( 5, 7 ) ref -> r12 class-hnd exact single-def -; V03 loc1 [V03,T08] ( 2, 1 ) int -> rdi +; V02 loc0 [V02,T03] ( 5, 7 ) ref -> r13 class-hnd exact single-def +; 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" -; V06 tmp2 [V06,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" -; V07 tmp3 [V07,T12] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" -; 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" +; V07 tmp3 [V07,T11] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" +; 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" -; 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 ```diff ; 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 ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def ; 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 ; 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" ; 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" ; V17 tmp7 [V17,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" ; V18 tmp8 [V18,T21] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" ; 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 ```diff ; 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 ; 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 ```diff ; 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 ; 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 ;# 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" ;* V12 tmp2 [V12 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" ;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" ;* 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 ```diff ; 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 ; 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 ```diff ; 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 ; 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 ```diff ; 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 ; 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 ```diff ; 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 ; 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 ```diff ; 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 ; 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) ```

Larger list of diffs: https://gist.github.com/MihuBot/5224cefdce546b3814278dfdc52bd5c4

MihuBot commented 2 weeks ago

@xtqqczze