191 (32.21 % of base) - System.Net.IPNetwork:Contains(System.Net.IPAddress):ubyte:this
; Assembly listing for method System.Net.IPNetwork:Contains(System.Net.IPAddress):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; 23 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 9, 6 ) byref -> r15 this single-def
; V01 arg1 [V01,T00] ( 9, 6.50) ref -> rbx class-hnd single-def <System.Net.IPAddress>
; V02 loc0 [V02,T17] ( 2, 1 ) int -> r14
; V03 loc1 [V03 ] ( 4, 2 ) struct (16) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op <System.UInt128>
; V04 loc2 [V04 ] ( 4, 2 ) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op <System.UInt128>
; V05 loc3 [V05 ] ( 2, 1 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
;* V06 loc4 [V06 ] ( 0, 0 ) struct (16) zero-ref <System.UInt128>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V08 tmp1 [V08,T05] ( 2, 4 ) int -> rdi "impAppendStmt"
+; V08 tmp1 [V08,T04] ( 2, 4 ) int -> r14 "impAppendStmt"
;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.UInt128]>
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.Net.IPAddress>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.UInt128]>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128>
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128>
-; V18 tmp11 [V18,T04] ( 2, 4 ) ref -> rax class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V19 tmp12 [V19,T03] ( 5, 5 ) ref -> rax
-; V20 tmp13 [V20,T14] ( 2, 2 ) int -> rcx "Inline return value spill temp"
-; V21 tmp14 [V21,T11] ( 2, 2 ) ref -> rdi class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V22 tmp15 [V22,T06] ( 5, 2.50) ref -> rdi
+; V18 tmp11 [V18,T03] ( 2, 4 ) ref -> rax class-hnd single-def "dup spill" <System.Net.IPAddress>
+; V19 tmp12 [V19,T05] ( 4, 3.50) ref -> rax
+; V20 tmp13 [V20,T14] ( 2, 2 ) int -> rdi "Inline return value spill temp"
+; V21 tmp14 [V21,T11] ( 2, 2 ) ref -> rax class-hnd single-def "dup spill" <System.Net.IPAddress>
+; V22 tmp15 [V22,T06] ( 4, 2 ) ref -> rax
;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V24 tmp17 [V24 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V25 tmp18 [V25,T12] ( 2, 2 ) ref -> rdi class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V26 tmp19 [V26,T07] ( 5, 2.50) ref -> rdi
+; V26 tmp19 [V26,T07] ( 4, 2 ) ref -> rdi
; V27 tmp20 [V27,T13] ( 2, 2 ) ref -> rdi class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V28 tmp21 [V28,T08] ( 5, 2.50) ref -> rdi
+; V28 tmp21 [V28,T08] ( 4, 2 ) ref -> rdi
;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.UInt128]>
;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.UInt128]>
;* V32 tmp25 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V33 tmp26 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.UInt128]>
;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V36 tmp29 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.UInt128]>
;* V37 tmp30 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128>
;* V40 tmp33 [V40 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.UInt128>
; V41 tmp34 [V41,T02] ( 6, 6 ) int -> rcx "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V43 tmp36 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128>
;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128>
;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.UInt128>
; V48 tmp41 [V48,T15] ( 2, 2 ) long -> rax "impAppendStmt"
;* V49 tmp42 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128>
;* V50 tmp43 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.UInt128>
;* V52 tmp45 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128>
;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V55 tmp48 [V55,T16] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
; V56 tmp49 [V56 ] ( 3, 1.50) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._lower (fldOffset=0x0)" P-DEP
; V57 tmp50 [V57 ] ( 3, 1.50) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V03._upper (fldOffset=0x8)" P-DEP
; V58 tmp51 [V58 ] ( 3, 1.50) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V04._lower (fldOffset=0x0)" P-DEP
; V59 tmp52 [V59 ] ( 3, 1.50) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V04._upper (fldOffset=0x8)" P-DEP
;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "field V06._lower (fldOffset=0x0)" P-INDEP
;* V61 tmp54 [V61 ] ( 0, 0 ) long -> zero-ref "field V06._upper (fldOffset=0x8)" P-INDEP
;* V62 tmp55 [V62,T28] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V63 tmp56 [V63 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V64 tmp57 [V64 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V66 tmp59 [V66,T29] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V67 tmp60 [V67 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V15._lower (fldOffset=0x0)" P-INDEP
;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V15._upper (fldOffset=0x8)" P-INDEP
; V72 tmp65 [V72,T18] ( 2, 1 ) long -> rcx "field V16._lower (fldOffset=0x0)" P-INDEP
; V73 tmp66 [V73,T19] ( 2, 1 ) long -> rdx "field V16._upper (fldOffset=0x8)" P-INDEP
;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V17._lower (fldOffset=0x0)" P-INDEP
;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V17._upper (fldOffset=0x8)" P-INDEP
;* V76 tmp69 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V77 tmp70 [V77 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V78 tmp71 [V78,T30] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp72 [V79,T32] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
;* V80 tmp73 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V81 tmp74 [V81 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V82 tmp75 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP
;* V83 tmp76 [V83 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V84 tmp77 [V84,T31] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V85 tmp78 [V85,T33] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V86 tmp79 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
;* V87 tmp80 [V87 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
;* V88 tmp81 [V88,T34] ( 0, 0 ) long -> zero-ref "field V39._lower (fldOffset=0x0)" P-INDEP
;* V89 tmp82 [V89,T35] ( 0, 0 ) long -> zero-ref "field V39._upper (fldOffset=0x8)" P-INDEP
; V90 tmp83 [V90,T09] ( 4, 2 ) long -> rax "field V40._lower (fldOffset=0x0)" P-INDEP
; V91 tmp84 [V91,T10] ( 4, 2 ) long -> rdi "field V40._upper (fldOffset=0x8)" P-INDEP
; V92 tmp85 [V92,T20] ( 2, 1 ) long -> rax "field V43._lower (fldOffset=0x0)" P-INDEP
; V93 tmp86 [V93,T21] ( 2, 1 ) long -> rdi "field V43._upper (fldOffset=0x8)" P-INDEP
;* V94 tmp87 [V94,T36] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP
; V95 tmp88 [V95,T22] ( 2, 1 ) long -> rdi "field V44._upper (fldOffset=0x8)" P-INDEP
;* V96 tmp89 [V96 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
;* V97 tmp90 [V97 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
; V98 tmp91 [V98,T23] ( 2, 1 ) long -> rdi "field V49._lower (fldOffset=0x0)" P-INDEP
;* V99 tmp92 [V99 ] ( 0, 0 ) long -> zero-ref "field V49._upper (fldOffset=0x8)" P-INDEP
; V100 tmp93 [V100,T24] ( 2, 1 ) long -> rsi "field V51._lower (fldOffset=0x0)" P-INDEP
; V101 tmp94 [V101,T25] ( 2, 1 ) long -> r8 "field V51._upper (fldOffset=0x8)" P-INDEP
; V102 tmp95 [V102,T26] ( 2, 1 ) long -> rdi "field V52._lower (fldOffset=0x0)" P-INDEP
; V103 tmp96 [V103,T27] ( 2, 1 ) long -> rax "field V52._upper (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 40
G_M43571_IG01:
push rbp
push r15
push r14
push rbx
sub rsp, 40
lea rbp, [rsp+0x40]
mov r15, rdi
mov rbx, rsi
;; size=21 bbWeight=1 PerfScore 5.25
G_M43571_IG02:
test rbx, rbx
- je G_M43571_IG16
- mov edi, 2
- mov eax, 23
+ je G_M43571_IG25
+ mov r14d, 2
+ mov edi, 23
cmp gword ptr [rbx+0x08], 0
- cmovne edi, eax
+ cmovne r14d, edi
mov rax, gword ptr [r15]
- mov rcx, 0xD1FFAB1E ; const ptr
test rax, rax
- cmove rax, gword ptr [rcx]
- mov ecx, 2
- mov edx, 23
- cmp gword ptr [rax+0x08], 0
- cmovne ecx, edx
- cmp edi, ecx
- je SHORT G_M43571_IG04
- ;; size=69 bbWeight=1 PerfScore 15.50
+ jne SHORT G_M43571_IG05
+ ;; size=37 bbWeight=1 PerfScore 8.25
G_M43571_IG03:
- mov rdi, gword ptr [r15]
- mov rax, 0xD1FFAB1E ; const ptr
- test rdi, rdi
- cmove rdi, gword ptr [rax]
- cmp gword ptr [rdi+0x08], 0
- jne G_M43571_IG14
- mov rdi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
- call [rax]System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
- test eax, eax
- je G_M43571_IG14
- ;; size=54 bbWeight=0.50 PerfScore 7.12
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M43571_IG26
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43571_IG04:
- cmp dword ptr [r15+0x08], 0
- je G_M43571_IG12
- cmp gword ptr [rbx+0x08], 0
- je G_M43571_IG10
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rax, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M43571_IG05:
+ mov edi, 2
+ mov ecx, 23
+ cmp gword ptr [rax+0x08], 0
+ cmovne edi, ecx
+ cmp r14d, edi
+ je SHORT G_M43571_IG09
+ ;; size=23 bbWeight=1 PerfScore 5.00
+G_M43571_IG06:
+ mov rax, gword ptr [r15]
+ test rax, rax
+ jne SHORT G_M43571_IG08
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M43571_IG27
+ ;; size=27 bbWeight=0.50 PerfScore 3.75
+G_M43571_IG07:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rax, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M43571_IG08:
+ cmp gword ptr [rax+0x08], 0
+ jne G_M43571_IG23
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
call [rax]System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
test eax, eax
- jne G_M43571_IG10
+ je G_M43571_IG23
+ ;; size=34 bbWeight=0.50 PerfScore 4.38
+G_M43571_IG09:
+ cmp dword ptr [r15+0x08], 0
+ je G_M43571_IG21
+ cmp gword ptr [rbx+0x08], 0
+ je G_M43571_IG17
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
+ call [rax]System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
+ test eax, eax
+ jne G_M43571_IG17
vxorps xmm0, xmm0, xmm0
vmovups xmmword ptr [rbp-0x28], xmm0
vmovups xmmword ptr [rbp-0x38], xmm0
mov rdi, gword ptr [r15]
- mov rsi, 0xD1FFAB1E ; const ptr
test rdi, rdi
- cmove rdi, gword ptr [rsi]
+ jne SHORT G_M43571_IG11
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M43571_IG29
+ ;; size=86 bbWeight=0.50 PerfScore 11.29
+G_M43571_IG10:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rdi, gword ptr [rsi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M43571_IG11:
lea rsi, bword ptr [rbp-0x28]
mov edx, 16
lea rcx, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:TryWriteBytes(System.Span`1[ubyte],byref):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Net.IPAddress:TryWriteBytes(System.Span`1[ubyte],byref):ubyte:this
lea rsi, bword ptr [rbp-0x38]
mov edx, 16
lea rcx, [rbp-0x40]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:TryWriteBytes(System.Span`1[ubyte],byref):ubyte:this
call [rax]System.Net.IPAddress:TryWriteBytes(System.Span`1[ubyte],byref):ubyte:this
mov ecx, dword ptr [r15+0x08]
neg ecx
add ecx, 128
and ecx, 127
test cl, 64
- jne SHORT G_M43571_IG06
+ jne SHORT G_M43571_IG13
test ecx, ecx
- jne SHORT G_M43571_IG05
+ jne SHORT G_M43571_IG12
mov rax, -1
mov rdi, -1
- jmp SHORT G_M43571_IG07
- ;; size=180 bbWeight=0.50 PerfScore 20.29
-G_M43571_IG05:
+ jmp SHORT G_M43571_IG14
+ ;; size=101 bbWeight=0.50 PerfScore 10.00
+G_M43571_IG12:
mov rax, -1
shlx rax, rax, rcx
mov rdi, -1
rol rdi, cl
- jmp SHORT G_M43571_IG07
+ jmp SHORT G_M43571_IG14
;; size=30 bbWeight=0.50 PerfScore 2.50
-G_M43571_IG06:
+G_M43571_IG13:
mov rax, -1
shlx rdi, rax, rcx
xor eax, eax
;; size=17 bbWeight=0.50 PerfScore 0.50
-G_M43571_IG07:
+G_M43571_IG14:
bswap rax
bswap rdi
mov rcx, qword ptr [rbp-0x28]
mov rdx, qword ptr [rbp-0x20]
mov rsi, qword ptr [rbp-0x38]
mov r8, qword ptr [rbp-0x30]
and rdi, rsi
and rax, r8
cmp rcx, rdi
- je SHORT G_M43571_IG08
+ je SHORT G_M43571_IG15
xor eax, eax
- jmp SHORT G_M43571_IG09
+ jmp SHORT G_M43571_IG16
;; size=37 bbWeight=0.50 PerfScore 5.00
-G_M43571_IG08:
+G_M43571_IG15:
cmp rdx, rax
sete al
movzx rax, al
;; size=9 bbWeight=0.50 PerfScore 0.75
-G_M43571_IG09:
+G_M43571_IG16:
add rsp, 40
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M43571_IG10:
+G_M43571_IG17:
mov edi, dword ptr [r15+0x08]
neg edi
add edi, 32
mov eax, -1
shlx edi, eax, edi
mov r14d, edi
bswap r14d
mov rdi, gword ptr [r15]
- mov rax, 0xD1FFAB1E ; const ptr
test rdi, rdi
- cmove rdi, gword ptr [rax]
+ jne SHORT G_M43571_IG19
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M43571_IG28
+ ;; size=52 bbWeight=0.50 PerfScore 5.75
+G_M43571_IG18:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rdi, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M43571_IG19:
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:get_PrivateIPv4Address():uint:this
cmp dword ptr [rdi], edi
call [rax]System.Net.IPAddress:get_PrivateIPv4Address():uint:this
mov r15d, eax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:get_PrivateIPv4Address():uint:this
call [rax]System.Net.IPAddress:get_PrivateIPv4Address():uint:this
and eax, r14d
cmp r15d, eax
sete al
movzx rax, al
- ;; size=89 bbWeight=0.50 PerfScore 10.62
-G_M43571_IG11:
+ ;; size=44 bbWeight=0.50 PerfScore 5.88
+G_M43571_IG20:
add rsp, 40
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M43571_IG12:
+G_M43571_IG21:
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M43571_IG13:
+G_M43571_IG22:
add rsp, 40
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M43571_IG14:
+G_M43571_IG23:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M43571_IG15:
+G_M43571_IG24:
add rsp, 40
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M43571_IG16:
+G_M43571_IG25:
mov edi, 0xC23
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
+G_M43571_IG26:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M43571_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M43571_IG27:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M43571_IG07
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M43571_IG28:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M43571_IG18
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M43571_IG29:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M43571_IG10
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 593, prolog size 15, PerfScore 76.92, instruction count 152, allocated bytes for code 593 (MethodHash=7c2555cc) for method System.Net.IPNetwork:Contains(System.Net.IPAddress):ubyte:this (FullOpts)
+; Total bytes of code 784, prolog size 15, PerfScore 84.29, instruction count 184, allocated bytes for code 784 (MethodHash=7c2555cc) for method System.Net.IPNetwork:Contains(System.Net.IPAddress):ubyte:this (FullOpts)
; ============================================================
116 (232.00 % of base) - System.Net.IPNetwork:Equals(System.Net.IPNetwork):ubyte:this
; Assembly listing for method System.Net.IPNetwork:Equals(System.Net.IPNetwork):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
+; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 3.50) byref -> rdi this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Net.IPNetwork>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.Net.IPAddress>
-; V05 tmp3 [V05,T05] ( 2, 2 ) ref -> rdi class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V06 tmp4 [V06,T03] ( 5, 2.50) ref -> rdi
+; V05 tmp3 [V05,T05] ( 2, 2 ) ref -> r15 class-hnd single-def "dup spill" <System.Net.IPAddress>
+; V06 tmp4 [V06,T03] ( 4, 2 ) ref -> r15
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V08 tmp6 [V08,T04] ( 5, 2.50) ref -> rsi
-; V09 tmp7 [V09,T02] ( 2, 1.50) ref -> rsi single-def "field V01._baseAddress (fldOffset=0x0)" P-INDEP
+; V08 tmp6 [V08,T04] ( 4, 2 ) ref -> rsi
+; V09 tmp7 [V09,T02] ( 2, 1.50) ref -> rbx single-def "field V01._baseAddress (fldOffset=0x0)" P-INDEP
; V10 tmp8 [V10,T01] ( 2, 2 ) int -> rdx single-def "field V01.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M60615_IG01:
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbp
+ push r15
+ push rbx
+ lea rbp, [rsp+0x10]
+ mov rbx, rsi
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M60615_IG02:
cmp dword ptr [rdi+0x08], edx
je SHORT G_M60615_IG05
;; size=5 bbWeight=1 PerfScore 4.00
G_M60615_IG03:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M60615_IG04:
+ pop rbx
+ pop r15
+ pop rbp
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M60615_IG05:
- mov rdi, gword ptr [rdi]
- mov rax, 0xD1FFAB1E ; const ptr
- test rdi, rdi
- cmove rdi, gword ptr [rax]
+ mov r15, gword ptr [rdi]
+ test r15, r15
+ jne SHORT G_M60615_IG07
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M60615_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 3.75
+G_M60615_IG06:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov r15, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M60615_IG07:
+ mov rsi, rbx
test rsi, rsi
- cmove rsi, gword ptr [rax]
+ jne SHORT G_M60615_IG09
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M60615_IG12
+ ;; size=23 bbWeight=0.50 PerfScore 2.88
+G_M60615_IG08:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rsi, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M60615_IG09:
+ mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
cmp dword ptr [rdi], edi
- ;; size=39 bbWeight=0.50 PerfScore 6.00
-G_M60615_IG06:
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
+G_M60615_IG10:
+ pop rbx
+ pop r15
+ pop rbp
tail.jmp [rax]System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
- ;; size=3 bbWeight=0.50 PerfScore 1.00
+ ;; size=7 bbWeight=0.50 PerfScore 1.75
+G_M60615_IG11:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M60615_IG06
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M60615_IG12:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M60615_IG08
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 0, PerfScore 11.62, instruction count 13, allocated bytes for code 50 (MethodHash=da2c1338) for method System.Net.IPNetwork:Equals(System.Net.IPNetwork):ubyte:this (FullOpts)
+; Total bytes of code 166, prolog size 12, PerfScore 21.50, instruction count 43, allocated bytes for code 166 (MethodHash=da2c1338) for method System.Net.IPNetwork:Equals(System.Net.IPNetwork):ubyte:this (FullOpts)
; ============================================================
106 (179.66 % of base) - System.Net.IPNetwork:op_Equality(System.Net.IPNetwork,System.Net.IPNetwork):ubyte
; Assembly listing for method System.Net.IPNetwork:op_Equality(System.Net.IPNetwork,System.Net.IPNetwork):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
+; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Net.IPNetwork>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Net.IPNetwork>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Net.IPNetwork>
;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.Net.IPAddress>
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V08 tmp6 [V08,T04] ( 5, 2.50) ref -> rdi
+; V08 tmp6 [V08,T04] ( 4, 2 ) ref -> r15
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V10 tmp8 [V10,T05] ( 5, 2.50) ref -> rsi
+; V10 tmp8 [V10,T05] ( 4, 2 ) ref -> rsi
; V11 tmp9 [V11,T02] ( 2, 1.50) ref -> rdi single-def "field V00._baseAddress (fldOffset=0x0)" P-INDEP
; V12 tmp10 [V12,T00] ( 2, 2 ) int -> rsi single-def "field V00.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
-; V13 tmp11 [V13,T03] ( 2, 1.50) ref -> rdx single-def "field V01._baseAddress (fldOffset=0x0)" P-INDEP
+; V13 tmp11 [V13,T03] ( 2, 1.50) ref -> rbx single-def "field V01._baseAddress (fldOffset=0x0)" P-INDEP
; V14 tmp12 [V14,T01] ( 2, 2 ) int -> rcx single-def "field V01.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._baseAddress (fldOffset=0x0)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "field V04.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M11613_IG01:
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbp
+ push r15
+ push rbx
+ lea rbp, [rsp+0x10]
+ mov rbx, rdx
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M11613_IG02:
cmp esi, ecx
je SHORT G_M11613_IG05
;; size=4 bbWeight=1 PerfScore 1.25
G_M11613_IG03:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11613_IG04:
+ pop rbx
+ pop r15
+ pop rbp
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M11613_IG05:
- mov rsi, 0xD1FFAB1E ; const ptr
- test rdi, rdi
- cmove rdi, gword ptr [rsi]
- mov rsi, rdx
- mov rax, 0xD1FFAB1E ; const ptr
+ mov r15, rdi
+ test r15, r15
+ jne SHORT G_M11613_IG07
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M11613_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 2.88
+G_M11613_IG06:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov r15, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M11613_IG07:
+ mov rsi, rbx
test rsi, rsi
- cmove rsi, gword ptr [rax]
+ jne SHORT G_M11613_IG09
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M11613_IG12
+ ;; size=23 bbWeight=0.50 PerfScore 2.88
+G_M11613_IG08:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rsi, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M11613_IG09:
+ mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
cmp dword ptr [rdi], edi
- ;; size=49 bbWeight=0.50 PerfScore 5.25
-G_M11613_IG06:
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
+G_M11613_IG10:
+ pop rbx
+ pop r15
+ pop rbp
tail.jmp [rax]System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
- ;; size=3 bbWeight=0.50 PerfScore 1.00
+ ;; size=7 bbWeight=0.50 PerfScore 1.75
+G_M11613_IG11:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M11613_IG06
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M11613_IG12:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M11613_IG08
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 59, prolog size 0, PerfScore 8.12, instruction count 14, allocated bytes for code 59 (MethodHash=fc58d2a2) for method System.Net.IPNetwork:op_Equality(System.Net.IPNetwork,System.Net.IPNetwork):ubyte (FullOpts)
+; Total bytes of code 165, prolog size 12, PerfScore 17.88, instruction count 43, allocated bytes for code 165 (MethodHash=fc58d2a2) for method System.Net.IPNetwork:op_Equality(System.Net.IPNetwork,System.Net.IPNetwork):ubyte (FullOpts)
; ============================================================
99 (30.65 % of base) - System.Net.Sockets.UdpClient:EndReceive(System.IAsyncResult,byref):ubyte[]:this
; Assembly listing for method System.Net.Sockets.UdpClient:EndReceive(System.IAsyncResult,byref):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; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 7, 7 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.UdpClient>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.IAsyncResult>
; V02 arg2 [V02,T04] ( 3, 3 ) byref -> r14 single-def
-; V03 loc0 [V03 ] ( 3, 3 ) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.EndPoint>
+; V03 loc0 [V03 ] ( 3, 3 ) ref -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.EndPoint>
; V04 loc1 [V04,T08] ( 4, 2.50) int -> r15
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V07 tmp1 [V07,T10] ( 3, 2 ) ref -> rdi
+; V07 tmp1 [V07,T10] ( 3, 2 ) ref -> r13
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.PlatformNotSupportedException>
; V09 tmp3 [V09,T02] ( 4, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <ubyte[]>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V11 tmp5 [V11,T11] ( 3, 2 ) ref -> r14 class-hnd "Inline return value spill temp" <ubyte[]>
; V12 tmp6 [V12,T07] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewArr temp" <ubyte[]>
;* V13 tmp7 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V18 tmp12 [V18,T12] ( 3, 1.50) byref -> rbx "field V10._reference (fldOffset=0x0)" P-INDEP
; V19 tmp13 [V19,T06] ( 5, 3 ) int -> r15 "field V10._length (fldOffset=0x8)" P-INDEP
; V20 rat0 [V20,T05] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
; V21 rat1 [V21,T01] ( 5, 7.50) ref -> rax "replacement local"
; V22 rat2 [V22,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M16011_IG01:
push rbp
push r15
push r14
+ push r13
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ sub rsp, 16
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x20], rax
+ mov qword ptr [rbp-0x28], rax
mov rbx, rdi
mov r15, rsi
mov r14, rdx
- ;; size=27 bbWeight=1 PerfScore 7.50
+ ;; size=32 bbWeight=1 PerfScore 7.75
G_M16011_IG02:
movzx rdi, byte ptr [rbx+0x1D]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
call [rax]System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
cmp dword ptr [rbx+0x18], 2
- jne SHORT G_M16011_IG04
+ jne SHORT G_M16011_IG05
;; size=26 bbWeight=1 PerfScore 9.50
G_M16011_IG03:
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- jmp SHORT G_M16011_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M16011_IG21
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M16011_IG04:
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:Any
+ mov r13, gword ptr [rdi]
+ jmp SHORT G_M16011_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M16011_IG05:
- mov gword ptr [rbp-0x20], rdi
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M16011_IG20
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M16011_IG06:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:IPv6Any
+ mov r13, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M16011_IG07:
+ mov gword ptr [rbp-0x28], r13
mov rdi, gword ptr [rbx+0x08]
- lea rdx, [rbp-0x20]
+ lea rdx, [rbp-0x28]
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:EndReceiveFrom(System.IAsyncResult,byref):int:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:EndReceiveFrom(System.IAsyncResult,byref):int:this
mov r15d, eax
- mov rsi, gword ptr [rbp-0x20]
+ mov rsi, gword ptr [rbp-0x28]
mov rax, rsi
test rax, rax
- je SHORT G_M16011_IG08
+ je SHORT G_M16011_IG10
;; size=44 bbWeight=1 PerfScore 12.75
-G_M16011_IG06:
+G_M16011_IG08:
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
cmp qword ptr [rax], rdi
- je SHORT G_M16011_IG08
+ je SHORT G_M16011_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16011_IG07:
+G_M16011_IG09:
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
;; size=12 bbWeight=0.25 PerfScore 0.81
-G_M16011_IG08:
+G_M16011_IG10:
mov rdi, r14
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov rbx, gword ptr [rbx+0x10]
test rbx, rbx
- je SHORT G_M16011_IG10
+ je SHORT G_M16011_IG12
;; size=20 bbWeight=1 PerfScore 4.75
-G_M16011_IG09:
+G_M16011_IG11:
cmp dword ptr [rbx+0x08], r15d
- jb SHORT G_M16011_IG17
+ jb SHORT G_M16011_IG19
add rbx, 16
- jmp SHORT G_M16011_IG11
+ jmp SHORT G_M16011_IG13
;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M16011_IG10:
+G_M16011_IG12:
test r15d, r15d
- jne SHORT G_M16011_IG17
+ jne SHORT G_M16011_IG19
xor rbx, rbx
xor r15d, r15d
;; size=10 bbWeight=0.50 PerfScore 0.88
-G_M16011_IG11:
+G_M16011_IG13:
test r15d, r15d
- je SHORT G_M16011_IG13
+ je SHORT G_M16011_IG15
;; size=5 bbWeight=1 PerfScore 1.25
-G_M16011_IG12:
+G_M16011_IG14:
mov esi, r15d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
mov edx, r15d
lea rdi, bword ptr [r14+0x10]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- jmp SHORT G_M16011_IG15
+ jmp SHORT G_M16011_IG17
;; size=45 bbWeight=0.50 PerfScore 4.00
-G_M16011_IG13:
+G_M16011_IG15:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M16011_IG18
+ je SHORT G_M16011_IG22
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16011_IG14:
+G_M16011_IG16:
mov rax, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
mov r14, gword ptr [rax]
;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M16011_IG15:
+G_M16011_IG17:
mov rax, r14
;; size=3 bbWeight=1 PerfScore 0.25
-G_M16011_IG16:
- add rsp, 8
+G_M16011_IG18:
+ add rsp, 16
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M16011_IG17:
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M16011_IG19:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M16011_IG18:
+G_M16011_IG20:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M16011_IG06
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M16011_IG21:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M16011_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M16011_IG22:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[ubyte]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M16011_IG14
+ jmp SHORT G_M16011_IG16
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 323, prolog size 18, PerfScore 58.44, instruction count 84, allocated bytes for code 323 (MethodHash=77c3c174) for method System.Net.Sockets.UdpClient:EndReceive(System.IAsyncResult,byref):ubyte[]:this (FullOpts)
+; Total bytes of code 422, prolog size 23, PerfScore 63.44, instruction count 100, allocated bytes for code 422 (MethodHash=77c3c174) for method System.Net.Sockets.UdpClient:EndReceive(System.IAsyncResult,byref):ubyte[]:this (FullOpts)
; ============================================================
97 (20.00 % of base) - System.Net.Sockets.UdpClient:.ctor(int,int):this
; Assembly listing for method System.Net.Sockets.UdpClient:.ctor(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; 4 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 9 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.UdpClient>
; V01 arg1 [V01,T01] ( 6, 4.50) int -> r15 single-def
; V02 arg2 [V02,T02] ( 5, 4.50) int -> r14 single-def
; V03 loc0 [V03,T08] ( 3, 2 ) ref -> r14 class-hnd <System.Net.IPEndPoint>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V05 tmp1 [V05,T05] ( 2, 4 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
-; V06 tmp2 [V06,T07] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
-; V07 tmp3 [V07,T04] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
-; V08 tmp4 [V08,T10] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V09 tmp5 [V09,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;* V10 tmp6 [V10,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp7 [V11,T09] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Net.IPAddress+ReadOnlyIPAddress>
-;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp10 [V14,T03] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.Socket>
-; V15 tmp11 [V15,T06] ( 2, 4 ) int -> r15 "finalizable newobj spill"
-;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V17 tmp13 [V17,T12] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V18 tmp14 [V18,T13] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V19 tmp15 [V19,T14] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V20 tmp16 [V20,T15] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V21 tmp17 [V21,T16] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
+; V06 tmp2 [V06,T06] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
+; V07 tmp3 [V07,T07] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
+; V08 tmp4 [V08,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V09 tmp5 [V09,T12] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+;* V10 tmp6 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp7 [V11,T03] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.Socket>
+; V12 tmp8 [V12,T05] ( 2, 4 ) int -> r15 "finalizable newobj spill"
+; V13 tmp9 [V13,T09] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V14 tmp10 [V14,T10] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V15 tmp11 [V15,T13] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V16 tmp12 [V16,T14] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V17 tmp13 [V17,T15] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V18 tmp14 [V18,T16] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V19 tmp15 [V19,T17] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
; Lcl frame size = 0
G_M57935_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15d, esi
mov r14d, edx
;; size=22 bbWeight=1 PerfScore 6.25
G_M57935_IG02:
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 0x10000
call CORINFO_HELP_NEWARR_1_VC
lea rdi, bword ptr [rbx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [rbx+0x18], 2
test r15d, r15d
- jl G_M57935_IG11
+ jl G_M57935_IG13
;; size=48 bbWeight=1 PerfScore 5.50
G_M57935_IG03:
cmp r15d, 0xFFFF
- jg G_M57935_IG11
+ jg G_M57935_IG13
;; size=13 bbWeight=0.50 PerfScore 0.62
G_M57935_IG04:
cmp r14d, 2
je SHORT G_M57935_IG06
;; size=6 bbWeight=1 PerfScore 1.25
G_M57935_IG05:
cmp r14d, 23
- jne G_M57935_IG12
+ jne G_M57935_IG14
;; size=10 bbWeight=0.50 PerfScore 0.62
G_M57935_IG06:
mov dword ptr [rbx+0x18], r14d
cmp dword ptr [rbx+0x18], 2
- je SHORT G_M57935_IG08
+ je SHORT G_M57935_IG09
;; size=10 bbWeight=1 PerfScore 5.00
G_M57935_IG07:
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
call CORINFO_HELP_NEWSFAST
mov r14, rax
- mov rsi, 0xD1FFAB1E ; const ptr
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M57935_IG16
+ ;; size=37 bbWeight=0.50 PerfScore 2.88
+G_M57935_IG08:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.IPAddress:IPv6Any
mov rsi, gword ptr [rsi]
mov rdi, r14
mov edx, r15d
mov rax, 0xD1FFAB1E ; code for System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
call [rax]System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
- jmp SHORT G_M57935_IG09
- ;; size=51 bbWeight=0.50 PerfScore 4.75
-G_M57935_IG08:
+ jmp SHORT G_M57935_IG11
+ ;; size=33 bbWeight=0.50 PerfScore 4.00
+G_M57935_IG09:
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
call CORINFO_HELP_NEWSFAST
mov r14, rax
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdi]
- mov dword ptr [r14+0x10], r15d
- lea rdi, bword ptr [r14+0x08]
- call CORINFO_HELP_ASSIGN_REF
- ;; size=44 bbWeight=0.50 PerfScore 3.12
-G_M57935_IG09:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M57935_IG15
+ ;; size=37 bbWeight=0.50 PerfScore 2.88
+G_M57935_IG10:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rsi, gword ptr [rsi]
+ mov rdi, r14
+ mov edx, r15d
+ mov rax, 0xD1FFAB1E ; code for System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
+ call [rax]System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
+ ;; size=31 bbWeight=0.50 PerfScore 3.00
+G_M57935_IG11:
mov r15d, dword ptr [rbx+0x18]
mov rdi, 0xD1FFAB1E ; System.Net.Sockets.Socket
call CORINFO_HELP_NEWFAST
mov r13, rax
mov rdi, r13
mov esi, r15d
mov edx, 2
mov ecx, 17
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:.ctor(int,int,int):this
call [rax]System.Net.Sockets.Socket:.ctor(int,int,int):this
lea rdi, bword ptr [rbx+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [rbx+0x08]
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:Bind(System.Net.EndPoint):this
cmp dword ptr [rdi], edi
;; size=81 bbWeight=1 PerfScore 15.00
-G_M57935_IG10:
+G_M57935_IG12:
pop rbx
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Net.Sockets.Socket:Bind(System.Net.EndPoint):this
;; size=11 bbWeight=1 PerfScore 4.50
-G_M57935_IG11:
+G_M57935_IG13:
mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov edi, 0x196D
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String):this
call [rax]System.ArgumentOutOfRangeException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=65 bbWeight=0 PerfScore 0.00
-G_M57935_IG12:
+G_M57935_IG14:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_net_protocol_invalid_family():System.String
call [rax]System.SR:get_net_protocol_invalid_family():System.String
mov r15, rax
mov edi, 0x2B06
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String
call [rax]System.SR:Format(System.String,System.Object):System.String
mov r15, rax
mov edi, 0x2A6A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=124 bbWeight=0 PerfScore 0.00
+G_M57935_IG15:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M57935_IG10
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M57935_IG16:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M57935_IG08
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 485, prolog size 13, PerfScore 46.62, instruction count 106, allocated bytes for code 485 (MethodHash=a04c1db0) for method System.Net.Sockets.UdpClient:.ctor(int,int):this (FullOpts)
+; Total bytes of code 582, prolog size 13, PerfScore 51.50, instruction count 121, allocated bytes for code 582 (MethodHash=a04c1db0) for method System.Net.Sockets.UdpClient:.ctor(int,int):this (FullOpts)
; ============================================================
94 (97.92 % of base) - System.Net.IPNetwork:Equals(System.Object):ubyte:this
; Assembly listing for method System.Net.IPNetwork:Equals(System.Object):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 4, 3 ) byref -> rdi this single-def
; V01 arg1 [V01,T00] ( 6, 4.25) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Net.IPNetwork>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Net.IPNetwork>
;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.Net.IPAddress>
-; V09 tmp6 [V09,T04] ( 2, 2 ) ref -> rdi class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V10 tmp7 [V10,T02] ( 5, 2.50) ref -> rdi
+; V09 tmp6 [V09,T04] ( 2, 2 ) ref -> r15 class-hnd single-def "dup spill" <System.Net.IPAddress>
+; V10 tmp7 [V10,T02] ( 4, 2 ) ref -> r15
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V12 tmp9 [V12,T03] ( 5, 2.50) ref -> rsi
+; V12 tmp9 [V12,T03] ( 4, 2 ) ref -> rsi
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref "field V02._baseAddress (fldOffset=0x0)" P-INDEP
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "field V02.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
-; V15 tmp12 [V15,T05] ( 2, 1 ) ref -> rax single-def "field V06._baseAddress (fldOffset=0x0)" P-INDEP
-; V16 tmp13 [V16,T06] ( 2, 1 ) int -> rsi "field V06.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T05] ( 2, 1 ) ref -> rbx single-def "field V06._baseAddress (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T06] ( 2, 1 ) int -> rax "field V06.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M37668_IG01:
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push r15
+ push rbx
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=1 PerfScore 3.50
G_M37668_IG02:
test rsi, rsi
- je SHORT G_M37668_IG06
+ je SHORT G_M37668_IG10
;; size=5 bbWeight=1 PerfScore 1.25
G_M37668_IG03:
mov rax, 0xD1FFAB1E ; System.Net.IPNetwork
cmp qword ptr [rsi], rax
- jne SHORT G_M37668_IG06
+ jne SHORT G_M37668_IG10
;; size=15 bbWeight=0.25 PerfScore 1.06
G_M37668_IG04:
- mov rax, gword ptr [rsi+0x08]
- mov esi, dword ptr [rsi+0x10]
- cmp dword ptr [rdi+0x08], esi
+ mov rbx, gword ptr [rsi+0x08]
+ mov eax, dword ptr [rsi+0x10]
+ cmp dword ptr [rdi+0x08], eax
+ jne SHORT G_M37668_IG10
+ mov r15, gword ptr [rdi]
+ test r15, r15
jne SHORT G_M37668_IG06
- mov rdi, gword ptr [rdi]
- mov rsi, 0xD1FFAB1E ; const ptr
- test rdi, rdi
- cmove rdi, gword ptr [rsi]
- mov rsi, rax
- mov rax, 0xD1FFAB1E ; const ptr
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M37668_IG12
+ ;; size=35 bbWeight=0.50 PerfScore 7.75
+G_M37668_IG05:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov r15, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M37668_IG06:
+ mov rsi, rbx
test rsi, rsi
- cmove rsi, gword ptr [rax]
+ jne SHORT G_M37668_IG08
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M37668_IG13
+ ;; size=23 bbWeight=0.50 PerfScore 2.88
+G_M37668_IG07:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rsi, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M37668_IG08:
+ mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
cmp dword ptr [rdi], edi
- ;; size=64 bbWeight=0.50 PerfScore 10.25
-G_M37668_IG05:
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
+G_M37668_IG09:
+ pop rbx
+ pop r15
pop rbp
tail.jmp [rax]System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M37668_IG06:
+ ;; size=7 bbWeight=0.50 PerfScore 1.75
+G_M37668_IG10:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M37668_IG07:
+G_M37668_IG11:
+ pop rbx
+ pop r15
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M37668_IG12:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M37668_IG05
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M37668_IG13:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M37668_IG07
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 4, PerfScore 15.94, instruction count 26, allocated bytes for code 96 (MethodHash=bd736cdb) for method System.Net.IPNetwork:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 190, prolog size 9, PerfScore 23.56, instruction count 49, allocated bytes for code 190 (MethodHash=bd736cdb) for method System.Net.IPNetwork:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
94 (37.90 % of base) - System.Net.Sockets.UdpClient:ReceiveAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.UdpReceiveResult]:this
; Assembly listing for method System.Net.Sockets.UdpClient:ReceiveAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.UdpReceiveResult]: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,T00] ( 8, 8 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.UdpClient>
; V01 RetBuf [V01,T02] ( 4, 4 ) long -> r15 single-def
;* V02 arg1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
-; V04 tmp1 [V04,T06] ( 2, 4 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.Net.Sockets.Socket>
+; V04 tmp1 [V04,T06] ( 2, 4 ) ref -> r13 class-hnd single-def "impAppendStmt" <System.Net.Sockets.Socket>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Memory`1[ubyte]>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref <System.Memory`1[ubyte]>
;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Memory`1[ubyte]>
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref
; V14 tmp11 [V14,T09] ( 3, 2 ) ref -> r9
-; V15 tmp12 [V15,T08] ( 2, 4 ) struct (32) [rbp-0x38] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]>
-; V16 tmp13 [V16,T01] ( 4, 6 ) ref -> rdx class-hnd single-def "Inlining Arg" <ubyte[]>
-; V17 tmp14 [V17 ] ( 8, 10 ) struct (16) [rbp-0x48] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+; V15 tmp12 [V15,T08] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]>
+; V16 tmp13 [V16,T01] ( 4, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <ubyte[]>
+; V17 tmp14 [V17 ] ( 8, 10 ) struct (16) [rbp-0x50] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
; V18 tmp15 [V18,T07] ( 2, 2 ) ref -> r14 single-def "field V02._source (fldOffset=0x0)" P-INDEP
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._object (fldOffset=0x0)" P-INDEP
;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0xc)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._object (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0xc)" P-INDEP
;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._object (fldOffset=0x0)" P-INDEP
;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
-; V28 tmp25 [V28,T03] ( 4, 5 ) ref -> [rbp-0x48] do-not-enreg[] "field V17._object (fldOffset=0x0)" P-DEP
-; V29 tmp26 [V29,T04] ( 4, 5 ) int -> [rbp-0x40] do-not-enreg[] "field V17._index (fldOffset=0x8)" P-DEP
-; V30 tmp27 [V30,T05] ( 4, 5 ) int -> [rbp-0x3C] do-not-enreg[] "field V17._length (fldOffset=0xc)" P-DEP
+; V28 tmp25 [V28,T03] ( 4, 5 ) ref -> [rbp-0x50] do-not-enreg[] "field V17._object (fldOffset=0x0)" P-DEP
+; V29 tmp26 [V29,T04] ( 4, 5 ) int -> [rbp-0x48] do-not-enreg[] "field V17._index (fldOffset=0x8)" P-DEP
+; V30 tmp27 [V30,T05] ( 4, 5 ) int -> [rbp-0x44] do-not-enreg[] "field V17._length (fldOffset=0xc)" P-DEP
;
-; Lcl frame size = 88
+; Lcl frame size = 80
G_M25660_IG01:
push rbp
push r15
push r14
+ push r13
push rbx
- sub rsp, 88
+ sub rsp, 80
lea rbp, [rsp+0x70]
- xor eax, eax
- mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x40], ymm8
- mov qword ptr [rbp-0x20], rax
+ vmovdqu ymmword ptr [rbp-0x50], ymm8
+ vmovdqa xmmword ptr [rbp-0x30], xmm8
mov rbx, rdi
mov r15, rsi
mov r14, rdx
- ;; size=44 bbWeight=1 PerfScore 10.08
+ ;; size=41 bbWeight=1 PerfScore 10.83
G_M25660_IG02:
movzx rdi, byte ptr [rbx+0x1D]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
call [rax]System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
- mov rdi, gword ptr [rbx+0x08]
- mov rdx, gword ptr [rbx+0x10]
- test rdx, rdx
+ mov r13, gword ptr [rbx+0x08]
+ mov rdi, gword ptr [rbx+0x10]
+ test rdi, rdi
je SHORT G_M25660_IG04
;; size=33 bbWeight=1 PerfScore 10.75
G_M25660_IG03:
- mov gword ptr [rbp-0x48], rdx
- xor ecx, ecx
- mov dword ptr [rbp-0x40], ecx
- mov edx, dword ptr [rdx+0x08]
- mov dword ptr [rbp-0x3C], edx
+ mov gword ptr [rbp-0x50], rdi
+ xor eax, eax
+ mov dword ptr [rbp-0x48], eax
+ mov edi, dword ptr [rdi+0x08]
+ mov dword ptr [rbp-0x44], edi
jmp SHORT G_M25660_IG07
;; size=17 bbWeight=0.50 PerfScore 3.62
G_M25660_IG04:
- xor rdx, rdx
- mov gword ptr [rbp-0x48], rdx
+ xor rdi, rdi
+ mov gword ptr [rbp-0x50], rdi
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M25660_IG05:
- mov dword ptr [rbp-0x40], edx
+ mov dword ptr [rbp-0x48], edi
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M25660_IG06:
- mov dword ptr [rbp-0x3C], edx
+ mov dword ptr [rbp-0x44], edi
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M25660_IG07:
cmp dword ptr [rbx+0x18], 2
- jne SHORT G_M25660_IG09
+ jne SHORT G_M25660_IG10
;; size=6 bbWeight=1 PerfScore 4.00
G_M25660_IG08:
- mov rdx, 0xD1FFAB1E ; const ptr
- mov r9, gword ptr [rdx]
- jmp SHORT G_M25660_IG10
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M25660_IG15
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M25660_IG09:
- mov r9, 0xD1FFAB1E ; const ptr
- mov r9, gword ptr [r9]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:Any
+ mov r9, gword ptr [rdi]
+ jmp SHORT G_M25660_IG12
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M25660_IG10:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M25660_IG14
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M25660_IG11:
+ mov rdx, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:IPv6Any
+ mov r9, gword ptr [rdx]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M25660_IG12:
mov gword ptr [rsp], r14
- mov rdx, gword ptr [rbp-0x48]
- mov rcx, qword ptr [rbp-0x40]
- lea rsi, [rbp-0x38]
+ mov rdx, gword ptr [rbp-0x50]
+ mov rcx, qword ptr [rbp-0x48]
+ lea rsi, [rbp-0x40]
+ mov rdi, r13
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this
lea rdi, [rsp]
- lea rsi, [rbp-0x38]
+ lea rsi, [rbp-0x40]
mov rcx, gword ptr [rsi]
mov gword ptr [rsp], rcx
add rsi, 8
add rdi, 8
movsq
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x10], rcx
add rsi, 8
add rdi, 8
movsq
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.UdpClient:<ReceiveAsync>g__WaitAndWrap|62_0(System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.UdpReceiveResult]:this
call [rax]System.Net.Sockets.UdpClient:<ReceiveAsync>g__WaitAndWrap|62_0(System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.UdpReceiveResult]:this
mov rax, r15
- ;; size=97 bbWeight=1 PerfScore 24.00
-G_M25660_IG11:
- add rsp, 88
+ ;; size=100 bbWeight=1 PerfScore 24.25
+G_M25660_IG13:
+ add rsp, 80
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M25660_IG14:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M25660_IG11
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M25660_IG15:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M25660_IG09
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 248, prolog size 35, PerfScore 60.58, instruction count 70, allocated bytes for code 248 (MethodHash=0f3d9bc3) for method System.Net.Sockets.UdpClient:ReceiveAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.UdpReceiveResult]:this (FullOpts)
+; Total bytes of code 342, prolog size 32, PerfScore 66.33, instruction count 85, allocated bytes for code 342 (MethodHash=0f3d9bc3) for method System.Net.Sockets.UdpClient:ReceiveAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.UdpReceiveResult]:this (FullOpts)
; ============================================================
92 (27.71 % of base) - System.Net.Sockets.UdpClient:Receive(byref):ubyte[]:this
; Assembly listing for method System.Net.Sockets.UdpClient:Receive(byref):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; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 8 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.UdpClient>
; V01 arg1 [V01,T04] ( 3, 3 ) byref -> r15 single-def
; V02 loc0 [V02 ] ( 3, 3 ) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.EndPoint>
; V03 loc1 [V03,T09] ( 4, 2.50) int -> r14
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V06 tmp1 [V06,T11] ( 3, 2 ) ref -> r9
+; V06 tmp1 [V06,T11] ( 3, 2 ) ref -> r14
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.PlatformNotSupportedException>
; V08 tmp3 [V08,T03] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
; V09 tmp4 [V09,T06] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <ubyte[]>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.PlatformNotSupportedException>
; V11 tmp6 [V11,T02] ( 4, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <ubyte[]>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V13 tmp8 [V13,T12] ( 3, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <ubyte[]>
; V14 tmp9 [V14,T08] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewArr temp" <ubyte[]>
;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V17 tmp12 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V20 tmp15 [V20,T13] ( 3, 1.50) byref -> rbx "field V12._reference (fldOffset=0x0)" P-INDEP
; V21 tmp16 [V21,T07] ( 5, 3 ) int -> r14 "field V12._length (fldOffset=0x8)" P-INDEP
; V22 rat0 [V22,T05] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
; V23 rat1 [V23,T01] ( 5, 7.50) ref -> rax "replacement local"
; V24 rat2 [V24,T10] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 8
G_M51813_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov rbx, rdi
mov r15, rsi
;; size=24 bbWeight=1 PerfScore 7.25
G_M51813_IG02:
movzx rdi, byte ptr [rbx+0x1D]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
call [rax]System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
cmp dword ptr [rbx+0x18], 2
- jne SHORT G_M51813_IG04
+ jne SHORT G_M51813_IG05
;; size=26 bbWeight=1 PerfScore 9.50
G_M51813_IG03:
- mov r9, 0xD1FFAB1E ; const ptr
- mov r9, gword ptr [r9]
- jmp SHORT G_M51813_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M51813_IG21
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M51813_IG04:
- mov r9, 0xD1FFAB1E ; const ptr
- mov r9, gword ptr [r9]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:Any
+ mov r14, gword ptr [rdi]
+ jmp SHORT G_M51813_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M51813_IG05:
- mov gword ptr [rbp-0x20], r9
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M51813_IG20
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M51813_IG06:
+ mov r9, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:IPv6Any
+ mov r14, gword ptr [r9]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M51813_IG07:
+ mov gword ptr [rbp-0x20], r14
mov rdi, gword ptr [rbx+0x08]
mov rsi, gword ptr [rbx+0x10]
cmp byte ptr [rdi], dil
lea r9, [rbp-0x20]
xor edx, edx
mov ecx, 0x10000
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:ReceiveFrom(ubyte[],int,int,int,byref):int:this
call [rax]System.Net.Sockets.Socket:ReceiveFrom(ubyte[],int,int,int,byref):int:this
mov r14d, eax
mov rsi, gword ptr [rbp-0x20]
mov rax, rsi
test rax, rax
- je SHORT G_M51813_IG08
+ je SHORT G_M51813_IG10
;; size=56 bbWeight=1 PerfScore 15.25
-G_M51813_IG06:
+G_M51813_IG08:
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
cmp qword ptr [rax], rdi
- je SHORT G_M51813_IG08
+ je SHORT G_M51813_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51813_IG07:
+G_M51813_IG09:
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
;; size=12 bbWeight=0.25 PerfScore 0.81
-G_M51813_IG08:
+G_M51813_IG10:
mov rdi, r15
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov rbx, gword ptr [rbx+0x10]
test rbx, rbx
- je SHORT G_M51813_IG10
+ je SHORT G_M51813_IG12
;; size=20 bbWeight=1 PerfScore 4.75
-G_M51813_IG09:
+G_M51813_IG11:
cmp dword ptr [rbx+0x08], r14d
- jb SHORT G_M51813_IG17
+ jb SHORT G_M51813_IG19
add rbx, 16
- jmp SHORT G_M51813_IG11
+ jmp SHORT G_M51813_IG13
;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M51813_IG10:
+G_M51813_IG12:
test r14d, r14d
- jne SHORT G_M51813_IG17
+ jne SHORT G_M51813_IG19
xor rbx, rbx
xor r14d, r14d
;; size=10 bbWeight=0.50 PerfScore 0.88
-G_M51813_IG11:
+G_M51813_IG13:
test r14d, r14d
- je SHORT G_M51813_IG13
+ je SHORT G_M51813_IG15
;; size=5 bbWeight=1 PerfScore 1.25
-G_M51813_IG12:
+G_M51813_IG14:
mov esi, r14d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov r15, rax
mov edx, r14d
lea rdi, bword ptr [r15+0x10]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- jmp SHORT G_M51813_IG15
+ jmp SHORT G_M51813_IG17
;; size=45 bbWeight=0.50 PerfScore 4.00
-G_M51813_IG13:
+G_M51813_IG15:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M51813_IG18
+ je SHORT G_M51813_IG22
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51813_IG14:
+G_M51813_IG16:
mov rax, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
mov r15, gword ptr [rax]
;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M51813_IG15:
+G_M51813_IG17:
mov rax, r15
;; size=3 bbWeight=1 PerfScore 0.25
-G_M51813_IG16:
+G_M51813_IG18:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M51813_IG17:
+G_M51813_IG19:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M51813_IG18:
+G_M51813_IG20:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M51813_IG06
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M51813_IG21:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M51813_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M51813_IG22:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[ubyte]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M51813_IG14
+ jmp SHORT G_M51813_IG16
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 18, PerfScore 60.69, instruction count 86, allocated bytes for code 332 (MethodHash=8d1b359a) for method System.Net.Sockets.UdpClient:Receive(byref):ubyte[]:this (FullOpts)
+; Total bytes of code 424, prolog size 18, PerfScore 64.94, instruction count 100, allocated bytes for code 424 (MethodHash=8d1b359a) for method System.Net.Sockets.UdpClient:Receive(byref):ubyte[]:this (FullOpts)
; ============================================================
92 (23.59 % of base) - System.Net.Sockets.UdpClient:ReceiveAsync():System.Threading.Tasks.Task`1[System.Net.Sockets.UdpReceiveResult]:this
; Assembly listing for method System.Net.Sockets.UdpClient:ReceiveAsync():System.Threading.Tasks.Task`1[System.Net.Sockets.UdpReceiveResult]: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; 8 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 8, 8 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.UdpClient>
; V01 OutArgs [V01 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
; V02 tmp1 [V02 ] ( 5, 10 ) struct (16) [rbp-0x30] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ArraySegment`1[ubyte]>
; V03 tmp2 [V03,T02] ( 3, 6 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Net.Sockets.Socket>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref <System.ArraySegment`1[ubyte]>
;* V07 tmp6 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref <System.ArraySegment`1[ubyte]>
;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref
; V12 tmp11 [V12,T12] ( 3, 2 ) ref -> r13
; V13 tmp12 [V13,T00] ( 6, 11 ) ref -> r14 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V14 tmp13 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V15 tmp14 [V15 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Memory`1[ubyte]>
; V16 tmp15 [V16 ] ( 5, 3.50) struct (32) [rbp-0x50] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]>
;* V17 tmp16 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ubyte]>
;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ubyte[]>
;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V20 tmp19 [V20 ] ( 5, 10 ) struct (16) [rbp-0x60] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V22 tmp21 [V22,T11] ( 4, 2.50) ref -> rax class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]>
; V23 tmp22 [V23,T10] ( 4, 3 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.Object>
; V24 tmp23 [V24,T14] ( 3, 1.50) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]>
;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[System.Net.Sockets.SocketReceiveFromResult]>
;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]>
;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Net.Sockets.SocketReceiveFromResult>
; V28 tmp27 [V28,T03] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]>
;* V29 tmp28 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V30 tmp29 [V30 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Net.Sockets.SocketReceiveFromResult>
;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V32 tmp31 [V32,T04] ( 3, 5 ) ref -> [rbp-0x30] do-not-enreg[] "field V02._array (fldOffset=0x0)" P-DEP
; V33 tmp32 [V33,T06] ( 3, 5 ) int -> [rbp-0x28] do-not-enreg[] "field V02._offset (fldOffset=0x8)" P-DEP
; V34 tmp33 [V34,T07] ( 3, 5 ) int -> [rbp-0x24] do-not-enreg[] "field V02._count (fldOffset=0xc)" P-DEP
;* V35 tmp34 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._array (fldOffset=0x0)" P-INDEP
;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref "field V06._offset (fldOffset=0x8)" P-INDEP
;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref "field V06._count (fldOffset=0xc)" P-INDEP
;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V39 tmp38 [V39 ] ( 0, 0 ) int -> zero-ref "field V10._offset (fldOffset=0x8)" P-INDEP
;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V10._count (fldOffset=0xc)" P-INDEP
;* V41 tmp40 [V41,T17] ( 0, 0 ) ref -> zero-ref single-def "field V14._source (fldOffset=0x0)" P-INDEP
;* V42 tmp41 [V42 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._object (fldOffset=0x0)" P-INDEP
;* V43 tmp42 [V43 ] ( 0, 0 ) int -> zero-ref "field V15._index (fldOffset=0x8)" P-INDEP
;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0xc)" P-INDEP
;* V45 tmp44 [V45 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._array (fldOffset=0x0)" P-INDEP
;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V17._offset (fldOffset=0x8)" P-INDEP
;* V47 tmp46 [V47 ] ( 0, 0 ) int -> zero-ref "field V17._count (fldOffset=0xc)" P-INDEP
; V48 tmp47 [V48,T05] ( 3, 5 ) ref -> [rbp-0x60] do-not-enreg[] "field V20._object (fldOffset=0x0)" P-DEP
; V49 tmp48 [V49,T08] ( 3, 5 ) int -> [rbp-0x58] do-not-enreg[] "field V20._index (fldOffset=0x8)" P-DEP
; V50 tmp49 [V50,T09] ( 3, 5 ) int -> [rbp-0x54] do-not-enreg[] "field V20._length (fldOffset=0xc)" P-DEP
; V51 tmp50 [V51,T15] ( 2, 1 ) ref -> r15 single-def "field V27.RemoteEndPoint (fldOffset=0x0)" P-INDEP
; V52 tmp51 [V52,T16] ( 2, 1 ) int -> r14 "field V27.ReceivedBytes (fldOffset=0x8)" P-INDEP
;* V53 tmp52 [V53 ] ( 0, 0 ) ref -> zero-ref "field V29._source (fldOffset=0x0)" P-INDEP
;* V54 tmp53 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V30.RemoteEndPoint (fldOffset=0x0)" P-INDEP
;* V55 tmp54 [V55 ] ( 0, 0 ) int -> zero-ref "field V30.ReceivedBytes (fldOffset=0x8)" P-INDEP
; V56 cse0 [V56,T13] ( 2, 2 ) int -> rdi "CSE #01: aggressive"
;
; Lcl frame size = 80
G_M60784_IG01:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 80
lea rbp, [rsp+0x70]
vxorps xmm8, xmm8, xmm8
vmovdqu32 zmmword ptr [rbp-0x60], zmm8
mov rbx, rdi
;; size=35 bbWeight=1 PerfScore 8.33
G_M60784_IG02:
movzx rdi, byte ptr [rbx+0x1D]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
call [rax]System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
mov r15, gword ptr [rbx+0x08]
mov r14, gword ptr [rbx+0x10]
test r14, r14
- je G_M60784_IG12
+ je G_M60784_IG14
mov edi, dword ptr [r14+0x08]
cmp edi, 0x10000
- jl G_M60784_IG12
+ jl G_M60784_IG14
mov gword ptr [rbp-0x30], r14
xor edi, edi
mov dword ptr [rbp-0x28], edi
mov dword ptr [rbp-0x24], 0x10000
cmp dword ptr [rbx+0x18], 2
- jne SHORT G_M60784_IG04
+ jne SHORT G_M60784_IG05
;; size=75 bbWeight=1 PerfScore 21.25
G_M60784_IG03:
- mov rdi, 0xD1FFAB1E ; const ptr
- mov r13, gword ptr [rdi]
- jmp SHORT G_M60784_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M60784_IG16
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M60784_IG04:
- mov rdi, 0xD1FFAB1E ; const ptr
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:Any
+ mov r13, gword ptr [rdi]
+ jmp SHORT G_M60784_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M60784_IG05:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M60784_IG15
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M60784_IG06:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:IPv6Any
mov r13, gword ptr [rdi]
;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M60784_IG05:
+G_M60784_IG07:
cmp byte ptr [r15], r15b
mov rdi, gword ptr [rbp-0x30]
mov rsi, qword ptr [rbp-0x28]
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:ValidateBuffer(System.ArraySegment`1[ubyte])
call [rax]System.Net.Sockets.Socket:ValidateBuffer(System.ArraySegment`1[ubyte])
mov gword ptr [rbp-0x60], r14
xor edx, edx
mov dword ptr [rbp-0x58], edx
mov dword ptr [rbp-0x54], 0x10000
;; size=39 bbWeight=1 PerfScore 11.50
-G_M60784_IG06:
+G_M60784_IG08:
mov gword ptr [rsp], rdx
mov rdx, gword ptr [rbp-0x60]
mov rcx, qword ptr [rbp-0x58]
lea rsi, [rbp-0x50]
mov rdi, r15
mov r9, r13
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this
call [rax]System.Net.Sockets.Socket:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this
mov r14, gword ptr [rbp-0x50]
test r14, r14
- je SHORT G_M60784_IG09
+ je SHORT G_M60784_IG11
;; size=46 bbWeight=1 PerfScore 9.75
-G_M60784_IG07:
+G_M60784_IG09:
mov rsi, r14
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov rsi, rax
test rsi, rsi
- jne SHORT G_M60784_IG08
+ jne SHORT G_M60784_IG10
lea rdi, [rbp-0x50]
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:GetTaskForValueTaskSource(System.Threading.Tasks.Sources.IValueTaskSource`1[System.Net.Sockets.SocketReceiveFromResult]):System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]:this
call [rax]System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:GetTaskForValueTaskSource(System.Threading.Tasks.Sources.IValueTaskSource`1[System.Net.Sockets.SocketReceiveFromResult]):System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]:this
- jmp SHORT G_M60784_IG10
+ jmp SHORT G_M60784_IG12
;; size=54 bbWeight=0.50 PerfScore 5.62
-G_M60784_IG08:
+G_M60784_IG10:
mov rax, rsi
- jmp SHORT G_M60784_IG10
+ jmp SHORT G_M60784_IG12
;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M60784_IG09:
+G_M60784_IG11:
mov r15, gword ptr [rbp-0x40]
mov r14d, dword ptr [rbp-0x38]
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov dword ptr [r13+0x34], 0xD1FFAB1E
lea rdi, bword ptr [r13+0x38]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r13+0x40], r14d
mov rax, r13
;; size=53 bbWeight=0.50 PerfScore 3.75
-G_M60784_IG10:
+G_M60784_IG12:
mov rdi, rbx
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.UdpClient:<ReceiveAsync>g__WaitAndWrap|61_0(System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]):System.Threading.Tasks.Task`1[System.Net.Sockets.UdpReceiveResult]:this
call [rax]System.Net.Sockets.UdpClient:<ReceiveAsync>g__WaitAndWrap|61_0(System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveFromResult]):System.Threading.Tasks.Task`1[System.Net.Sockets.UdpReceiveResult]:this
nop
;; size=19 bbWeight=1 PerfScore 4.00
-G_M60784_IG11:
+G_M60784_IG13:
add rsp, 80
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M60784_IG12:
+G_M60784_IG14:
mov rdi, r14
xor esi, esi
mov edx, 0x10000
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)
call [rax]System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)
int3
;; size=23 bbWeight=0.50 PerfScore 2.12
+G_M60784_IG15:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M60784_IG06
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M60784_IG16:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M60784_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 390, prolog size 32, PerfScore 74.46, instruction count 96, allocated bytes for code 390 (MethodHash=518d128f) for method System.Net.Sockets.UdpClient:ReceiveAsync():System.Threading.Tasks.Task`1[System.Net.Sockets.UdpReceiveResult]:this (FullOpts)
+; Total bytes of code 482, prolog size 32, PerfScore 78.71, instruction count 110, allocated bytes for code 482 (MethodHash=518d128f) for method System.Net.Sockets.UdpClient:ReceiveAsync():System.Threading.Tasks.Task`1[System.Net.Sockets.UdpReceiveResult]:this (FullOpts)
; ============================================================
91 (108.33 % of base) - System.Net.IPNetwork:op_Inequality(System.Net.IPNetwork,System.Net.IPNetwork):ubyte
; Assembly listing for method System.Net.IPNetwork:op_Inequality(System.Net.IPNetwork,System.Net.IPNetwork):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; 3 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Net.IPNetwork>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Net.IPNetwork>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Net.IPNetwork>
-; V04 tmp2 [V04,T06] ( 3, 2 ) ubyte -> rbx "Inline return value spill temp"
+; V04 tmp2 [V04,T06] ( 3, 2 ) ubyte -> r15 "Inline return value spill temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Net.IPNetwork>
;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.Net.IPAddress>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V09 tmp7 [V09,T04] ( 5, 2.50) ref -> rdi
+; V09 tmp7 [V09,T04] ( 4, 2 ) ref -> r15
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V11 tmp9 [V11,T05] ( 5, 2.50) ref -> rsi
+; V11 tmp9 [V11,T05] ( 4, 2 ) ref -> rsi
; V12 tmp10 [V12,T02] ( 2, 1.50) ref -> rdi single-def "field V00._baseAddress (fldOffset=0x0)" P-INDEP
; V13 tmp11 [V13,T00] ( 2, 2 ) int -> rsi single-def "field V00.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
-; V14 tmp12 [V14,T03] ( 2, 1.50) ref -> rdx single-def "field V01._baseAddress (fldOffset=0x0)" P-INDEP
+; V14 tmp12 [V14,T03] ( 2, 1.50) ref -> rbx single-def "field V01._baseAddress (fldOffset=0x0)" P-INDEP
; V15 tmp13 [V15,T01] ( 2, 2 ) int -> rcx single-def "field V01.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._baseAddress (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V03.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._baseAddress (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref "field V05.<PrefixLength>k__BackingField (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22682_IG01:
push rbp
+ push r15
push rbx
- push rax
lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbx, rdx
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M22682_IG02:
cmp esi, ecx
je SHORT G_M22682_IG04
;; size=4 bbWeight=1 PerfScore 1.25
G_M22682_IG03:
- xor ebx, ebx
- jmp SHORT G_M22682_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
+ xor r15d, r15d
+ jmp SHORT G_M22682_IG09
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
G_M22682_IG04:
- mov rsi, 0xD1FFAB1E ; const ptr
- test rdi, rdi
- cmove rdi, gword ptr [rsi]
- mov rsi, rdx
- mov rax, 0xD1FFAB1E ; const ptr
+ mov r15, rdi
+ test r15, r15
+ jne SHORT G_M22682_IG06
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M22682_IG11
+ ;; size=23 bbWeight=0.50 PerfScore 2.88
+G_M22682_IG05:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov r15, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M22682_IG06:
+ mov rsi, rbx
test rsi, rsi
- cmove rsi, gword ptr [rax]
+ jne SHORT G_M22682_IG08
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M22682_IG12
+ ;; size=23 bbWeight=0.50 PerfScore 2.88
+G_M22682_IG07:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rsi, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M22682_IG08:
+ mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
- mov ebx, eax
- ;; size=53 bbWeight=0.50 PerfScore 6.88
-G_M22682_IG05:
- test ebx, ebx
+ mov r15d, eax
+ ;; size=20 bbWeight=0.50 PerfScore 3.38
+G_M22682_IG09:
+ test r15d, r15d
sete al
movzx rax, al
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22682_IG06:
- add rsp, 8
+ ;; size=9 bbWeight=1 PerfScore 1.50
+G_M22682_IG10:
pop rbx
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=5 bbWeight=1 PerfScore 2.50
+G_M22682_IG11:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M22682_IG05
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M22682_IG12:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M22682_IG07
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 16.50, instruction count 26, allocated bytes for code 84 (MethodHash=500ea765) for method System.Net.IPNetwork:op_Inequality(System.Net.IPNetwork,System.Net.IPNetwork):ubyte (FullOpts)
+; Total bytes of code 175, prolog size 9, PerfScore 21.50, instruction count 45, allocated bytes for code 175 (MethodHash=500ea765) for method System.Net.IPNetwork:op_Inequality(System.Net.IPNetwork,System.Net.IPNetwork):ubyte (FullOpts)
; ============================================================
90 (48.91 % of base) - System.Net.IPAddress:IsLoopback(System.Net.IPAddress):ubyte
; Assembly listing for method System.Net.IPAddress:IsLoopback(System.Net.IPAddress):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; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 7, 5.50) ref -> rbx class-hnd single-def <System.Net.IPAddress>
;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.IPAddress+ReadOnlyIPAddress>
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.IPAddress>
+; V06 tmp4 [V06,T01] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V07 tmp5 [V07,T02] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+;* V08 cse0 [V08,T04] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: aggressive"
+; V09 rat0 [V09,T03] ( 2, 2 ) long -> rbx "Spilling to split statement for tree"
;
; Lcl frame size = 8
G_M63817_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=1 PerfScore 3.75
G_M63817_IG02:
test rbx, rbx
- je G_M63817_IG09
+ je G_M63817_IG11
cmp gword ptr [rbx+0x08], 0
- jne SHORT G_M63817_IG05
+ jne SHORT G_M63817_IG06
;; size=16 bbWeight=1 PerfScore 5.25
G_M63817_IG03:
- mov eax, dword ptr [rbx+0x18]
+ mov edi, dword ptr [rbx+0x18]
+ movzx rdi, dil
+ mov ebx, edi
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M63817_IG13
+ ;; size=28 bbWeight=0.50 PerfScore 3.38
+G_M63817_IG04:
+ mov rax, 0xD1FFAB1E ; data for System.Net.IPAddress:Loopback
+ mov rax, gword ptr [rax]
+ mov eax, dword ptr [rax+0x18]
movzx rax, al
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rsi]
- mov esi, dword ptr [rsi+0x18]
- movzx rsi, sil
- cmp rax, rsi
+ cmp rbx, rax
sete al
movzx rax, al
- ;; size=35 bbWeight=0.50 PerfScore 4.12
-G_M63817_IG04:
+ ;; size=28 bbWeight=0.50 PerfScore 3.00
+G_M63817_IG05:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M63817_IG05:
- mov rsi, 0xD1FFAB1E ; const ptr
+G_M63817_IG06:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M63817_IG12
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M63817_IG07:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.IPAddress:IPv6Loopback
mov rsi, gword ptr [rsi]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
call [rax]System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
test eax, eax
- je SHORT G_M63817_IG07
+ je SHORT G_M63817_IG09
mov eax, 1
;; size=37 bbWeight=0.50 PerfScore 3.62
-G_M63817_IG06:
+G_M63817_IG08:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M63817_IG07:
- mov rsi, 0xD1FFAB1E ; const ptr
+G_M63817_IG09:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.IPAddress:s_loopbackMappedToIPv6
mov rsi, gword ptr [rsi]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
;; size=26 bbWeight=0.50 PerfScore 1.38
-G_M63817_IG08:
+G_M63817_IG10:
add rsp, 8
pop rbx
pop rbp
tail.jmp [rax]System.Net.IPAddress:Equals(System.Net.IPAddress):ubyte:this
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M63817_IG09:
+G_M63817_IG11:
mov edi, 0xC23
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
+G_M63817_IG12:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M63817_IG07
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M63817_IG13:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M63817_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 24.62, instruction count 49, allocated bytes for code 184 (MethodHash=369f06b6) for method System.Net.IPAddress:IsLoopback(System.Net.IPAddress):ubyte (FullOpts)
+; Total bytes of code 274, prolog size 8, PerfScore 29.00, instruction count 64, allocated bytes for code 274 (MethodHash=369f06b6) for method System.Net.IPAddress:IsLoopback(System.Net.IPAddress):ubyte (FullOpts)
; ============================================================
89 (61.38 % of base) - System.Net.Sockets.UdpClient:BeginReceive(System.AsyncCallback,System.Object):System.IAsyncResult:this
; Assembly listing for method System.Net.Sockets.UdpClient:BeginReceive(System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 7, 7 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.UdpClient>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r15 class-hnd single-def <System.AsyncCallback>
; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Object>
-; V03 loc0 [V03 ] ( 2, 2 ) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.EndPoint>
+; V03 loc0 [V03 ] ( 2, 2 ) ref -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.EndPoint>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
-; V05 tmp1 [V05,T03] ( 3, 2 ) ref -> rdi
+; V05 tmp1 [V05,T03] ( 3, 2 ) ref -> r13
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.PlatformNotSupportedException>
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M28170_IG01:
push rbp
push r15
push r14
+ push r13
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x30]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x20], rax
+ mov qword ptr [rbp-0x28], rax
mov rbx, rdi
mov r15, rsi
mov r14, rdx
- ;; size=30 bbWeight=1 PerfScore 6.75
+ ;; size=32 bbWeight=1 PerfScore 7.75
G_M28170_IG02:
movzx rdi, byte ptr [rbx+0x1D]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
call [rax]System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
cmp dword ptr [rbx+0x18], 2
- jne SHORT G_M28170_IG04
+ jne SHORT G_M28170_IG05
;; size=26 bbWeight=1 PerfScore 9.50
G_M28170_IG03:
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- jmp SHORT G_M28170_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M28170_IG10
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M28170_IG04:
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:Any
+ mov r13, gword ptr [rdi]
+ jmp SHORT G_M28170_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M28170_IG05:
- mov gword ptr [rbp-0x20], rdi
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M28170_IG09
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M28170_IG06:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPEndPointStatics:IPv6Any
+ mov r13, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M28170_IG07:
+ mov gword ptr [rbp-0x28], r13
mov gword ptr [rsp], r15
mov gword ptr [rsp+0x08], r14
mov rdi, gword ptr [rbx+0x08]
mov rsi, gword ptr [rbx+0x10]
- lea r9, [rbp-0x20]
+ lea r9, [rbp-0x28]
xor edx, edx
mov ecx, 0x10000
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:BeginReceiveFrom(ubyte[],int,int,int,byref,System.AsyncCallback,System.Object):System.IAsyncResult:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:BeginReceiveFrom(ubyte[],int,int,int,byref,System.AsyncCallback,System.Object):System.IAsyncResult:this
nop
;; size=50 bbWeight=1 PerfScore 14.75
-G_M28170_IG06:
- add rsp, 24
+G_M28170_IG08:
+ add rsp, 32
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M28170_IG09:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M28170_IG06
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M28170_IG10:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPEndPointStatics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M28170_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 145, prolog size 21, PerfScore 37.50, instruction count 41, allocated bytes for code 145 (MethodHash=33d191f5) for method System.Net.Sockets.UdpClient:BeginReceive(System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts)
+; Total bytes of code 234, prolog size 23, PerfScore 43.25, instruction count 57, allocated bytes for code 234 (MethodHash=33d191f5) for method System.Net.Sockets.UdpClient:BeginReceive(System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts)
; ============================================================
83 (48.54 % of base) - System.Net.Sockets.Socket:IsWildcardEndPoint(System.Net.EndPoint):ubyte
; Assembly listing for method System.Net.Sockets.Socket:IsWildcardEndPoint(System.Net.EndPoint):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; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rdi class-hnd single-def <System.Net.EndPoint>
-; V01 loc0 [V01,T02] ( 3, 1.50) ref -> rax class-hnd single-def <System.Net.IPEndPoint>
-; V02 loc1 [V02,T01] ( 4, 2 ) ref -> rbx class-hnd single-def <System.Net.IPAddress>
+; V01 loc0 [V01,T05] ( 3, 1.50) ref -> rax class-hnd single-def <System.Net.IPEndPoint>
+; V02 loc1 [V02,T04] ( 4, 2 ) ref -> rbx class-hnd single-def <System.Net.IPAddress>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
+; V04 tmp1 [V04,T01] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V06 tmp3 [V06,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+;* V07 cse0 [V07,T06] ( 0, 0 ) byref -> zero-ref "CSE #02: moderate"
;
; Lcl frame size = 8
G_M31841_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
;; size=8 bbWeight=1 PerfScore 3.50
G_M31841_IG02:
test rdi, rdi
- je G_M31841_IG08
+ je G_M31841_IG10
;; size=9 bbWeight=1 PerfScore 1.25
G_M31841_IG03:
mov rsi, rdi
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
- je SHORT G_M31841_IG08
+ je G_M31841_IG10
mov rbx, gword ptr [rax+0x08]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- mov rsi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Object):ubyte:this
- call [rax]System.Net.IPAddress:Equals(System.Object):ubyte:this
- test eax, eax
- jne SHORT G_M31841_IG04
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- mov rsi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Object):ubyte:this
- call [rax]System.Net.IPAddress:Equals(System.Object):ubyte:this
- test eax, eax
- je SHORT G_M31841_IG06
- ;; size=98 bbWeight=0.50 PerfScore 10.50
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M31841_IG12
+ ;; size=57 bbWeight=0.50 PerfScore 5.62
G_M31841_IG04:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rdi, gword ptr [rdi]
+ mov rsi, rbx
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x40]
+ call [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+ test eax, eax
+ jne SHORT G_M31841_IG05
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:IPv6Any
+ mov rdi, gword ptr [rdi]
+ mov rsi, rbx
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x40]
+ call [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+ test eax, eax
+ je SHORT G_M31841_IG07
+ ;; size=60 bbWeight=0.50 PerfScore 10.75
+G_M31841_IG05:
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M31841_IG05:
+G_M31841_IG06:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M31841_IG06:
- mov rdi, 0xD1FFAB1E ; const ptr
+G_M31841_IG07:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M31841_IG13
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M31841_IG08:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.Sockets.Socket:s_IPAddressAnyMapToIPv6
mov rdi, gword ptr [rdi]
mov rsi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:Equals(System.Object):ubyte:this
- ;; size=26 bbWeight=0.50 PerfScore 1.38
-G_M31841_IG07:
- add rsp, 8
- pop rbx
- pop rbp
- tail.jmp [rax]System.Net.IPAddress:Equals(System.Object):ubyte:this
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M31841_IG08:
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x40]
+ ;; size=23 bbWeight=0.50 PerfScore 3.25
G_M31841_IG09:
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
+G_M31841_IG10:
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M31841_IG11:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M31841_IG12:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M31841_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M31841_IG13:
+ mov rdi, 0xD1FFAB1E ; System.Net.Sockets.Socket
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M31841_IG08
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 171, prolog size 8, PerfScore 20.75, instruction count 45, allocated bytes for code 171 (MethodHash=59b9839e) for method System.Net.Sockets.Socket:IsWildcardEndPoint(System.Net.EndPoint):ubyte (FullOpts)
+; Total bytes of code 254, prolog size 8, PerfScore 30.62, instruction count 62, allocated bytes for code 254 (MethodHash=59b9839e) for method System.Net.Sockets.Socket:IsWildcardEndPoint(System.Net.EndPoint):ubyte (FullOpts)
; ============================================================
59 (147.50 % of base) - System.Net.Sockets.UdpClient:IsBroadcast(System.Net.IPAddress):ubyte
; Assembly listing for method System.Net.Sockets.UdpClient:IsBroadcast(System.Net.IPAddress):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; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rdi class-hnd single-def <System.Net.IPAddress>
+; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Net.IPAddress>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V02 tmp1 [V02 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V03 tmp2 [V03,T01] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M34926_IG01:
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ mov rbx, rdi
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M34926_IG02:
- cmp gword ptr [rdi+0x08], 0
- jne SHORT G_M34926_IG05
+ cmp gword ptr [rbx+0x08], 0
+ jne SHORT G_M34926_IG06
;; size=7 bbWeight=1 PerfScore 4.00
G_M34926_IG03:
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rsi]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- ;; size=20 bbWeight=0.50 PerfScore 3.12
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M34926_IG08
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M34926_IG04:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.IPAddress:Broadcast
+ mov rsi, gword ptr [rsi]
+ mov rdi, rbx
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x40]
+ ;; size=23 bbWeight=0.50 PerfScore 3.25
+G_M34926_IG05:
+ add rsp, 8
+ pop rbx
pop rbp
tail.jmp [rax+0x10]System.Object:Equals(System.Object):ubyte:this
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M34926_IG05:
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
+G_M34926_IG06:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M34926_IG06:
+G_M34926_IG07:
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M34926_IG08:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M34926_IG04
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 40, prolog size 4, PerfScore 10.50, instruction count 13, allocated bytes for code 40 (MethodHash=fd1f7791) for method System.Net.Sockets.UdpClient:IsBroadcast(System.Net.IPAddress):ubyte (FullOpts)
+; Total bytes of code 99, prolog size 11, PerfScore 16.00, instruction count 28, allocated bytes for code 99 (MethodHash=fd1f7791) for method System.Net.Sockets.UdpClient:IsBroadcast(System.Net.IPAddress):ubyte (FullOpts)
; ============================================================
57 (123.91 % of base) - System.Net.IPNetwork:GetHashCode():int:this
; Assembly listing for method System.Net.IPNetwork:GetHashCode():int:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
+; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) byref -> rdi this single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> rbx this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Net.IPAddress>
-; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V04 tmp3 [V04,T01] ( 5, 5 ) ref -> rsi
+; V03 tmp2 [V03,T01] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Net.IPAddress>
+; V04 tmp3 [V04,T02] ( 4, 3.50) ref -> rsi
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M42656_IG01:
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbp
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ mov rbx, rdi
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M42656_IG02:
- mov rsi, gword ptr [rdi]
- mov rdx, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rbx]
test rsi, rsi
- cmove rsi, gword ptr [rdx]
- mov edx, dword ptr [rdi+0x08]
+ jne SHORT G_M42656_IG05
+ ;; size=8 bbWeight=1 PerfScore 3.25
+G_M42656_IG03:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M42656_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M42656_IG04:
+ mov rdx, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rsi, gword ptr [rdx]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M42656_IG05:
+ mov edx, dword ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; System.HashCode:Combine[System.Net.IPAddress,int](System.Net.IPAddress,int):int
mov rax, 0xD1FFAB1E ; code for System.HashCode:Combine[System.__Canon,int](System.__Canon,int):int
- ;; size=43 bbWeight=1 PerfScore 8.00
-G_M42656_IG03:
+ ;; size=23 bbWeight=1 PerfScore 2.50
+G_M42656_IG06:
+ add rsp, 8
+ pop rbx
+ pop rbp
tail.jmp [rax]System.HashCode:Combine[System.__Canon,int](System.__Canon,int):int
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M42656_IG07:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M42656_IG04
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 46, prolog size 0, PerfScore 10.00, instruction count 8, allocated bytes for code 46 (MethodHash=5ab2595f) for method System.Net.IPNetwork:GetHashCode():int:this (FullOpts)
+; Total bytes of code 103, prolog size 11, PerfScore 16.00, instruction count 24, allocated bytes for code 103 (MethodHash=5ab2595f) for method System.Net.IPNetwork:GetHashCode():int:this (FullOpts)
; ============================================================
54 (16.62 % of base) - System.Net.Sockets.Socket:SetReceivingPacketInformation():this
; Assembly listing for method System.Net.Sockets.Socket:SetReceivingPacketInformation():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 11, 7 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.Socket>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Net.IPAddress>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
; V03 tmp1 [V03,T02] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <System.Net.IPEndPoint>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
; V05 tmp3 [V05,T01] ( 8, 4 ) ref -> r15
+; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
;
; Lcl frame size = 0
G_M62002_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=12 bbWeight=1 PerfScore 3.75
G_M62002_IG02:
cmp byte ptr [rbx+0x66], 0
- jne G_M62002_IG12
+ jne G_M62002_IG13
;; size=10 bbWeight=1 PerfScore 4.00
G_M62002_IG03:
mov rsi, gword ptr [rbx+0x10]
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M62002_IG04
mov r15, gword ptr [rax+0x08]
jmp SHORT G_M62002_IG05
;; size=37 bbWeight=0.50 PerfScore 5.38
G_M62002_IG04:
xor r15, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M62002_IG05:
cmp dword ptr [rbx+0x50], 2
jne SHORT G_M62002_IG06
mov rdi, rbx
xor esi, esi
mov edx, 19
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:SetSocketOption(int,int,int):this
call [rax]System.Net.Sockets.Socket:SetSocketOption(int,int,int):this
;; size=33 bbWeight=0.50 PerfScore 4.12
G_M62002_IG06:
test r15, r15
- je G_M62002_IG09
+ je G_M62002_IG10
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:get_IsDualMode():ubyte:this
call [rax]System.Net.Sockets.Socket:get_IsDualMode():ubyte:this
test eax, eax
- je SHORT G_M62002_IG09
+ je G_M62002_IG10
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
call [rax]System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
test eax, eax
- jne SHORT G_M62002_IG07
- mov rsi, 0xD1FFAB1E ; const ptr
+ jne SHORT G_M62002_IG08
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M62002_IG14
+ ;; size=70 bbWeight=0.50 PerfScore 7.50
+G_M62002_IG07:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.IPAddress:IPv6Any
mov rsi, gword ptr [rsi]
mov rdi, r15
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x40]
call [rax+0x10]System.Object:Equals(System.Object):ubyte:this
test eax, eax
- je SHORT G_M62002_IG09
- ;; size=77 bbWeight=0.50 PerfScore 10.75
-G_M62002_IG07:
+ je SHORT G_M62002_IG10
+ ;; size=30 bbWeight=0.50 PerfScore 5.38
+G_M62002_IG08:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M62002_IG13
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M62002_IG08:
+ je G_M62002_IG15
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M62002_IG09:
mov rdi, 0xD1FFAB1E ; data for System.Net.Sockets.SocketPal:SupportsDualModeIPv4PacketInfo
cmp byte ptr [rdi], 0
- je SHORT G_M62002_IG09
+ je SHORT G_M62002_IG10
mov rdi, rbx
xor esi, esi
mov edx, 19
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:SetSocketOption(int,int,int):this
call [rax]System.Net.Sockets.Socket:SetSocketOption(int,int,int):this
;; size=42 bbWeight=0.50 PerfScore 4.25
-G_M62002_IG09:
+G_M62002_IG10:
cmp dword ptr [rbx+0x50], 23
- jne SHORT G_M62002_IG11
+ jne SHORT G_M62002_IG12
test r15, r15
- je SHORT G_M62002_IG10
+ je SHORT G_M62002_IG11
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
call [rax]System.Net.IPAddress:get_IsIPv4MappedToIPv6():ubyte:this
test eax, eax
- jne SHORT G_M62002_IG11
+ jne SHORT G_M62002_IG12
;; size=30 bbWeight=0.50 PerfScore 5.00
-G_M62002_IG10:
+G_M62002_IG11:
mov rdi, rbx
mov esi, 41
mov edx, 19
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:SetSocketOption(int,int,int):this
call [rax]System.Net.Sockets.Socket:SetSocketOption(int,int,int):this
;; size=30 bbWeight=0.50 PerfScore 2.12
-G_M62002_IG11:
+G_M62002_IG12:
mov byte ptr [rbx+0x66], 1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M62002_IG12:
+G_M62002_IG13:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=1 PerfScore 2.50
-G_M62002_IG13:
+G_M62002_IG14:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M62002_IG07
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M62002_IG15:
mov rdi, 0xD1FFAB1E ; System.Net.Sockets.SocketPal
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_NONGCSTATIC_BASE
call [rax]CORINFO_HELP_GET_NONGCSTATIC_BASE
- jmp G_M62002_IG08
+ jmp G_M62002_IG09
;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 325, prolog size 9, PerfScore 44.62, instruction count 80, allocated bytes for code 325 (MethodHash=5fed0dcd) for method System.Net.Sockets.Socket:SetReceivingPacketInformation():this (FullOpts)
+; Total bytes of code 379, prolog size 9, PerfScore 46.75, instruction count 87, allocated bytes for code 379 (MethodHash=5fed0dcd) for method System.Net.Sockets.Socket:SetReceivingPacketInformation():this (FullOpts)
; ============================================================
51 (20.73 % of base) - System.Net.IPNetwork:TryFormat(System.Span`1[ubyte],byref):ubyte:this
; Assembly listing for method System.Net.IPNetwork:TryFormat(System.Span`1[ubyte],byref):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; 7 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 3 ) byref -> rbx this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
; V02 arg2 [V02,T01] ( 4, 3 ) byref -> r15 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
; V04 loc1 [V04,T11] ( 2, 2 ) ref -> rdi class-hnd exact single-def <System.Globalization.CultureInfo>
; V05 loc2 [V05 ] ( 16, 11.50) struct (32) [rbp-0x30] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler>
; V06 loc3 [V06,T13] ( 2, 2 ) ubyte -> rcx ld-addr-op
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref
;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V15 tmp8 [V15,T06] ( 2, 4 ) int -> rax "dup spill"
; V16 tmp9 [V16,T07] ( 3, 3 ) ubyte -> rax "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref
;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Object>
; V22 tmp15 [V22,T12] ( 2, 2 ) ref -> rdx class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V23 tmp16 [V23,T09] ( 5, 2.50) ref -> rdx
+; V23 tmp16 [V23,T09] ( 4, 2 ) ref -> rdx
;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp18 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
;* V26 tmp19 [V26,T17] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
; V27 tmp20 [V27,T15] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
; V28 tmp21 [V28,T03] ( 4, 4 ) int -> rsi "Inlining Arg"
;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V30 tmp23 [V30,T08] ( 2, 3 ) byref -> rax single-def "Inlining Arg"
; V31 tmp24 [V31,T14] ( 2, 2 ) int -> rdi "Inlining Arg"
;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V33 tmp26 [V33,T10] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
; V34 tmp27 [V34,T05] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V35 tmp28 [V35,T02] ( 3, 3 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V36 tmp29 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp30 [V37 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V40 tmp33 [V40 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp34 [V41 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V42 tmp35 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp38 [V45 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V50 tmp43 [V50 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[000..008)"
;* V51 tmp44 [V51 ] ( 0, 0 ) int -> zero-ref "V08.[008..012)"
;* V52 tmp45 [V52 ] ( 0, 0 ) ubyte -> zero-ref "V08.[012..013)"
;* V53 tmp46 [V53 ] ( 0, 0 ) ubyte -> zero-ref "V08.[013..014)"
;* V54 tmp47 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "V08.[016..024)"
;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "V08.[024..028)"
; V56 cse0 [V56,T16] ( 3, 1.50) int -> rdi "CSE #01: moderate"
; V57 rat0 [V57,T04] ( 3, 4 ) int -> rsi "replacement local"
;
; Lcl frame size = 32
G_M2960_IG01:
push rbp
push r15
push rbx
sub rsp, 32
lea rbp, [rsp+0x30]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x30], ymm8
mov rbx, rdi
mov r15, rcx
;; size=29 bbWeight=1 PerfScore 6.58
G_M2960_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
test edx, edx
setg al
movzx rax, al
mov ecx, eax
mov gword ptr [rbp-0x30], rdi
xor edi, edi
mov dword ptr [rbp-0x28], edi
mov byte ptr [rbp-0x24], al
mov byte ptr [rbp-0x23], 0
mov bword ptr [rbp-0x20], rsi
mov dword ptr [rbp-0x18], edx
test ecx, ecx
- je SHORT G_M2960_IG07
- ;; size=50 bbWeight=1 PerfScore 11.50
+ je G_M2960_IG09
+ ;; size=54 bbWeight=1 PerfScore 11.50
G_M2960_IG03:
mov rdx, gword ptr [rbx]
- mov rdi, 0xD1FFAB1E ; const ptr
test rdx, rdx
- cmove rdx, gword ptr [rdi]
+ jne SHORT G_M2960_IG05
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M2960_IG15
+ ;; size=27 bbWeight=0.50 PerfScore 3.75
+G_M2960_IG04:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rdx, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M2960_IG05:
lea rdi, [rbp-0x30]
mov rsi, 0xD1FFAB1E ; System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[System.Net.IPAddress](System.Net.IPAddress):ubyte:this
mov rax, 0xD1FFAB1E ; code for System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon):ubyte:this
call [rax]System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon):ubyte:this
test eax, eax
- je SHORT G_M2960_IG07
+ je SHORT G_M2960_IG09
mov esi, dword ptr [rbp-0x28]
mov edi, dword ptr [rbp-0x18]
cmp esi, edi
- ja SHORT G_M2960_IG12
+ ja SHORT G_M2960_IG14
mov eax, esi
add rax, bword ptr [rbp-0x20]
sub edi, esi
mov esi, -1
cmp edi, 1
- jl SHORT G_M2960_IG05
- ;; size=78 bbWeight=0.50 PerfScore 9.00
-G_M2960_IG04:
+ jl SHORT G_M2960_IG07
+ ;; size=58 bbWeight=0.50 PerfScore 6.25
+G_M2960_IG06:
mov byte ptr [rax], 47
mov esi, 1
;; size=8 bbWeight=1 PerfScore 1.25
-G_M2960_IG05:
+G_M2960_IG07:
test esi, esi
- jl SHORT G_M2960_IG06
+ jl SHORT G_M2960_IG08
add esi, dword ptr [rbp-0x28]
mov dword ptr [rbp-0x28], esi
mov esi, dword ptr [rbx+0x08]
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[uint](uint):ubyte:this
call [rax]System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[uint](uint):ubyte:this
- jmp SHORT G_M2960_IG07
+ jmp SHORT G_M2960_IG09
;; size=31 bbWeight=0.50 PerfScore 6.00
-G_M2960_IG06:
+G_M2960_IG08:
mov byte ptr [rbp-0x24], 0
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M2960_IG07:
+G_M2960_IG09:
cmp byte ptr [rbp-0x24], 0
- jne SHORT G_M2960_IG10
+ jne SHORT G_M2960_IG12
;; size=6 bbWeight=1 PerfScore 3.00
-G_M2960_IG08:
+G_M2960_IG10:
xor eax, eax
mov dword ptr [r15], eax
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M2960_IG09:
- jmp SHORT G_M2960_IG11
+G_M2960_IG11:
+ jmp SHORT G_M2960_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M2960_IG10:
+G_M2960_IG12:
mov eax, dword ptr [rbp-0x28]
mov dword ptr [r15], eax
mov eax, 1
;; size=11 bbWeight=0.50 PerfScore 1.12
-G_M2960_IG11:
+G_M2960_IG13:
add rsp, 32
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M2960_IG12:
+G_M2960_IG14:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0.50 PerfScore 1.75
+G_M2960_IG15:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M2960_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 246, prolog size 23, PerfScore 45.08, instruction count 72, allocated bytes for code 246 (MethodHash=3b27f46f) for method System.Net.IPNetwork:TryFormat(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
+; Total bytes of code 297, prolog size 23, PerfScore 47.21, instruction count 80, allocated bytes for code 297 (MethodHash=3b27f46f) for method System.Net.IPNetwork:TryFormat(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
; ============================================================
51 (21.52 % of base) - System.Net.IPNetwork:TryFormat(System.Span`1[ushort],byref):ubyte:this
; Assembly listing for method System.Net.IPNetwork:TryFormat(System.Span`1[ushort],byref):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; 5 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 3 ) byref -> rbx this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V02 arg2 [V02,T01] ( 4, 3 ) byref -> r15 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V04 loc1 [V04,T09] ( 2, 2 ) ref -> rdi class-hnd exact single-def <System.Globalization.CultureInfo>
; V05 loc2 [V05 ] ( 16, 11.50) struct (32) [rbp-0x30] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.MemoryExtensions+TryWriteInterpolatedStringHandler>
; V06 loc3 [V06,T12] ( 2, 2 ) ubyte -> rcx ld-addr-op
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.MemoryExtensions+TryWriteInterpolatedStringHandler>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref
;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V15 tmp8 [V15,T05] ( 2, 4 ) int -> rax "dup spill"
; V16 tmp9 [V16,T06] ( 3, 3 ) ubyte -> rax "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref
;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Object>
; V22 tmp15 [V22,T10] ( 2, 2 ) ref -> rdx class-hnd single-def "dup spill" <System.Net.IPAddress>
-; V23 tmp16 [V23,T07] ( 5, 2.50) ref -> rdx
+; V23 tmp16 [V23,T07] ( 4, 2 ) ref -> rdx
;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp18 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V26 tmp19 [V26,T03] ( 4, 4 ) int -> rsi "Inlining Arg"
;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V28 tmp21 [V28,T11] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V29 tmp22 [V29,T13] ( 2, 2 ) int -> rdi "Inlining Arg"
;* V30 tmp23 [V30,T15] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V32 tmp25 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V33 tmp26 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V34 tmp27 [V34,T08] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
; V35 tmp28 [V35,T04] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V36 tmp29 [V36,T02] ( 3, 3 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V37 tmp30 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;* V39 tmp32 [V39 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp33 [V40 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V41 tmp34 [V41 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp35 [V42 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V45 tmp38 [V45 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V51 tmp44 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[000..008)"
;* V52 tmp45 [V52 ] ( 0, 0 ) int -> zero-ref "V08.[008..012)"
;* V53 tmp46 [V53 ] ( 0, 0 ) ubyte -> zero-ref "V08.[012..013)"
;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V08.[013..014)"
;* V55 tmp48 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "V08.[016..024)"
;* V56 tmp49 [V56 ] ( 0, 0 ) int -> zero-ref "V08.[024..028)"
; V57 cse0 [V57,T14] ( 3, 1.50) int -> rdi "CSE #01: moderate"
;
; Lcl frame size = 32
G_M47208_IG01:
push rbp
push r15
push rbx
sub rsp, 32
lea rbp, [rsp+0x30]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x30], ymm8
mov rbx, rdi
mov r15, rcx
;; size=29 bbWeight=1 PerfScore 6.58
G_M47208_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
test edx, edx
setg al
movzx rax, al
mov ecx, eax
mov gword ptr [rbp-0x30], rdi
xor edi, edi
mov dword ptr [rbp-0x28], edi
mov byte ptr [rbp-0x24], al
mov byte ptr [rbp-0x23], 0
mov bword ptr [rbp-0x20], rsi
mov dword ptr [rbp-0x18], edx
test ecx, ecx
- je SHORT G_M47208_IG05
- ;; size=50 bbWeight=1 PerfScore 11.50
+ je G_M47208_IG07
+ ;; size=54 bbWeight=1 PerfScore 11.50
G_M47208_IG03:
mov rdx, gword ptr [rbx]
- mov rdi, 0xD1FFAB1E ; const ptr
test rdx, rdx
- cmove rdx, gword ptr [rdi]
+ jne SHORT G_M47208_IG05
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M47208_IG13
+ ;; size=27 bbWeight=0.50 PerfScore 3.75
+G_M47208_IG04:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rdx, gword ptr [rdi]
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M47208_IG05:
lea rdi, [rbp-0x30]
mov rsi, 0xD1FFAB1E ; System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[System.Net.IPAddress](System.Net.IPAddress):ubyte:this
mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon):ubyte:this
call [rax]System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon):ubyte:this
test eax, eax
- je SHORT G_M47208_IG05
+ je SHORT G_M47208_IG07
mov esi, dword ptr [rbp-0x28]
mov edi, dword ptr [rbp-0x18]
cmp esi, edi
- ja SHORT G_M47208_IG10
+ ja SHORT G_M47208_IG12
mov rax, bword ptr [rbp-0x20]
mov ecx, esi
lea rax, bword ptr [rax+2*rcx]
sub edi, esi
- jne SHORT G_M47208_IG04
+ jne SHORT G_M47208_IG06
mov byte ptr [rbp-0x24], 0
- jmp SHORT G_M47208_IG05
- ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M47208_IG04:
+ jmp SHORT G_M47208_IG07
+ ;; size=60 bbWeight=0.50 PerfScore 7.25
+G_M47208_IG06:
mov word ptr [rax], 47
mov esi, dword ptr [rbp-0x28]
inc esi
mov dword ptr [rbp-0x28], esi
mov esi, dword ptr [rbx+0x08]
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[uint](uint):ubyte:this
call [rax]System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[uint](uint):ubyte:this
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M47208_IG05:
+G_M47208_IG07:
cmp byte ptr [rbp-0x24], 0
- jne SHORT G_M47208_IG08
+ jne SHORT G_M47208_IG10
;; size=6 bbWeight=1 PerfScore 3.00
-G_M47208_IG06:
+G_M47208_IG08:
xor eax, eax
mov dword ptr [r15], eax
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M47208_IG07:
- jmp SHORT G_M47208_IG09
+G_M47208_IG09:
+ jmp SHORT G_M47208_IG11
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M47208_IG08:
+G_M47208_IG10:
mov eax, dword ptr [rbp-0x28]
mov dword ptr [r15], eax
mov eax, 1
;; size=11 bbWeight=0.50 PerfScore 1.12
-G_M47208_IG09:
+G_M47208_IG11:
add rsp, 32
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M47208_IG10:
+G_M47208_IG12:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0.50 PerfScore 1.75
+G_M47208_IG13:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M47208_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 23, PerfScore 42.83, instruction count 69, allocated bytes for code 237 (MethodHash=49b44797) for method System.Net.IPNetwork:TryFormat(System.Span`1[ushort],byref):ubyte:this (FullOpts)
+; Total bytes of code 288, prolog size 23, PerfScore 44.96, instruction count 77, allocated bytes for code 288 (MethodHash=49b44797) for method System.Net.IPNetwork:TryFormat(System.Span`1[ushort],byref):ubyte:this (FullOpts)
; ============================================================
51 (60.71 % of base) - System.Net.Sockets.MulticastOption:.ctor(System.Net.IPAddress):this
; Assembly listing for method System.Net.Sockets.MulticastOption:.ctor(System.Net.IPAddress):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
+; 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,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.MulticastOption>
; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Net.IPAddress>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.IPAddress+ReadOnlyIPAddress>
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Net.IPAddress>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M59009_IG01:
+ push rbp
push rbx
+ push rax
+ lea rbp, [rsp+0x10]
mov rbx, rdi
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M59009_IG02:
test rsi, rsi
- je SHORT G_M59009_IG04
+ je SHORT G_M59009_IG05
lea rdi, bword ptr [rbx+0x08]
call CORINFO_HELP_ASSIGN_REF
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M59009_IG06
+ ;; size=29 bbWeight=1 PerfScore 7.00
+G_M59009_IG03:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rsi, gword ptr [rdi]
xor edi, edi
mov dword ptr [rbx+0x18], edi
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdi]
lea rdi, bword ptr [rbx+0x10]
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=42 bbWeight=1 PerfScore 8.00
-G_M59009_IG03:
- pop rbx
- ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=28 bbWeight=1 PerfScore 5.25
G_M59009_IG04:
+ add rsp, 8
+ pop rbx
+ pop rbp
+ ret
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M59009_IG05:
mov edi, 0x137D
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
+G_M59009_IG06:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M59009_IG03
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 1, PerfScore 13.38, instruction count 22, allocated bytes for code 84 (MethodHash=c5ce197e) for method System.Net.Sockets.MulticastOption:.ctor(System.Net.IPAddress):this (FullOpts)
+; Total bytes of code 135, prolog size 8, PerfScore 20.88, instruction count 34, allocated bytes for code 135 (MethodHash=c5ce197e) for method System.Net.Sockets.MulticastOption:.ctor(System.Net.IPAddress):this (FullOpts)
; ============================================================
51 (20.56 % of base) - System.Net.Sockets.TcpListener:.ctor(int):this
; Assembly listing for method System.Net.Sockets.TcpListener:.ctor(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; 3 single block inlinees; 4 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] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.TcpListener>
-; V01 arg1 [V01,T02] ( 5, 4.50) int -> r15 single-def
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.TcpListener>
+; V01 arg1 [V01,T01] ( 5, 4.50) int -> r15 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V03 tmp1 [V03,T00] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
+; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
; V04 tmp2 [V04,T03] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.Socket>
; V05 tmp3 [V05,T06] ( 2, 4 ) int -> r15 "finalizable newobj spill"
; V06 tmp4 [V06,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V07 tmp5 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V08 tmp6 [V08,T05] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Net.IPAddress+ReadOnlyIPAddress>
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp9 [V11,T04] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V13 tmp11 [V13,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V08 tmp6 [V08,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V09 tmp7 [V09,T04] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V10 tmp8 [V10,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
; Lcl frame size = 8
G_M21329_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15d, esi
;; size=18 bbWeight=1 PerfScore 6.00
G_M21329_IG02:
test r15d, r15d
- jl G_M21329_IG06
+ jl G_M21329_IG07
;; size=9 bbWeight=1 PerfScore 1.25
G_M21329_IG03:
cmp r15d, 0xFFFF
- jg G_M21329_IG06
+ jg G_M21329_IG07
;; size=13 bbWeight=0.50 PerfScore 0.62
G_M21329_IG04:
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
call CORINFO_HELP_NEWSFAST
mov r14, rax
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdi]
- mov dword ptr [r14+0x10], r15d
- lea rdi, bword ptr [r14+0x08]
- call CORINFO_HELP_ASSIGN_REF
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M21329_IG08
+ ;; size=37 bbWeight=1 PerfScore 5.75
+G_M21329_IG05:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.IPAddress:Any
+ mov rsi, gword ptr [rsi]
+ mov rdi, r14
+ mov edx, r15d
+ mov rax, 0xD1FFAB1E ; code for System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
+ call [rax]System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [rbx+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Net.EndPoint:get_AddressFamily():int:this
mov r15d, eax
mov rdi, 0xD1FFAB1E ; System.Net.Sockets.Socket
call CORINFO_HELP_NEWFAST
mov r14, rax
mov rdi, r14
mov esi, r15d
mov edx, 1
mov ecx, 6
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:.ctor(int,int,int):this
call [rax]System.Net.Sockets.Socket:.ctor(int,int,int):this
lea rdi, bword ptr [rbx+0x10]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=132 bbWeight=1 PerfScore 25.00
-G_M21329_IG05:
+ ;; size=119 bbWeight=1 PerfScore 24.75
+G_M21329_IG06:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M21329_IG06:
+G_M21329_IG07:
mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov edi, 0x196D
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String):this
call [rax]System.ArgumentOutOfRangeException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=65 bbWeight=0 PerfScore 0.00
+G_M21329_IG08:
+ mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M21329_IG05
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 248, prolog size 12, PerfScore 36.12, instruction count 60, allocated bytes for code 248 (MethodHash=5810acae) for method System.Net.Sockets.TcpListener:.ctor(int):this (FullOpts)
+; Total bytes of code 299, prolog size 12, PerfScore 41.62, instruction count 68, allocated bytes for code 299 (MethodHash=5810acae) for method System.Net.Sockets.TcpListener:.ctor(int):this (FullOpts)
; ============================================================