Untitled Diff

创建于 差异永不过期
32 删除
41
81 添加
86
; Assembly listing for method System.DateTime:TryParse(System.ReadOnlySpan`1[ushort],byref):bool
; Assembly listing for method System.DateTime:TryParse(System.ReadOnlySpan`1[ushort],byref):bool
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; optimized code
; rsp based frame
; rsp based frame
; partially interruptible
; partially interruptible
; No PGO data
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T00] ( 3, 6 ) byref -> rsi single-def
; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx single-def
; V01 arg1 [V01,T01] ( 3, 3 ) byref -> rdi single-def
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> rsi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref V05._reference(offs=0x00) P-INDEP "field V00._reference (fldOffset=0x0)"
; V03 tmp1 [V03,T05] ( 3, 2 ) bool -> rax "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
; V04 tmp2 [V04 ] ( 9, 8.50) struct (128) [rsp+30H] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg"
; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg"
;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "folding static ro fld struct"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref V16._reference(offs=0x00) P-INDEP "field V00._reference (fldOffset=0x0)"
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
; V11 tmp9 [V11,T03] ( 3, 3 ) byref -> rdi single-def V05._reference(offs=0x00) P-INDEP "field V05._reference (fldOffset=0x0)"
; V12 tmp10 [V12,T04] ( 3, 3 ) int -> rbx V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)"
;* V13 tmp11 [V13,T06] ( 0, 0 ) long -> zero-ref V07._dateData(offs=0x00) P-INDEP "field V07._dateData (fldOffset=0x0)"
;* V14 tmp12 [V14 ] ( 0, 0 ) byref -> zero-ref V08._reference(offs=0x00) P-INDEP "field V08._reference (fldOffset=0x0)"
;* V15 tmp13 [V15 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)"
;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
; V17 tmp15 [V17 ] ( 3, 6 ) struct (16) [rsp+20H] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument"
;
;
; Lcl frame size = 40
; Lcl frame size = 176


G_M61794_IG01:
G_M61794_IG01:
push rdi
push rdi
push rsi
push rsi
sub rsp, 40
push rbx
mov rsi, rcx
sub rsp, 176
mov rdi, rdx
vxorps xmm4, xmm4
;; size=12 bbWeight=1 PerfScore 2.75
mov rax, -144
vmovdqa xmmword ptr [rsp+rax+B0H], xmm4
vmovdqa xmmword ptr [rsp+rax+C0H], xmm4
vmovdqa xmmword ptr [rsp+rax+D0H], xmm4
add rax, 48
jne SHORT -5 instr
mov rsi, rdx
;; size=60 bbWeight=1 PerfScore 11.33
G_M61794_IG02:
G_M61794_IG02:
mov rdi, bword ptr [rcx]
mov ebx, dword ptr [rcx+08H]
call [System.Globalization.DateTimeFormatInfo:get_CurrentInfo():System.Globalization.DateTimeFormatInfo]
call [System.Globalization.DateTimeFormatInfo:get_CurrentInfo():System.Globalization.DateTimeFormatInfo]
mov rdx, rax
mov rdx, rax
mov rcx, rsi
mov bword ptr [rsp+90H], rdi
mov r9, rdi
mov dword ptr [rsp+98H], ebx
mov dword ptr [rsp+58H], -1
mov dword ptr [rsp+5CH], -1
mov dword ptr [rsp+60H], -1
mov rcx, 0xD1FFAB1E
mov qword ptr [rsp+50H], rcx
mov dword ptr [rsp+70H], -1
mov bword ptr [rsp+20H], rdi
mov dword ptr [rsp+28H], ebx
lea rcx, [rsp+20H]
lea r9, [rsp+30H]
xor r8d, r8d
xor r8d, r8d
;; size=18 bbWeight=1 PerfScore 4.00
call [System.DateTimeParse:TryParse(System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,int,byref):bool]
test eax, eax
je SHORT G_M61794_IG04
;; size=109 bbWeight=1 PerfScore 22.00
G_M61794_IG03:
G_M61794_IG03:
add rsp, 40
mov rax, qword ptr [rsp+88H]
mov qword ptr [rsi], rax
mov eax, 1
jmp SHORT G_M61794_IG05
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M61794_IG04:
xor eax, eax
mov qword ptr [rsi], rax
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M61794_IG05:
add rsp, 176
pop rbx
pop rsi
pop rsi
pop rdi
pop rdi
tail.jmp [System.DateTimeParse:TryParse(System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,int,byref):bool]
ret
;; size=12 bbWeight=1 PerfScore 3.25
;; size=11 bbWeight=1 PerfScore 2.75


; Total bytes of code 42, prolog size 6, PerfScore 14.20, instruction count 14, allocated bytes for code 42 (MethodHash=e7870e9d) for method System.DateTime:TryParse(System.ReadOnlySpan`1[ushort],byref):bool
; Total bytes of code 203, prolog size 57, PerfScore 59.13, instruction count 43, allocated bytes for code 203 (MethodHash=e7870e9d) for method System.DateTime:TryParse(System.ReadOnlySpan`1[ushort],byref):bool
; ============================================================
; ============================================================