20 (3.05 % of base) - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this
; 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 <System.Globalization.GregorianCalendarHelper>
+; V00 this [V00,T11] ( 4, 3 ) ref -> r14 this class-hnd single-def <System.Globalization.GregorianCalendarHelper>
; 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 <System.Globalization.EraInfo[]>
; V05 loc1 [V05,T14] ( 2, 1 ) int -> r13
; V06 loc2 [V06,T04] ( 8, 10 ) ref -> [rbp-0x30] class-hnd exact <System.Globalization.EraInfo>
; 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" <System.Int32>
; V11 tmp2 [V11,T22] ( 2, 0 ) ref -> r14 class-hnd exact "impImportAndPushBox" <System.String>
; V12 tmp3 [V12,T18] ( 3, 0 ) ref -> r13 class-hnd exact "Single-def Box Helper" <System.Int32>
; V13 tmp4 [V13,T19] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentOutOfRangeException>
; V14 tmp5 [V14,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
; V15 tmp6 [V15,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-; 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" <System.Globalization.Calendar>
+; 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
; 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 <System.Globalization.DateTimeFormatInfo>
; V01 arg1 [V01,T00] ( 10, 5.50) int -> rbx
; V02 loc0 [V02,T03] ( 3, 1.50) ref -> rax class-hnd exact single-def <System.String[]>
;# 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" <System.Int32>
; V05 tmp2 [V05,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-; 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" <System.Globalization.Calendar>
; 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
; 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 <System.Globalization.DateTimeFormatInfo>
; V01 arg1 [V01,T00] ( 9, 7.50) int -> rbx
-; V02 loc0 [V02,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def <System.String[]>
+; V02 loc0 [V02,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def <System.String[]>
;# 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" <System.Int32>
; V05 tmp2 [V05,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-; 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" <System.Globalization.Calendar>
; 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
; 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 <System.Globalization.EastAsianLunisolarCalendar>
+; V00 this [V00,T05] ( 11, 8 ) ref -> r14 this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; 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 <System.ReadOnlySpan`1[int]>
;# 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<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
;* V26 tmp12 [V26 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
;* V27 tmp13 [V27 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
; 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
; 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 <System.Globalization.EastAsianLunisolarCalendar>
+; V00 this [V00,T00] ( 11, 9 ) ref -> rbx this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; 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" <System.DateTime>
; V04 tmp2 [V04,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Int32>
; V05 tmp3 [V05,T08] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret "spilled call-like call argument" <System.DateTime>
; 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)
1 (0.05 % of base) - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte
; Assembly listing for method System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (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; 34 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V02 arg2 [V02,T16] ( 8, 8 ) int -> rbx single-def
; V03 arg3 [V03 ] ( 10, 41 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.Globalization.DateTimeFormatInfo>
; V04 arg4 [V04,T06] ( 43, 73 ) byref -> [rbp+0x10] EH-live single-def
; V05 loc0 [V05 ] ( 29, 91 ) struct (24) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.ParsingInfo>
; V06 loc1 [V06 ] ( 22,178 ) struct (32) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.__DTString>
; V07 loc2 [V07 ] ( 25,740 ) struct (32) [rbp-0x88] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.__DTString>
; V08 loc3 [V08,T36] ( 3, 3 ) ubyte -> r15
; V09 loc4 [V09,T30] ( 4, 4 ) ushort -> rdi
; V10 loc5 [V10,T37] ( 3, 3 ) int -> rsi
;* V11 loc6 [V11,T56] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V14 tmp2 [V14,T38] ( 3, 3 ) int -> rsi
;* V15 tmp3 [V15 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V16 tmp4 [V16 ] ( 0, 0 ) byref -> zero-ref
;* V17 tmp5 [V17 ] ( 0, 0 ) byref -> zero-ref single-def
; V18 tmp6 [V18,T50] ( 2, 2 ) int -> rdi
;* V19 tmp7 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.ArgumentOutOfRangeException>
; V20 tmp8 [V20,T31] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
; V21 tmp9 [V21,T32] ( 2, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Globalization.Calendar>
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V24 tmp12 [V24,T18] ( 4, 8 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V26 tmp14 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V27 tmp15 [V27,T33] ( 2, 4 ) byref -> r15 single-def "Inlining Arg"
; V28 tmp16 [V28,T34] ( 2, 4 ) int -> r12 "Inlining Arg"
;* V29 tmp17 [V29 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V30 tmp18 [V30,T19] ( 4, 8 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
; V31 tmp19 [V31,T39] ( 3, 3 ) int -> rax "Inline return value spill temp"
; V32 tmp20 [V32,T20] ( 4, 8 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
; V33 tmp21 [V33,T40] ( 3, 3 ) int -> rax "Inline return value spill temp"
;* V34 tmp22 [V34 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V35 tmp23 [V35,T09] ( 3, 48 ) int -> rax "Span.get_Item index"
; V36 tmp24 [V36,T21] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
; V37 tmp25 [V37,T07] ( 4, 48 ) ushort -> rdi "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V39 tmp27 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V40 tmp28 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V41 tmp29 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V42 tmp30 [V42 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V43 tmp31 [V43,T10] ( 3, 48 ) int -> rdi "Span.get_Item index"
; V44 tmp32 [V44,T22] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
; V45 tmp33 [V45,T08] ( 4, 48 ) ushort -> rdi "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V47 tmp35 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V48 tmp36 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V49 tmp37 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V51 tmp39 [V51,T01] ( 3,768 ) int -> rax "Span.get_Item index"
; V52 tmp40 [V52,T05] ( 2,128 ) ubyte -> rax "Inline return value spill temp"
; V53 tmp41 [V53,T00] ( 4,768 ) ushort -> rdi "Inlining Arg"
;* V54 tmp42 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V55 tmp43 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V56 tmp44 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V57 tmp45 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V58 tmp46 [V58,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V59 tmp47 [V59 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V60 tmp48 [V60,T04] ( 3,192 ) int -> rdi "Span.get_Item index"
; V61 tmp49 [V61,T41] ( 3, 3 ) int -> rax "Inline return value spill temp"
; V62 tmp50 [V62,T27] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
; V63 tmp51 [V63,T28] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
; V64 tmp52 [V64,T42] ( 3, 3 ) int -> rax "Inline return value spill temp"
; V65 tmp53 [V65,T17] ( 5, 8 ) int -> rax "Single return block return value"
; V66 tmp54 [V66,T24] ( 4, 4 ) byref -> r14 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V67 tmp55 [V67,T25] ( 4, 4 ) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V68 tmp56 [V68,T23] ( 5, 5 ) byref -> r15 "field V01._reference (fldOffset=0x0)" P-INDEP
; V69 tmp57 [V69,T26] ( 4, 4 ) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP
;* V70 tmp58 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V71 tmp59 [V71 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V72 tmp60 [V72,T35] ( 3, 3 ) byref -> r15 "field V23._reference (fldOffset=0x0)" P-INDEP
; V73 tmp61 [V73,T43] ( 3, 3 ) int -> r12 "field V23._length (fldOffset=0x8)" P-INDEP
; V74 tmp62 [V74,T49] ( 2, 2 ) byref -> r15 single-def "field V25._reference (fldOffset=0x0)" P-INDEP
; V75 tmp63 [V75,T51] ( 2, 2 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
;* V76 tmp64 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V77 tmp65 [V77 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V78 tmp66 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp67 [V79 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V80 tmp68 [V80 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V81 tmp69 [V81 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
;* V82 tmp70 [V82 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V83 tmp71 [V83 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V84 tmp72 [V84 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP
;* V85 tmp73 [V85 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
;* V86 tmp74 [V86 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V87 tmp75 [V87 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V88 tmp76 [V88 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp77 [V89 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
;* V90 tmp78 [V90 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
;* V91 tmp79 [V91 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V92 tmp80 [V92 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp81 [V93 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V94 tmp82 [V94 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp83 [V95 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V96 tmp84 [V96 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp85 [V97 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V98 tmp86 [V98 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
;* V99 tmp87 [V99 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
;* V100 tmp88 [V100 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V101 tmp89 [V101 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
;* V102 tmp90 [V102 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP
;* V103 tmp91 [V103 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
; V104 PSPSym [V104,T52] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
; V105 cse0 [V105,T02] ( 3,384 ) int -> rax "CSE #09: aggressive"
; V106 cse1 [V106,T14] ( 3, 24 ) int -> rax "CSE #05: moderate"
; V107 cse2 [V107,T29] ( 5, 5 ) int -> rsi "CSE #16: conservative"
; V108 cse3 [V108,T44] ( 3, 3 ) int -> r12 "CSE #02: conservative"
; V109 cse4 [V109,T45] ( 3, 3 ) int -> r14 "CSE #03: conservative"
; V110 cse5 [V110,T46] ( 3, 3 ) int -> r15 "CSE #13: conservative"
; V111 cse6 [V111,T47] ( 3, 3 ) int -> rsi "CSE #14: conservative"
; V112 cse7 [V112,T48] ( 3, 3 ) int -> r14 "CSE #19: conservative"
; V113 cse8 [V113,T55] ( 3, 3 ) double -> mm0 "CSE #21: conservative"
; V114 cse9 [V114,T03] ( 3,384 ) int -> r15 "CSE #10: aggressive"
; V115 cse10 [V115,T15] ( 3, 24 ) int -> r15 "CSE #06: moderate"
; V116 cse11 [V116,T11] ( 3, 48 ) int -> rdi "CSE #11: moderate"
; V117 cse12 [V117,T12] ( 3, 48 ) int -> rsi "CSE #12: moderate"
; V118 rat0 [V118,T53] ( 3, 6 ) double -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V119 rat1 [V119,T54] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 152
G_M56315_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 152
lea rbp, [rsp+0xC0]
xor eax, eax
mov qword ptr [rbp-0x88], rax
vxorps xmm8, xmm8, xmm8
vmovdqu32 zmmword ptr [rbp-0x80], zmm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
mov qword ptr [rbp-0xA0], rsp
mov gword ptr [rbp-0x30], r9
mov r14, rdi
mov r13d, esi
mov r15, rdx
mov r12d, ecx
mov ebx, r8d
mov rax, bword ptr [rbp+0x10]
;; size=81 bbWeight=1 PerfScore 16.58
G_M56315_IG02:
mov rdi, gword ptr [rbp-0x30]
mov rdi, gword ptr [rdi+0x90]
mov gword ptr [rbp-0x48], rdi
mov dword ptr [rbp-0x40], -1
mov dword ptr [rbp-0x3C], -1
test bl, 4
setne dil
movzx rdi, dil
mov byte ptr [rbp-0x36], dil
test bl, 2
setne dil
movzx rdi, dil
mov byte ptr [rbp-0x35], dil
cmp r12d, 1
jne G_M56315_IG10
movzx rdi, word ptr [r15]
test ebx, ebx
jne SHORT G_M56315_IG06
mov esi, edi
or esi, 32
cmp esi, 111
je SHORT G_M56315_IG05
cmp esi, 114
jne SHORT G_M56315_IG06
mov rdi, r14
mov esi, r13d
mov rdx, rax
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:TryParseFormatR(System.ReadOnlySpan`1[ushort],byref):ubyte
call [rax]System.DateTimeParse:TryParseFormatR(System.ReadOnlySpan`1[ushort],byref):ubyte
;; size=113 bbWeight=1 PerfScore 22.50
G_M56315_IG03:
movzx rax, al
;; size=3 bbWeight=1 PerfScore 0.25
G_M56315_IG04:
add rsp, 152
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M56315_IG05:
mov rdi, r14
mov esi, r13d
mov rdx, rax
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:TryParseFormatO(System.ReadOnlySpan`1[ushort],byref):ubyte
call [rax]System.DateTimeParse:TryParseFormatO(System.ReadOnlySpan`1[ushort],byref):ubyte
jmp SHORT G_M56315_IG03
;; size=23 bbWeight=1 PerfScore 6.00
G_M56315_IG06:
test dword ptr [rax+0x2C], 0x800
je SHORT G_M56315_IG07
cmp edi, 85
jne SHORT G_M56315_IG07
mov dword ptr [rax+0x30], 6
mov bword ptr [rax+0x48], r15
mov dword ptr [rax+0x50], 1
jmp G_M56315_IG31
;; size=37 bbWeight=1 PerfScore 10.25
G_M56315_IG07:
lea rdx, [rbp-0x48]
lea rsi, [rbp-0x30]
mov rcx, rax
mov r8, 0xD1FFAB1E ; code for System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String
call [r8]System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String
test rax, rax
jne SHORT G_M56315_IG08
xor r15, r15
xor r12d, r12d
jmp SHORT G_M56315_IG09
;; size=37 bbWeight=1 PerfScore 8.25
G_M56315_IG08:
lea r15, bword ptr [rax+0x0C]
mov r12d, dword ptr [rax+0x08]
;; size=8 bbWeight=1 PerfScore 2.50
G_M56315_IG09:
mov rax, bword ptr [rbp+0x10]
;; size=4 bbWeight=1 PerfScore 1.00
G_M56315_IG10:
mov rdi, gword ptr [rbp-0x48]
mov gword ptr [rax], rdi
mov rdi, gword ptr [rbp-0x48]
mov rcx, gword ptr [rbp-0x48]
mov rcx, qword ptr [rcx]
mov rcx, qword ptr [rcx+0x40]
call [rcx+0x38]System.Globalization.Calendar:get_ID():ushort:this
cmp eax, 8
sete dil
movzx rdi, dil
mov byte ptr [rbp-0x34], dil
mov rax, bword ptr [rbp+0x10]
mov dword ptr [rax+0x24], -1
mov dword ptr [rax+0x20], -1
mov dword ptr [rax+0x1C], -1
mov rcx, gword ptr [rbp-0x30]
mov gword ptr [rbp-0x90], rcx
mov dword ptr [rbp-0x60], -1
mov bword ptr [rbp-0x58], r15
mov dword ptr [rbp-0x50], r12d
mov word ptr [rbp-0x5C], 0
mov rdi, rcx
mov rdx, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:get_CompareInfo():System.Globalization.CompareInfo:this
cmp dword ptr [rdi], edi
call [rdx]System.Globalization.DateTimeFormatInfo:get_CompareInfo():System.Globalization.CompareInfo:this
mov gword ptr [rbp-0x68], rax
mov r15, gword ptr [rbp-0x90]
mov r12d, dword ptr [r15+0x180]
cmp r12d, -1
jne SHORT G_M56315_IG11
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
call [rax]System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
jmp SHORT G_M56315_IG12
;; size=155 bbWeight=1 PerfScore 40.75
G_M56315_IG11:
mov eax, r12d
;; size=3 bbWeight=1 PerfScore 0.25
G_M56315_IG12:
test al, 32
setne dil
movzx rdi, dil
mov byte ptr [rbp-0x5A], dil
mov byte ptr [rbp-0x5A], 0
mov r15, gword ptr [rbp-0x30]
mov dword ptr [rbp-0x80], -1
mov bword ptr [rbp-0x78], r14
mov dword ptr [rbp-0x70], r13d
mov word ptr [rbp-0x7C], 0
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:get_CompareInfo():System.Globalization.CompareInfo:this
cmp dword ptr [rdi], edi
call [rax]System.Globalization.DateTimeFormatInfo:get_CompareInfo():System.Globalization.CompareInfo:this
mov gword ptr [rbp-0x88], rax
mov r14d, dword ptr [r15+0x180]
cmp r14d, -1
jne SHORT G_M56315_IG13
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
call [rax]System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
jmp SHORT G_M56315_IG14
;; size=97 bbWeight=1 PerfScore 24.75
G_M56315_IG13:
mov eax, r14d
;; size=3 bbWeight=1 PerfScore 0.25
G_M56315_IG14:
test al, 32
setne dil
movzx rdi, dil
mov byte ptr [rbp-0x7A], dil
mov byte ptr [rbp-0x7A], 0
cmp byte ptr [rbp-0x35], 0
je SHORT G_M56315_IG15
lea rdi, [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.__DTString:TrimTail():this
call [rax]System.__DTString:TrimTail():this
lea rdi, [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.__DTString:RemoveTrailingInQuoteSpaces():this
call [rax]System.__DTString:RemoveTrailingInQuoteSpaces():this
lea rdi, [rbp-0x88]
mov rax, 0xD1FFAB1E ; code for System.__DTString:TrimTail():this
call [rax]System.__DTString:TrimTail():this
;; size=75 bbWeight=1 PerfScore 17.75
G_M56315_IG15:
test bl, 1
je G_M56315_IG26
jmp SHORT G_M56315_IG17
;; size=11 bbWeight=1 PerfScore 3.25
G_M56315_IG16:
mov edi, dword ptr [rbp-0x60]
inc edi
mov dword ptr [rbp-0x60], edi
;; size=8 bbWeight=8 PerfScore 18.00
G_M56315_IG17:
mov eax, dword ptr [rbp-0x60]
inc eax
mov r15d, dword ptr [rbp-0x50]
cmp eax, r15d
jl SHORT G_M56315_IG21
;; size=14 bbWeight=8 PerfScore 28.00
G_M56315_IG18:
lea rdi, [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.__DTString:RemoveLeadingInQuoteSpaces():this
call [rax]System.__DTString:RemoveLeadingInQuoteSpaces():this
mov edi, dword ptr [rbp-0x80]
inc edi
cmp edi, dword ptr [rbp-0x70]
jge G_M56315_IG26
;; size=30 bbWeight=1 PerfScore 8.00
G_M56315_IG19:
mov edi, dword ptr [rbp-0x80]
inc edi
cmp edi, dword ptr [rbp-0x70]
jae G_M56315_IG57
mov rax, bword ptr [rbp-0x78]
movzx rdi, word ptr [rax+2*rdi]
cmp edi, 256
jae SHORT G_M56315_IG24
;; size=30 bbWeight=8 PerfScore 68.00
G_M56315_IG20:
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
je SHORT G_M56315_IG26
jmp SHORT G_M56315_IG25
;; size=20 bbWeight=4 PerfScore 26.00
G_M56315_IG21:
cmp eax, r15d
jae G_M56315_IG57
mov rdi, bword ptr [rbp-0x58]
mov eax, eax
movzx rdi, word ptr [rdi+2*rax]
cmp edi, 256
jae SHORT G_M56315_IG23
;; size=27 bbWeight=8 PerfScore 46.00
G_M56315_IG22:
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
je SHORT G_M56315_IG18
jmp G_M56315_IG16
;; size=23 bbWeight=4 PerfScore 26.00
G_M56315_IG23:
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
je G_M56315_IG18
jmp G_M56315_IG16
;; size=25 bbWeight=4 PerfScore 26.00
G_M56315_IG24:
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
je SHORT G_M56315_IG26
;; size=16 bbWeight=4 PerfScore 18.00
G_M56315_IG25:
mov edi, dword ptr [rbp-0x80]
inc edi
mov dword ptr [rbp-0x80], edi
mov edi, dword ptr [rbp-0x80]
inc edi
cmp edi, dword ptr [rbp-0x70]
jl G_M56315_IG19
;; size=22 bbWeight=8 PerfScore 52.00
G_M56315_IG26:
mov edi, dword ptr [rbp-0x60]
inc edi
mov dword ptr [rbp-0x60], edi
mov edi, dword ptr [rbp-0x60]
mov esi, dword ptr [rbp-0x50]
cmp edi, esi
jge SHORT G_M56315_IG33
;; size=18 bbWeight=8 PerfScore 44.00
G_M56315_IG27:
cmp edi, esi
jae G_M56315_IG57
mov rsi, bword ptr [rbp-0x58]
mov edi, edi
movzx rdi, word ptr [rsi+2*rdi]
mov word ptr [rbp-0x5C], di
cmp byte ptr [rbp-0x36], 0
je SHORT G_M56315_IG30
jmp SHORT G_M56315_IG29
;; size=30 bbWeight=32 PerfScore 336.00
G_M56315_IG28:
mov eax, dword ptr [rbp-0x80]
inc eax
mov dword ptr [rbp-0x80], eax
;; size=8 bbWeight=128 PerfScore 288.00
G_M56315_IG29:
mov eax, dword ptr [rbp-0x80]
inc eax
mov r15d, dword ptr [rbp-0x70]
cmp eax, r15d
jl G_M56315_IG53
;; size=18 bbWeight=128 PerfScore 448.00
G_M56315_IG30:
lea rdi, [rbp-0x88]
lea rsi, [rbp-0x68]
lea rdx, [rbp-0x48]
mov rcx, gword ptr [rbp-0x30]
mov r8, bword ptr [rbp+0x10]
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:ParseByFormat(byref,byref,byref,System.Globalization.DateTimeFormatInfo,byref):ubyte
call [rax]System.DateTimeParse:ParseByFormat(byref,byref,byref,System.Globalization.DateTimeFormatInfo,byref):ubyte
test eax, eax
jne SHORT G_M56315_IG26
;; size=39 bbWeight=32 PerfScore 256.00
G_M56315_IG31:
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
G_M56315_IG32:
add rsp, 152
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M56315_IG33:
mov edi, dword ptr [rbp-0x70]
dec edi
cmp dword ptr [rbp-0x80], edi
jge SHORT G_M56315_IG35
;; size=10 bbWeight=1 PerfScore 4.25
G_M56315_IG34:
mov r8, bword ptr [rbp+0x10]
mov dword ptr [r8+0x30], 3
jmp SHORT G_M56315_IG31
;; size=14 bbWeight=1 PerfScore 4.00
G_M56315_IG35:
cmp byte ptr [rbp-0x37], 0
je SHORT G_M56315_IG39
mov rdi, gword ptr [rbp-0x30]
mov r15d, dword ptr [rdi+0x180]
cmp r15d, -1
jne SHORT G_M56315_IG36
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
call [rax]System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
jmp SHORT G_M56315_IG37
;; size=37 bbWeight=1 PerfScore 12.50
G_M56315_IG36:
mov eax, r15d
;; size=3 bbWeight=1 PerfScore 0.25
G_M56315_IG37:
test al, 8
jne SHORT G_M56315_IG39
mov r8, bword ptr [rbp+0x10]
mov esi, dword ptr [r8+0x10]
cmp esi, 100
jge SHORT G_M56315_IG34
;; size=17 bbWeight=1 PerfScore 5.50
G_M56315_IG38:
mov rdi, gword ptr [rbp-0x48]
mov rax, gword ptr [rbp-0x48]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x70]
- call [rax+0x30]System.Globalization.Calendar:ToFourDigitYear(int):int:this
+ call [rax+0x28]System.Globalization.Calendar:ToFourDigitYear(int):int:this
mov r8, bword ptr [rbp+0x10]
mov dword ptr [r8+0x10], eax
;; size=26 bbWeight=1 PerfScore 11.00
G_M56315_IG39:
cmp byte ptr [rbp-0x38], 0
je SHORT G_M56315_IG41
cmp dword ptr [rbp-0x3C], -1
jne SHORT G_M56315_IG40
xor esi, esi
mov dword ptr [rbp-0x3C], esi
;; size=17 bbWeight=1 PerfScore 7.25
G_M56315_IG40:
mov r8, bword ptr [rbp+0x10]
mov esi, dword ptr [r8+0x1C]
cmp esi, 12
jg SHORT G_M56315_IG34
cmp dword ptr [rbp-0x3C], 0
jne SHORT G_M56315_IG43
cmp esi, 12
jne SHORT G_M56315_IG44
xor esi, esi
mov r8, bword ptr [rbp+0x10]
mov dword ptr [r8+0x1C], esi
jmp SHORT G_M56315_IG44
;; size=36 bbWeight=1 PerfScore 12.75
G_M56315_IG41:
cmp dword ptr [rbp-0x3C], 0
jne SHORT G_M56315_IG42
mov r8, bword ptr [rbp+0x10]
cmp dword ptr [r8+0x1C], 12
jge G_M56315_IG34
;; size=21 bbWeight=1 PerfScore 8.00
G_M56315_IG42:
cmp dword ptr [rbp-0x3C], 1
jne SHORT G_M56315_IG44
mov r8, bword ptr [rbp+0x10]
cmp dword ptr [r8+0x1C], 12
jl G_M56315_IG34
jmp SHORT G_M56315_IG44
;; size=23 bbWeight=1 PerfScore 10.00
G_M56315_IG43:
mov edi, 12
lea edx, [rsi+0x0C]
cmp esi, 12
cmovne edi, edx
mov r8, bword ptr [rbp+0x10]
mov dword ptr [r8+0x1C], edi
;; size=22 bbWeight=1 PerfScore 3.25
G_M56315_IG44:
mov r8, bword ptr [rbp+0x10]
cmp dword ptr [r8+0x10], -1
jne SHORT G_M56315_IG45
cmp dword ptr [r8+0x14], -1
jne SHORT G_M56315_IG45
cmp dword ptr [r8+0x18], -1
sete sil
movzx rsi, sil
jmp SHORT G_M56315_IG46
;; size=33 bbWeight=1 PerfScore 15.25
G_M56315_IG45:
xor esi, esi
;; size=2 bbWeight=1 PerfScore 0.25
G_M56315_IG46:
movzx r15, sil
lea rsi, [rbp-0x48]
mov rdi, r8
mov edx, ebx
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:CheckDefaultDateTime(byref,byref,int):ubyte
call [rax]System.DateTimeParse:CheckDefaultDateTime(byref,byref,int):ubyte
test eax, eax
je G_M56315_IG31
test r15d, r15d
jne SHORT G_M56315_IG50
mov rdi, gword ptr [rbp-0x30]
mov r14d, dword ptr [rdi+0x180]
cmp r14d, -1
jne SHORT G_M56315_IG47
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
call [rax]System.Globalization.DateTimeFormatInfo:InitializeFormatFlags():int:this
jmp SHORT G_M56315_IG48
;; size=69 bbWeight=1 PerfScore 16.50
G_M56315_IG47:
mov eax, r14d
;; size=3 bbWeight=1 PerfScore 0.25
G_M56315_IG48:
test al, 8
je SHORT G_M56315_IG50
mov rdi, bword ptr [rbp+0x10]
test dword ptr [rdi+0x2C], 0x400
setne cl
movzx rcx, cl
lea rsi, bword ptr [rdi+0x10]
lea rdx, bword ptr [rdi+0x14]
mov rdi, gword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:YearMonthAdjustment(byref,byref,ubyte):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Globalization.DateTimeFormatInfo:YearMonthAdjustment(byref,byref,ubyte):ubyte:this
test eax, eax
jne SHORT G_M56315_IG50
;; size=51 bbWeight=1 PerfScore 16.00
G_M56315_IG49:
mov rdi, bword ptr [rbp+0x10]
mov dword ptr [rdi+0x30], 4
jmp G_M56315_IG31
;; size=16 bbWeight=1 PerfScore 4.00
G_M56315_IG50:
mov rdi, bword ptr [rbp+0x10]
mov esi, dword ptr [rdi+0x24]
mov dword ptr [rsp], esi
xor esi, esi
mov dword ptr [rsp+0x08], esi
mov esi, dword ptr [rdi+0x28]
mov dword ptr [rsp+0x10], esi
lea rsi, bword ptr [rdi+0x40]
mov bword ptr [rsp+0x18], rsi
mov esi, dword ptr [rdi+0x10]
mov edx, dword ptr [rdi+0x14]
mov ecx, dword ptr [rdi+0x18]
mov r8d, dword ptr [rdi+0x1C]
mov r9d, dword ptr [rdi+0x20]
mov rdi, gword ptr [rbp-0x48]
mov rax, gword ptr [rbp-0x48]
mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x70]
- call [rax]System.Globalization.Calendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this
+ mov rax, qword ptr [rax+0x68]
+ call [rax+0x38]System.Globalization.Calendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this
test eax, eax
je SHORT G_M56315_IG49
mov rdi, bword ptr [rbp+0x10]
vmovsd xmm0, qword ptr [rdi+0x08]
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jbe SHORT G_M56315_IG51
vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
vroundsd xmm0, xmm0, xmm0, 4
vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
vcmppd k1, xmm0, xmmword ptr [reloc @RWD32], 13
vcvttsd2si rsi, xmm0
vpbroadcastq xmm0, rsi
vpblendmq xmm0 {k1}, xmm0, xmmword ptr [reloc @RWD48]
vmovd rsi, xmm0
add rdi, 64
mov rax, bword ptr [rbp+0x10]
lea rdx, bword ptr [rax+0x40]
mov rcx, 0xD1FFAB1E ; code for System.DateTime:TryAddTicks(long,byref):ubyte:this
call [rcx]System.DateTime:TryAddTicks(long,byref):ubyte:this
test eax, eax
je G_M56315_IG34
- ;; size=183 bbWeight=1 PerfScore 75.58
+ ;; size=184 bbWeight=1 PerfScore 75.58
G_M56315_IG51:
mov rdi, bword ptr [rbp+0x10]
cmp dword ptr [rbp-0x40], -1
je SHORT G_M56315_IG52
mov r14d, dword ptr [rbp-0x40]
mov rsi, qword ptr [rdi+0x40]
mov rdi, gword ptr [rbp-0x48]
mov rax, gword ptr [rbp-0x48]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x50]
- call [rax+0x20]System.Globalization.Calendar:GetDayOfWeek(System.DateTime):int:this
+ call [rax+0x18]System.Globalization.Calendar:GetDayOfWeek(System.DateTime):int:this
cmp r14d, eax
je SHORT G_M56315_IG52
mov rdi, bword ptr [rbp+0x10]
mov dword ptr [rdi+0x30], 5
jmp G_M56315_IG31
;; size=57 bbWeight=1 PerfScore 21.25
G_M56315_IG52:
mov rdi, bword ptr [rbp+0x10]
mov esi, ebx
mov edx, r15d
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:DetermineTimeZoneAdjustments(byref,int,ubyte):ubyte
call [rax]System.DateTimeParse:DetermineTimeZoneAdjustments(byref,int,ubyte):ubyte
jmp G_M56315_IG03
;; size=26 bbWeight=1 PerfScore 6.75
G_M56315_IG53:
cmp eax, r15d
jae SHORT G_M56315_IG57
mov rdi, bword ptr [rbp-0x78]
mov eax, eax
movzx rdi, word ptr [rdi+2*rax]
cmp edi, 256
jae SHORT G_M56315_IG55
;; size=23 bbWeight=128 PerfScore 736.00
G_M56315_IG54:
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
je G_M56315_IG30
jmp G_M56315_IG28
;; size=27 bbWeight=64 PerfScore 416.00
G_M56315_IG55:
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
je G_M56315_IG30
jmp G_M56315_IG28
;; size=25 bbWeight=64 PerfScore 416.00
G_M56315_IG56:
xor eax, eax
jmp G_M56315_IG03
;; size=7 bbWeight=0 PerfScore 0.00
G_M56315_IG57:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M56315_IG58:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
mov rbp, qword ptr [rdi+0x20]
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0xC0]
;; size=30 bbWeight=0 PerfScore 0.00
G_M56315_IG59:
mov rdi, bword ptr [rbp+0x10]
mov rax, 0xD1FFAB1E ; code for System.DateTimeResult:SetBadDateTimeFailure():this
call [rax]System.DateTimeResult:SetBadDateTimeFailure():this
lea rax, G_M56315_IG56
;; size=23 bbWeight=0 PerfScore 0.00
G_M56315_IG60:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
RWD00 dq 416312D000000000h ; 10000000
RWD08 dd 00000000h, 00000000h
RWD16 dq 0000000000000088h, 0000000000000000h
RWD32 dq 43E0000000000000h, 43E0000000000000h
RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 1838, prolog size 81, PerfScore 3653.67, instruction count 476, allocated bytes for code 1839 (MethodHash=cd172404) for method System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts)
+; Total bytes of code 1839, prolog size 81, PerfScore 3653.67, instruction count 476, allocated bytes for code 1840 (MethodHash=cd172404) for method System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts)
1 (0.09 % of base) - System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte
; Assembly listing for method System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (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; 22 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 5, 3.50) byref -> r14 single-def
; V01 arg1 [V01,T00] ( 69, 37 ) byref -> rbx single-def
; V02 arg2 [V02,T05] ( 3, 2.50) int -> r13 single-def
; V03 arg3 [V03,T01] ( 12, 7 ) byref -> r15 single-def
; V04 loc0 [V04 ] ( 3, 2 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V05 loc1 [V05 ] ( 3, 2 ) double -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc2 [V06 ] ( 2, 1.50) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V07 loc3 [V07 ] ( 2, 1 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op
; V08 loc4 [V08 ] ( 4, 2 ) struct ( 8) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime>
; V09 loc5 [V09,T30] ( 5, 2.50) ushort -> rcx
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T02] ( 3, 6 ) byref -> rdi single-def "dup spill"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Globalization.Calendar>
;* V13 tmp3 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V15 tmp5 [V15,T06] ( 3, 3 ) byref -> rsi single-def "dup spill"
; V16 tmp6 [V16,T07] ( 3, 3 ) byref -> rdi single-def "dup spill"
; V17 tmp7 [V17,T08] ( 3, 3 ) byref -> rax single-def "dup spill"
;* V18 tmp8 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
; V19 tmp9 [V19,T09] ( 3, 3 ) byref -> rdi single-def "dup spill"
; V20 tmp10 [V20,T31] ( 2, 2 ) byref -> rdi single-def "dup spill"
; V21 tmp11 [V21,T10] ( 3, 3 ) byref -> rdi single-def "dup spill"
;* V22 tmp12 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp13 [V23,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp14 [V24,T33] ( 3, 1.50) int -> rdi "Inline stloc first use temp"
; V25 tmp15 [V25,T21] ( 3, 3 ) int -> rax "Span.get_Item index"
; V26 tmp16 [V26,T11] ( 3, 3 ) byref -> rcx single-def "Span.get_Item ptrToSpan"
;* V27 tmp17 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V28 tmp18 [V28,T49] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V29 tmp19 [V29,T34] ( 3, 1.50) int -> rdi "Inline stloc first use temp"
; V30 tmp20 [V30,T22] ( 3, 3 ) int -> rax "Span.get_Item index"
; V31 tmp21 [V31,T12] ( 3, 3 ) byref -> rcx single-def "Span.get_Item ptrToSpan"
;* V32 tmp22 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp23 [V33,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V34 tmp24 [V34,T35] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
; V35 tmp25 [V35,T23] ( 3, 3 ) int -> rdi "Span.get_Item index"
; V36 tmp26 [V36,T13] ( 3, 3 ) byref -> rax single-def "Span.get_Item ptrToSpan"
;* V37 tmp27 [V37,T51] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V38 tmp28 [V38,T36] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
; V39 tmp29 [V39,T24] ( 3, 3 ) int -> rdi "Span.get_Item index"
; V40 tmp30 [V40,T14] ( 3, 3 ) byref -> rax single-def "Span.get_Item ptrToSpan"
;* V41 tmp31 [V41,T52] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V42 tmp32 [V42 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V43 tmp33 [V43,T25] ( 3, 3 ) int -> rsi "Span.get_Item index"
; V44 tmp34 [V44,T15] ( 3, 3 ) byref -> rdi single-def "Span.get_Item ptrToSpan"
; V45 tmp35 [V45,T26] ( 3, 3 ) int -> rsi "Span.get_Item index"
; V46 tmp36 [V46,T16] ( 3, 3 ) byref -> rdi single-def "Span.get_Item ptrToSpan"
;* V47 tmp37 [V47,T53] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V48 tmp38 [V48,T37] ( 3, 1.50) int -> rdi "Inline stloc first use temp"
; V49 tmp39 [V49,T27] ( 3, 3 ) int -> rax "Span.get_Item index"
; V50 tmp40 [V50,T17] ( 3, 3 ) byref -> rcx single-def "Span.get_Item ptrToSpan"
;* V51 tmp41 [V51,T54] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V52 tmp42 [V52,T38] ( 3, 1.50) int -> rdi "Inline stloc first use temp"
; V53 tmp43 [V53,T28] ( 3, 3 ) int -> rax "Span.get_Item index"
; V54 tmp44 [V54,T18] ( 3, 3 ) byref -> rcx single-def "Span.get_Item ptrToSpan"
;* V55 tmp45 [V55,T55] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V57 tmp47 [V57,T29] ( 3, 3 ) int -> rdi "Span.get_Item index"
; V58 tmp48 [V58,T19] ( 3, 3 ) byref -> r12 single-def "Span.get_Item ptrToSpan"
; V59 tmp49 [V59,T32] ( 2, 2 ) int -> rax "Single return block return value"
; V60 tmp50 [V60 ] ( 4, 2 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V08._dateData (fldOffset=0x0)" P-DEP
;* V61 tmp51 [V61,T56] ( 0, 0 ) long -> zero-ref "field V18._ticks (fldOffset=0x0)" P-INDEP
; V62 tmp52 [V62,T20] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; V63 cse0 [V63,T39] ( 3, 1.50) int -> rdi "CSE #01: conservative"
; V64 cse1 [V64,T40] ( 3, 1.50) int -> rdi "CSE #03: conservative"
; V65 cse2 [V65,T41] ( 3, 1.50) int -> rsi "CSE #04: conservative"
; V66 cse3 [V66,T42] ( 3, 1.50) int -> rsi "CSE #05: conservative"
; V67 cse4 [V67,T43] ( 3, 1.50) int -> rsi "CSE #07: conservative"
; V68 cse5 [V68,T44] ( 3, 1.50) int -> rax "CSE #11: conservative"
; V69 cse6 [V69,T45] ( 3, 1.50) int -> rdi "CSE #12: conservative"
; V70 cse7 [V70,T46] ( 3, 1.50) int -> rdi "CSE #13: conservative"
; V71 cse8 [V71,T47] ( 3, 1.50) int -> rdi "CSE #14: conservative"
; V72 cse9 [V72,T04] ( 10, 5 ) byref -> r12 "CSE #02: aggressive"
; V73 rat0 [V73,T57] ( 3, 3 ) double -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V74 rat1 [V74,T58] ( 3, 3 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 72
G_M63361_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
mov r14, rdi
mov rbx, rsi
mov r13d, edx
mov r15, rcx
;; size=31 bbWeight=1 PerfScore 7.75
G_M63361_IG02:
lea rdi, bword ptr [rbx+0x08]
dec dword ptr [rdi]
xor edi, edi
mov dword ptr [rbp-0x30], edi
;; size=11 bbWeight=1 PerfScore 4.75
G_M63361_IG03:
mov qword ptr [rbp-0x38], rdi
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.__DTString:SkipWhiteSpaces():this
call [rax]System.__DTString:SkipWhiteSpaces():this
lea rcx, [rbp-0x40]
mov rdi, rbx
mov esi, 2
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
call [rax]System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
test eax, eax
je G_M63361_IG27
;; size=56 bbWeight=1 PerfScore 10.25
G_M63361_IG04:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.__DTString:SkipWhiteSpaces():this
call [rax]System.__DTString:SkipWhiteSpaces():this
mov edi, dword ptr [rbx+0x08]
inc edi
mov dword ptr [rbx+0x08], edi
cmp edi, dword ptr [rbx+0x18]
jl SHORT G_M63361_IG06
jmp G_M63361_IG27
;; size=33 bbWeight=0.50 PerfScore 6.38
G_M63361_IG05:
dec edi
mov dword ptr [rbx+0x08], edi
jmp G_M63361_IG27
;; size=10 bbWeight=0.50 PerfScore 1.62
G_M63361_IG06:
mov edi, dword ptr [rbx+0x08]
mov eax, edi
lea r12, bword ptr [rbx+0x10]
mov rcx, r12
cmp eax, dword ptr [rcx+0x08]
jae G_M63361_IG34
mov rcx, bword ptr [rcx]
cmp word ptr [rcx+2*rax], 58
jne SHORT G_M63361_IG05
mov word ptr [rbx+0x0C], 58
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.__DTString:SkipWhiteSpaces():this
call [rax]System.__DTString:SkipWhiteSpaces():this
lea rcx, [rbp-0x48]
mov rdi, rbx
mov esi, 2
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
call [rax]System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
test eax, eax
je G_M63361_IG27
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.__DTString:SkipWhiteSpaces():this
call [rax]System.__DTString:SkipWhiteSpaces():this
mov edi, dword ptr [rbx+0x08]
inc edi
mov dword ptr [rbx+0x08], edi
cmp edi, dword ptr [rbx+0x18]
jl SHORT G_M63361_IG08
jmp G_M63361_IG16
;; size=122 bbWeight=0.50 PerfScore 18.00
G_M63361_IG07:
dec edi
mov dword ptr [rbx+0x08], edi
jmp G_M63361_IG16
;; size=10 bbWeight=0.50 PerfScore 1.62
G_M63361_IG08:
mov edi, dword ptr [rbx+0x08]
mov eax, edi
mov rcx, r12
cmp eax, dword ptr [rcx+0x08]
jae G_M63361_IG34
mov rcx, bword ptr [rcx]
cmp word ptr [rcx+2*rax], 58
jne SHORT G_M63361_IG07
mov word ptr [rbx+0x0C], 58
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.__DTString:SkipWhiteSpaces():this
call [rax]System.__DTString:SkipWhiteSpaces():this
lea rcx, [rbp-0x30]
mov rdi, rbx
mov esi, 2
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
call [rax]System.DateTimeParse:ParseDigits(byref,int,int,byref):ubyte
test eax, eax
je G_M63361_IG27
mov esi, dword ptr [rbx+0x08]
inc esi
mov dword ptr [rbx+0x08], esi
cmp esi, dword ptr [rbx+0x18]
jl SHORT G_M63361_IG12
jmp SHORT G_M63361_IG10
;; size=100 bbWeight=0.50 PerfScore 16.00
G_M63361_IG09:
dec esi
mov dword ptr [rbx+0x08], esi
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M63361_IG10:
mov esi, dword ptr [rbx+0x08]
inc esi
mov dword ptr [rbx+0x08], esi
cmp esi, dword ptr [rbx+0x18]
jl SHORT G_M63361_IG13
jmp SHORT G_M63361_IG15
;; size=15 bbWeight=0.50 PerfScore 4.62
G_M63361_IG11:
dec esi
mov dword ptr [rbx+0x08], esi
jmp SHORT G_M63361_IG15
;; size=7 bbWeight=0.50 PerfScore 1.62
G_M63361_IG12:
mov esi, dword ptr [rbx+0x08]
mov edi, esi
mov rax, r12
cmp edi, dword ptr [rax+0x08]
jae G_M63361_IG34
mov rax, bword ptr [rax]
cmp word ptr [rax+2*rdi], 46
jne SHORT G_M63361_IG09
mov word ptr [rbx+0x0C], 46
jmp SHORT G_M63361_IG14
;; size=35 bbWeight=0.50 PerfScore 7.75
G_M63361_IG13:
mov esi, dword ptr [rbx+0x08]
mov edi, esi
mov rax, r12
cmp edi, dword ptr [rax+0x08]
jae G_M63361_IG34
mov rax, bword ptr [rax]
cmp word ptr [rax+2*rdi], 44
jne SHORT G_M63361_IG11
mov word ptr [rbx+0x0C], 44
;; size=33 bbWeight=0.50 PerfScore 6.75
G_M63361_IG14:
lea rsi, [rbp-0x38]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:ParseFraction(byref,byref):ubyte
call [rax]System.DateTimeParse:ParseFraction(byref,byref):ubyte
test eax, eax
je G_M63361_IG27
lea rdi, bword ptr [rbx+0x08]
dec dword ptr [rdi]
;; size=33 bbWeight=0.50 PerfScore 4.38
G_M63361_IG15:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.__DTString:SkipWhiteSpaces():this
call [rax]System.__DTString:SkipWhiteSpaces():this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M63361_IG16:
inc dword ptr [rbx+0x08]
mov esi, dword ptr [rbx+0x08]
cmp esi, dword ptr [rbx+0x18]
jge G_M63361_IG29
mov rdi, r12
cmp esi, dword ptr [rdi+0x08]
jae G_M63361_IG34
mov rdi, bword ptr [rdi]
movzx rsi, word ptr [rdi+2*rsi]
mov word ptr [rbx+0x0C], si
mov eax, dword ptr [rbx+0x08]
mov esi, eax
mov rdi, r12
cmp esi, dword ptr [rdi+0x08]
jae G_M63361_IG34
mov rdi, bword ptr [rdi]
movzx rcx, word ptr [rdi+2*rsi]
cmp ecx, 43
je SHORT G_M63361_IG17
cmp ecx, 45
jne SHORT G_M63361_IG18
;; size=72 bbWeight=0.50 PerfScore 15.62
G_M63361_IG17:
lea rsi, bword ptr [r15+0x2C]
or dword ptr [rsi], 256
lea rsi, bword ptr [r15+0x38]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:ParseTimeZone(byref,byref):ubyte
call [rax]System.DateTimeParse:ParseTimeZone(byref,byref):ubyte
test eax, eax
je G_M63361_IG27
lea rdi, bword ptr [rbx+0x08]
dec dword ptr [rdi]
jmp SHORT G_M63361_IG21
;; size=45 bbWeight=0.50 PerfScore 7.12
G_M63361_IG18:
cmp ecx, 90
je SHORT G_M63361_IG19
cmp ecx, 122
jne SHORT G_M63361_IG20
;; size=10 bbWeight=0.50 PerfScore 1.25
G_M63361_IG19:
lea rax, bword ptr [r15+0x2C]
or dword ptr [rax], 256
xor edi, edi
mov qword ptr [r15+0x38], rdi
lea rdi, bword ptr [r15+0x2C]
or dword ptr [rdi], 512
jmp SHORT G_M63361_IG21
;; size=28 bbWeight=0.50 PerfScore 5.12
G_M63361_IG20:
lea rdi, bword ptr [rbx+0x08]
dec eax
mov dword ptr [rdi], eax
;; size=8 bbWeight=0.50 PerfScore 0.88
G_M63361_IG21:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.__DTString:SkipWhiteSpaces():this
call [rax]System.__DTString:SkipWhiteSpaces():this
mov edi, dword ptr [rbx+0x08]
inc edi
mov dword ptr [rbx+0x08], edi
cmp edi, dword ptr [rbx+0x18]
jl SHORT G_M63361_IG23
jmp SHORT G_M63361_IG24
;; size=30 bbWeight=0.50 PerfScore 6.38
G_M63361_IG22:
dec edi
mov dword ptr [rbx+0x08], edi
jmp SHORT G_M63361_IG24
;; size=7 bbWeight=0.50 PerfScore 1.62
G_M63361_IG23:
mov edi, dword ptr [rbx+0x08]
mov eax, edi
mov rcx, r12
cmp eax, dword ptr [rcx+0x08]
jae G_M63361_IG34
mov rcx, bword ptr [rcx]
cmp word ptr [rcx+2*rax], 35
jne SHORT G_M63361_IG22
mov word ptr [rbx+0x0C], 35
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:VerifyValidPunctuation(byref):ubyte
call [rax]System.DateTimeParse:VerifyValidPunctuation(byref):ubyte
test eax, eax
je SHORT G_M63361_IG27
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.__DTString:SkipWhiteSpaces():this
call [rax]System.__DTString:SkipWhiteSpaces():this
;; size=67 bbWeight=0.50 PerfScore 10.88
G_M63361_IG24:
mov edi, dword ptr [rbx+0x08]
inc edi
mov dword ptr [rbx+0x08], edi
cmp edi, dword ptr [rbx+0x18]
jl SHORT G_M63361_IG28
jmp SHORT G_M63361_IG26
;; size=15 bbWeight=0.50 PerfScore 4.62
G_M63361_IG25:
dec edi
mov dword ptr [rbx+0x08], edi
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M63361_IG26:
inc dword ptr [rbx+0x08]
mov edi, dword ptr [rbx+0x08]
cmp edi, dword ptr [rbx+0x18]
jge SHORT G_M63361_IG29
cmp edi, dword ptr [r12+0x08]
jae G_M63361_IG34
mov rax, bword ptr [r12]
movzx rdi, word ptr [rax+2*rdi]
mov word ptr [rbx+0x0C], di
;; size=34 bbWeight=0.50 PerfScore 9.00
G_M63361_IG27:
mov dword ptr [r15+0x30], 3
jmp G_M63361_IG30
;; size=13 bbWeight=0.50 PerfScore 1.50
G_M63361_IG28:
mov edi, dword ptr [rbx+0x08]
mov eax, edi
mov rcx, r12
cmp eax, dword ptr [rcx+0x08]
jae G_M63361_IG34
mov rcx, bword ptr [rcx]
cmp word ptr [rcx+2*rax], 0
jne SHORT G_M63361_IG25
mov word ptr [rbx+0x0C], 0
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:VerifyValidPunctuation(byref):ubyte
call [rax]System.DateTimeParse:VerifyValidPunctuation(byref):ubyte
test eax, eax
je SHORT G_M63361_IG27
jmp SHORT G_M63361_IG26
;; size=54 bbWeight=0.50 PerfScore 10.12
G_M63361_IG29:
mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
mov edi, dword ptr [rbp-0x30]
mov dword ptr [rsp], edi
xor edi, edi
mov dword ptr [rsp+0x08], edi
mov edi, dword ptr [r15+0x28]
mov dword ptr [rsp+0x10], edi
lea rdi, [rbp-0x50]
mov qword ptr [rsp+0x18], rdi
mov rdi, rax
mov rdx, qword ptr [r14]
mov edx, dword ptr [rdx]
mov rcx, qword ptr [r14]
mov ecx, dword ptr [rcx+0x04]
mov esi, dword ptr [r14+0x10]
mov r8d, dword ptr [rbp-0x40]
mov r9d, dword ptr [rbp-0x48]
mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x70]
- call [rax]System.Globalization.Calendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this
+ mov rax, qword ptr [rax+0x68]
+ call [rax+0x38]System.Globalization.Calendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this
test eax, eax
jne SHORT G_M63361_IG32
mov dword ptr [r15+0x30], 4
- ;; size=88 bbWeight=0.50 PerfScore 16.25
+ ;; size=89 bbWeight=0.50 PerfScore 16.25
G_M63361_IG30:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M63361_IG31:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M63361_IG32:
vmovsd xmm0, qword ptr [rbp-0x38]
vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
vroundsd xmm0, xmm0, xmm0, 4
vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
vcmppd k1, xmm0, xmmword ptr [reloc @RWD32], 13
vcvttsd2si rsi, xmm0
vpbroadcastq xmm0, rsi
vpblendmq xmm0 {k1}, xmm0, xmmword ptr [reloc @RWD48]
vmovd rsi, xmm0
lea rdi, [rbp-0x50]
lea rdx, [rbp-0x50]
mov rax, 0xD1FFAB1E ; code for System.DateTime:TryAddTicks(long,byref):ubyte:this
call [rax]System.DateTime:TryAddTicks(long,byref):ubyte:this
test eax, eax
je G_M63361_IG27
mov rdi, qword ptr [rbp-0x50]
mov qword ptr [r15+0x40], rdi
mov rdi, r15
mov esi, r13d
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.DateTimeParse:DetermineTimeZoneAdjustments(byref,int,ubyte):ubyte
call [rax]System.DateTimeParse:DetermineTimeZoneAdjustments(byref,int,ubyte):ubyte
movzx rax, al
;; size=126 bbWeight=0.50 PerfScore 22.88
G_M63361_IG33:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M63361_IG34:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
RWD00 dq 416312D000000000h ; 10000000
RWD08 dd 00000000h, 00000000h
RWD16 dq 0000000000000088h, 0000000000000000h
RWD32 dq 43E0000000000000h, 43E0000000000000h
RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 1156, prolog size 19, PerfScore 212.12, instruction count 315, allocated bytes for code 1157 (MethodHash=9b9b087e) for method System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (FullOpts)
+; Total bytes of code 1157, prolog size 19, PerfScore 212.12, instruction count 315, allocated bytes for code 1158 (MethodHash=9b9b087e) for method System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (FullOpts)
1 (0.27 % of base) - System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 10.50) ref -> rbx this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.DateTime>
; V02 arg2 [V02,T03] ( 3, 3 ) int -> r14 single-def
; V03 loc0 [V03 ] ( 7, 6 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V04 loc1 [V04 ] ( 6, 5 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V05 loc2 [V05 ] ( 6, 5.50) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc3 [V06,T09] ( 3, 3 ) int -> rax
;* V07 loc4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.DateTime>
; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T05] ( 2, 4 ) long -> r14 "non-inline candidate call"
;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret "non-inline candidate call" <System.DateTime>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret "spilled call-like call argument" <System.DateTime>
; V12 tmp4 [V12,T01] ( 5, 10 ) ref -> r13 class-hnd single-def "dup spill" <System.Globalization.Calendar>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
;* V14 tmp6 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp7 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V16 tmp8 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V17 tmp9 [V17,T12] ( 2, 2 ) int -> rsi "Inlining Arg"
; V18 tmp10 [V18,T02] ( 6, 6 ) long -> r15 single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V19 tmp11 [V19,T10] ( 3, 3 ) long -> r15 "field V07._dateData (fldOffset=0x0)" P-INDEP
; V20 tmp12 [V20,T13] ( 2, 2 ) long -> r12 "field V10._dateData (fldOffset=0x0)" P-INDEP
; V21 tmp13 [V21,T14] ( 2, 2 ) long -> rdx "field V11._dateData (fldOffset=0x0)" P-INDEP
;* V22 tmp14 [V22 ] ( 0, 0 ) long -> zero-ref "field V13._dateData (fldOffset=0x0)" P-INDEP
; V23 tmp15 [V23,T06] ( 2, 4 ) int -> [rbp-0x44] spill-single-def "argument with side effect"
; V24 tmp16 [V24,T07] ( 2, 4 ) int -> [rbp-0x48] spill-single-def "argument with side effect"
; V25 tmp17 [V25,T08] ( 2, 4 ) int -> rcx "argument with side effect"
; V26 cse0 [V26,T11] ( 3, 3 ) long -> r13 "CSE #03: moderate"
; V27 cse1 [V27,T04] ( 4, 4 ) long -> r12 "CSE #01: moderate"
;
; Lcl frame size = 40
G_M51837_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov rbx, rdi
mov r15, rsi
mov r14d, edx
;; size=28 bbWeight=1 PerfScore 7.50
G_M51837_IG02:
mov rsi, 0xD1FFAB1E
and rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
call [rax]System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
mov r13, rax
mov rdi, r13
mov rsi, r15
mov r12, qword ptr [r13]
mov rax, qword ptr [r12+0x60]
- call [rax+0x28]System.Globalization.Calendar:GetYear(System.DateTime):int:this
+ call [rax+0x20]System.Globalization.Calendar:GetYear(System.DateTime):int:this
mov dword ptr [rbp-0x44], eax
mov rdi, r13
mov rsi, r15
mov rcx, qword ptr [r12+0x58]
- call [rcx+0x38]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
+ call [rcx+0x30]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
mov dword ptr [rbp-0x48], eax
mov rdi, r13
mov rsi, r15
mov rcx, qword ptr [r12+0x50]
- call [rcx+0x18]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
+ call [rcx+0x10]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
mov ecx, eax
lea rsi, [rbp-0x40]
mov qword ptr [rsp], rsi
mov esi, dword ptr [rbp-0x44]
mov edx, dword ptr [rbp-0x48]
lea r8, [rbp-0x30]
lea r9, [rbp-0x38]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
call [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
add r14d, dword ptr [rbp-0x30]
mov dword ptr [rbp-0x30], r14d
cmp dword ptr [rbp-0x38], 13
jne SHORT G_M51837_IG04
;; size=148 bbWeight=1 PerfScore 42.25
G_M51837_IG03:
mov esi, dword ptr [rbp-0x30]
mov rdi, rbx
xor edx, edx
mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
test eax, eax
jne SHORT G_M51837_IG04
mov dword ptr [rbp-0x38], 12
mov rdi, rbx
mov esi, dword ptr [rbp-0x30]
mov edx, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
mov dword ptr [rbp-0x40], eax
- ;; size=52 bbWeight=0.50 PerfScore 8.62
+ ;; size=53 bbWeight=0.50 PerfScore 8.62
G_M51837_IG04:
mov rdi, rbx
mov esi, dword ptr [rbp-0x30]
mov edx, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
cmp dword ptr [rbp-0x40], eax
cmovle eax, dword ptr [rbp-0x40]
mov dword ptr [rbp-0x40], eax
mov rdi, rbx
mov rsi, r15
mov edx, dword ptr [rbp-0x30]
mov ecx, dword ptr [rbp-0x38]
mov r8d, dword ptr [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:LunarToTime(System.DateTime,int,int,int):System.DateTime:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:LunarToTime(System.DateTime,int,int,int):System.DateTime:this
mov r15, rax
mov r14, 0xD1FFAB1E
and r14, r15
mov rdi, rbx
mov rax, qword ptr [rbx]
mov r13, qword ptr [rax+0x40]
call [r13+0x20]System.Globalization.Calendar:get_MinSupportedDateTime():System.DateTime:this
mov r12, rax
mov rdi, rbx
call [r13+0x28]System.Globalization.Calendar:get_MaxSupportedDateTime():System.DateTime:this
mov rdx, rax
mov rdi, r14
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Globalization.Calendar:CheckAddResult(long,System.DateTime,System.DateTime)
call [rax]System.Globalization.Calendar:CheckAddResult(long,System.DateTime,System.DateTime)
mov rax, r15
;; size=123 bbWeight=1 PerfScore 33.00
G_M51837_IG05:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 366, prolog size 19, PerfScore 95.62, instruction count 102, allocated bytes for code 366 (MethodHash=3b673582) for method System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
+; Total bytes of code 367, prolog size 19, PerfScore 95.62, instruction count 102, allocated bytes for code 367 (MethodHash=3b673582) for method System.Globalization.EastAsianLunisolarCalendar:AddYears(System.DateTime,int):System.DateTime:this (FullOpts)
1 (0.93 % of base) - System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,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] ( 5, 4 ) ref -> r15 this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; V01 arg1 [V01,T00] ( 6, 5.50) int -> rbx
; V02 arg2 [V02,T02] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T03] ( 3, 3 ) int -> rcx single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 8
G_M27737_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov r15, rdi
mov ebx, esi
mov r14d, edx
;; size=20 bbWeight=1 PerfScore 6.25
G_M27737_IG02:
mov rdi, r15
mov esi, ebx
mov edx, ecx
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
mov ebx, eax
cmp r14d, 13
jne SHORT G_M27737_IG04
;; size=27 bbWeight=1 PerfScore 5.50
G_M27737_IG03:
mov rdi, r15
mov esi, ebx
xor edx, edx
mov rax, qword ptr [r15]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
test eax, eax
je SHORT G_M27737_IG06
- ;; size=20 bbWeight=0.50 PerfScore 4.50
+ ;; size=21 bbWeight=0.50 PerfScore 4.50
G_M27737_IG04:
mov eax, r14d
sub eax, 1
cmp eax, 12
ja SHORT G_M27737_IG06
mov eax, ebx
;; size=13 bbWeight=1 PerfScore 2.00
G_M27737_IG05:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
G_M27737_IG06:
mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_Month(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_Month(int)
int3
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 107, prolog size 12, PerfScore 21.50, instruction count 40, allocated bytes for code 107 (MethodHash=d3d993a6) for method System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 21.50, instruction count 40, allocated bytes for code 108 (MethodHash=d3d993a6) for method System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this (FullOpts)
1 (0.39 % of base) - System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 6, 8.25) ref -> rbx this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.DateTime>
; V02 loc0 [V02 ] ( 2, 5 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V03 loc1 [V03 ] ( 3, 6 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V04 loc2 [V04 ] ( 4, 10 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V05 loc3 [V05,T00] ( 5, 17 ) int -> r15
; V06 OutArgs [V06 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T01] ( 2, 16 ) int -> r13 "impAppendStmt"
; V08 tmp2 [V08,T04] ( 5, 10 ) ref -> r14 class-hnd single-def "dup spill" <System.Globalization.Calendar>
;* V09 tmp3 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
;* V10 tmp4 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V13 tmp7 [V13,T05] ( 3, 8 ) int -> rax "Inline return value spill temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V15 tmp9 [V15,T02] ( 2, 16 ) int -> rsi "Inlining Arg"
; V16 tmp10 [V16,T06] ( 5, 5 ) long -> r15 single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
;* V17 tmp11 [V17 ] ( 0, 0 ) long -> zero-ref "field V09._dateData (fldOffset=0x0)" P-INDEP
; V18 tmp12 [V18,T09] ( 2, 4 ) int -> r12 "argument with side effect"
; V19 tmp13 [V19,T10] ( 2, 4 ) int -> [rbp-0x44] spill-single-def "argument with side effect"
; V20 tmp14 [V20,T11] ( 2, 4 ) int -> rcx "argument with side effect"
; V21 cse0 [V21,T07] ( 2, 4.25) long -> r14 hoist "CSE #03: moderate"
; V22 cse1 [V22,T08] ( 4, 4 ) long -> r13 "CSE #01: moderate"
;
; Lcl frame size = 40
G_M63146_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov rbx, rdi
mov r15, rsi
;; size=25 bbWeight=1 PerfScore 7.25
G_M63146_IG02:
mov rsi, 0xD1FFAB1E
and rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
call [rax]System.Globalization.EastAsianLunisolarCalendar:CheckTicksRange(long):this
mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
mov r14, rax
mov rdi, r14
mov rsi, r15
mov r13, qword ptr [r14]
mov rax, qword ptr [r13+0x60]
- call [rax+0x28]System.Globalization.Calendar:GetYear(System.DateTime):int:this
+ call [rax+0x20]System.Globalization.Calendar:GetYear(System.DateTime):int:this
mov r12d, eax
mov rdi, r14
mov rsi, r15
mov rax, qword ptr [r13+0x58]
- call [rax+0x38]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
+ call [rax+0x30]System.Globalization.Calendar:GetMonth(System.DateTime):int:this
mov dword ptr [rbp-0x44], eax
mov rdi, r14
mov rsi, r15
mov rcx, qword ptr [r13+0x50]
- call [rcx+0x18]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
+ call [rcx+0x10]System.Globalization.Calendar:GetDayOfMonth(System.DateTime):int:this
mov ecx, eax
lea rsi, [rbp-0x40]
mov qword ptr [rsp], rsi
mov esi, r12d
mov edx, dword ptr [rbp-0x44]
lea r8, [rbp-0x30]
lea r9, [rbp-0x38]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
call [rax]System.Globalization.EastAsianLunisolarCalendar:GregorianToLunar(int,int,int,byref,byref,byref):this
mov r15d, 1
cmp dword ptr [rbp-0x38], 1
jle SHORT G_M63146_IG08
;; size=142 bbWeight=1 PerfScore 38.00
G_M63146_IG03:
mov rdi, qword ptr [rbx]
- mov r14, qword ptr [rdi+0x78]
+ mov r14, qword ptr [rdi+0x70]
;; size=7 bbWeight=0.25 PerfScore 1.00
G_M63146_IG04:
mov r13d, dword ptr [rbp-0x40]
mov esi, dword ptr [rbp-0x30]
mov rdi, rbx
mov edx, 3
- call [r14]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ call [r14+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
lea ecx, [r15-0x01]
mov edx, 0x8000
sarx ecx, edx, ecx
test eax, ecx
jne SHORT G_M63146_IG06
- ;; size=36 bbWeight=4 PerfScore 32.00
+ ;; size=37 bbWeight=4 PerfScore 32.00
G_M63146_IG05:
mov eax, 29
jmp SHORT G_M63146_IG07
;; size=7 bbWeight=2 PerfScore 4.50
G_M63146_IG06:
mov eax, 30
;; size=5 bbWeight=2 PerfScore 0.50
G_M63146_IG07:
add eax, r13d
mov dword ptr [rbp-0x40], eax
inc r15d
cmp r15d, dword ptr [rbp-0x38]
jl SHORT G_M63146_IG04
;; size=15 bbWeight=4 PerfScore 18.00
G_M63146_IG08:
mov eax, dword ptr [rbp-0x40]
;; size=3 bbWeight=1 PerfScore 1.00
G_M63146_IG09:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 255, prolog size 19, PerfScore 106.50, instruction count 75, allocated bytes for code 255 (MethodHash=b99a0955) for method System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this (FullOpts)
+; Total bytes of code 256, prolog size 19, PerfScore 106.50, instruction count 75, allocated bytes for code 256 (MethodHash=b99a0955) for method System.Globalization.EastAsianLunisolarCalendar:GetDayOfYear(System.DateTime):int:this (FullOpts)
1 (1.64 % of base) - System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar: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,T00] ( 5, 3.50) ref -> rbx this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; V01 arg1 [V01,T01] ( 3, 2.50) int -> rsi single-def
; V02 arg2 [V02,T02] ( 3, 2.50) int -> rdx single-def
; V03 loc0 [V03,T04] ( 3, 1.50) int -> rax
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 2 ) int -> rsi "argument with side effect"
;
; Lcl frame size = 8
G_M52894_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=0.50 PerfScore 1.88
G_M52894_IG02:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
mov esi, eax
mov rdi, rbx
xor edx, edx
mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
lea ecx, [rax+0x01]
xor edx, edx
test eax, eax
mov eax, edx
cmovg eax, ecx
- ;; size=43 bbWeight=0.50 PerfScore 6.38
+ ;; size=44 bbWeight=0.50 PerfScore 6.38
G_M52894_IG03:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 61, prolog size 8, PerfScore 9.38, instruction count 23, allocated bytes for code 61 (MethodHash=86393161) for method System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this (FullOpts)
+; Total bytes of code 62, prolog size 8, PerfScore 9.38, instruction count 23, allocated bytes for code 62 (MethodHash=86393161) for method System.Globalization.EastAsianLunisolarCalendar:GetLeapMonth(int,int):int:this (FullOpts)
1 (1.52 % of base) - System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(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
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 3.50) ref -> rbx this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; V01 arg1 [V01,T01] ( 3, 2.50) int -> rsi single-def
; V02 arg2 [V02,T02] ( 3, 2.50) int -> rdx single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T03] ( 2, 2 ) int -> rsi "argument with side effect"
;
; Lcl frame size = 8
G_M14525_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=0.50 PerfScore 1.88
G_M14525_IG02:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
mov esi, eax
mov rdi, rbx
xor edx, edx
mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
mov ecx, 13
mov edx, 12
test eax, eax
mov eax, edx
cmovne eax, ecx
- ;; size=48 bbWeight=0.50 PerfScore 6.25
+ ;; size=49 bbWeight=0.50 PerfScore 6.25
G_M14525_IG03:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 66, prolog size 8, PerfScore 9.25, instruction count 23, allocated bytes for code 66 (MethodHash=7353c742) for method System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this (FullOpts)
+; Total bytes of code 67, prolog size 8, PerfScore 9.25, instruction count 23, allocated bytes for code 67 (MethodHash=7353c742) for method System.Globalization.EastAsianLunisolarCalendar:GetMonthsInYear(int,int):int:this (FullOpts)
1 (1.67 % of base) - System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(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,T00] ( 4, 3 ) ref -> rdi this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; V01 arg1 [V01,T01] ( 3, 2.50) int -> rsi single-def
; V02 arg2 [V02,T02] ( 3, 2.50) int -> rbx single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 8
G_M28713_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov ebx, edx
;; size=10 bbWeight=0.50 PerfScore 1.88
G_M28713_IG02:
mov edx, 3
mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
dec ebx
mov ecx, 0x8000
sarx ecx, ecx, ebx
mov edx, 30
mov edi, 29
test eax, ecx
mov eax, edi
cmovne eax, edx
- ;; size=43 bbWeight=0.50 PerfScore 4.75
+ ;; size=44 bbWeight=0.50 PerfScore 4.75
G_M28713_IG03:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 60, prolog size 8, PerfScore 7.75, instruction count 21, allocated bytes for code 60 (MethodHash=0d428fd6) for method System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this (FullOpts)
+; Total bytes of code 61, prolog size 8, PerfScore 7.75, instruction count 21, allocated bytes for code 61 (MethodHash=0d428fd6) for method System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this (FullOpts)
1 (4.00 % of base) - System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(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] ( 4, 4 ) ref -> rdi this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; 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_M55001_IG01:
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
G_M55001_IG02:
xor edx, edx
mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
test eax, eax
setne al
movzx rax, al
- ;; size=19 bbWeight=1 PerfScore 8.75
+ ;; size=20 bbWeight=1 PerfScore 8.75
G_M55001_IG03:
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 4, PerfScore 11.50, instruction count 11, allocated bytes for code 25 (MethodHash=f9cb2926) for method System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this (FullOpts)
+; Total bytes of code 26, prolog size 4, PerfScore 11.50, instruction count 11, allocated bytes for code 26 (MethodHash=f9cb2926) for method System.Globalization.EastAsianLunisolarCalendar:InternalIsLeapYear(int):ubyte:this (FullOpts)
1 (0.30 % of base) - System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 6 ) ref -> rbx this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; V01 arg1 [V01,T01] ( 6, 6 ) int -> r15
; V02 arg2 [V02,T02] ( 6, 4.50) int -> r14 single-def
; V03 arg3 [V03,T03] ( 5, 4 ) int -> r13 single-def
; V04 arg4 [V04,T04] ( 3, 3 ) int -> r8 single-def
; V05 loc0 [V05,T06] ( 3, 2 ) int -> r12
; V06 loc1 [V06,T05] ( 3, 2.50) int -> rax
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Int32>
; V09 tmp2 [V09,T08] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
; V10 tmp3 [V10,T11] ( 2, 0 ) ref -> r13 class-hnd exact single-def "impImportAndPushBox" <System.String>
; V11 tmp4 [V11,T09] ( 3, 0 ) ref -> r12 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
; V12 tmp5 [V12,T10] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
; V13 tmp6 [V13,T12] ( 2, 0 ) ref -> [rbp-0x30] spill-single-def "argument with side effect"
; V14 tmp7 [V14,T13] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
;
; Lcl frame size = 8
G_M62098_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov rbx, rdi
mov r15d, esi
mov r14d, edx
mov r13d, ecx
;; size=28 bbWeight=1 PerfScore 8.50
G_M62098_IG02:
mov rdi, rbx
mov esi, r15d
mov edx, r14d
mov ecx, r8d
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
mov r15d, eax
mov rdi, rbx
mov esi, r15d
mov edx, r14d
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:InternalGetDaysInMonth(int,int):int:this
mov r12d, eax
test r13d, r13d
jle SHORT G_M62098_IG07
cmp r13d, r12d
jg SHORT G_M62098_IG07
mov rdi, rbx
mov esi, r15d
xor edx, edx
mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
test eax, eax
je SHORT G_M62098_IG05
- ;; size=82 bbWeight=1 PerfScore 20.25
+ ;; size=83 bbWeight=1 PerfScore 20.25
G_M62098_IG03:
inc eax
cmp r14d, eax
sete al
movzx rax, al
;; size=11 bbWeight=0.50 PerfScore 0.88
G_M62098_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_M62098_IG05:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M62098_IG06:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M62098_IG07:
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov dword ptr [rbx+0x08], r13d
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentOutOfRange_Day():System.String
call [rax]System.SR:get_ArgumentOutOfRange_Day():System.String
mov r13, rax
mov dword ptr [r15+0x08], r12d
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov dword ptr [r12+0x08], r14d
mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov edi, 0x13E08
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov gword ptr [rbp-0x30], rax
mov rdx, r12
mov rsi, r15
mov rdi, r13
mov rcx, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String
call [rcx]System.SR:Format(System.String,System.Object,System.Object):System.String
mov rcx, rax
mov rsi, gword ptr [rbp-0x30]
mov rdx, rbx
mov rdi, r14
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, r14
call CORINFO_HELP_THROW
int3
;; size=179 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 16, PerfScore 34.00, instruction count 94, allocated bytes for code 332 (MethodHash=dd350d6d) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
+; Total bytes of code 333, prolog size 16, PerfScore 34.00, instruction count 94, allocated bytes for code 333 (MethodHash=dd350d6d) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapDay(int,int,int,int):ubyte:this (FullOpts)
1 (1.32 % of base) - System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(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] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def
; V02 arg2 [V02,T01] ( 4, 3.50) int -> r15 single-def
; V03 arg3 [V03,T03] ( 3, 3 ) int -> rcx single-def
; V04 loc0 [V04,T05] ( 3, 2.50) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 4 ) int -> rsi "argument with side effect"
;
; Lcl frame size = 0
G_M5185_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rdi
mov r15d, edx
;; size=15 bbWeight=1 PerfScore 4.00
G_M5185_IG02:
mov rdi, rbx
mov edx, r15d
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearMonthRange(int,int,int):int:this
mov esi, eax
mov rdi, rbx
xor edx, edx
mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
test eax, eax
je SHORT G_M5185_IG05
- ;; size=38 bbWeight=1 PerfScore 12.75
+ ;; size=39 bbWeight=1 PerfScore 12.75
G_M5185_IG03:
inc eax
cmp r15d, eax
sete al
movzx rax, al
;; size=11 bbWeight=0.50 PerfScore 0.88
G_M5185_IG04:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
G_M5185_IG05:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M5185_IG06:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 76, prolog size 9, PerfScore 20.25, instruction count 31, allocated bytes for code 76 (MethodHash=fcf0ebbe) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this (FullOpts)
+; Total bytes of code 77, prolog size 9, PerfScore 20.25, instruction count 31, allocated bytes for code 77 (MethodHash=fcf0ebbe) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapMonth(int,int,int):ubyte:this (FullOpts)
1 (1.75 % of base) - System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this
; Assembly listing for method System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(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
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Globalization.EastAsianLunisolarCalendar>
; 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"
; V04 tmp1 [V04,T03] ( 2, 4 ) int -> rsi "argument with side effect"
;
; Lcl frame size = 8
G_M6561_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=1 PerfScore 3.75
G_M6561_IG02:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
call [rax]System.Globalization.EastAsianLunisolarCalendar:CheckYearRange(int,int):int:this
mov esi, eax
mov rdi, rbx
xor edx, edx
mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x78]
- call [rax]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
+ mov rax, qword ptr [rax+0x70]
+ call [rax+0x38]System.Globalization.EastAsianLunisolarCalendar:GetYearInfo(int,int):int:this
test eax, eax
setne al
movzx rax, al
- ;; size=39 bbWeight=1 PerfScore 12.75
+ ;; size=40 bbWeight=1 PerfScore 12.75
G_M6561_IG03:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 57, prolog size 8, PerfScore 18.75, instruction count 21, allocated bytes for code 57 (MethodHash=23bee65e) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)
+; Total bytes of code 58, prolog size 8, PerfScore 18.75, instruction count 21, allocated bytes for code 58 (MethodHash=23bee65e) for method System.Globalization.EastAsianLunisolarCalendar:IsLeapYear(int,int):ubyte:this (FullOpts)