forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] [EgorBo] Never use heap for return buffers #987
Comments
Top method regressions165 (11.01 % of base) - System.Threading.Tasks.Parallel+<>c__DisplayClass19_0`2[System.__Canon,long]:b__1(byref,long,byref):this ; Assembly listing for method System.Threading.Tasks.Parallel+<>c__DisplayClass19_0`2[System.__Canon,long]:<ForWorker>b__1(byref,long,byref):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 30 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 29,776 ) ref -> [rbp-0x68] this class-hnd EH-live single-def <System.Threading.Tasks.Parallel+<>c__DisplayClass19_0`2[System.__Canon,long]>
+; V00 this [V00,T01] ( 29,776 ) ref -> [rbp-0x90] this class-hnd EH-live single-def <System.Threading.Tasks.Parallel+<>c__DisplayClass19_0`2[System.__Canon,long]>
; V01 arg1 [V01,T18] ( 6, 13 ) byref -> rbx single-def
; V02 arg2 [V02,T26] ( 3, 3 ) long -> r14 single-def
; V03 arg3 [V03,T21] ( 4, 4 ) byref -> r15 single-def
; V04 loc0 [V04,T12] ( 7, 58 ) long -> r13 ld-addr-op
; V05 loc1 [V05,T03] ( 5,329 ) long -> r12 ld-addr-op
-; V06 loc2 [V06,T06] ( 6,131 ) ref -> [rbp-0x70] do-not-enreg[M] ld-addr-op class-hnd EH-live <System.__Canon>
+; V06 loc2 [V06,T06] ( 6,131 ) ref -> [rbp-0x98] do-not-enreg[M] ld-addr-op class-hnd EH-live <System.__Canon>
; V07 loc3 [V07,T39] ( 4, 3 ) ubyte -> [rbp-0x2C] do-not-enreg[Z] EH-live
; V08 loc4 [V08 ] ( 6, 4 ) struct ( 8) [rbp-0x38] do-not-enreg[SB] ld-addr-op <System.Nullable`1[int]>
-; V09 loc5 [V09,T04] ( 7,163 ) ref -> [rbp-0x78] class-hnd <System.Threading.Tasks.ParallelLoopState`1[long]>
+; V09 loc5 [V09,T04] ( 7,163 ) ref -> [rbp-0xA0] class-hnd <System.Threading.Tasks.ParallelLoopState`1[long]>
; V10 loc6 [V10,T13] ( 2, 33 ) long -> r14
; V11 loc7 [V11,T11] ( 5, 84 ) long -> r13
; V12 loc8 [V12,T05] ( 7,132 ) long -> r13
; V13 loc9 [V13,T00] ( 7,800 ) long -> r13
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V15 tmp1 [V15,T19] ( 4, 8 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.ParallelLoopState`1[long]>
-; V16 tmp2 [V16,T20] ( 4, 8 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.ParallelLoopState`1[long]>
+; V15 tmp1 [V15,T19] ( 4, 8 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.ParallelLoopState`1[long]>
+; V16 tmp2 [V16,T20] ( 4, 8 ) ref -> [rbp-0xB0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.ParallelLoopState`1[long]>
; V17 tmp3 [V17,T28] ( 4, 4 ) ref -> rbx class-hnd exact "impAppendStmt" <System.Threading.Tasks.ParallelEtwProvider>
; V18 tmp4 [V18,T32] ( 4, 4 ) int -> r15 "impAppendStmt"
-; V19 tmp5 [V19,T44] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V20 tmp6 [V20,T33] ( 2, 4 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.Tasks.ParallelEtwProvider>
+; V19 tmp5 [V19,T45] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V20 tmp6 [V20,T33] ( 2, 4 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.Tasks.ParallelEtwProvider>
; V21 tmp7 [V21,T35] ( 2, 4 ) int -> [rbp-0x3C] spill-single-def "impAppendStmt"
-; V22 tmp8 [V22 ] ( 2, 2 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V23 tmp9 [V23 ] ( 2, 2 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V24 tmp10 [V24,T36] ( 2, 4 ) int -> rax "impAppendStmt"
-; V25 tmp11 [V25,T37] ( 2, 4 ) long -> r13 "Inlining Arg"
-;* V26 tmp12 [V26 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V27 tmp13 [V27,T38] ( 2, 4 ) long -> r12 "Inlining Arg"
-;* V28 tmp14 [V28 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-;* V29 tmp15 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelEtwProvider>
-; V30 tmp16 [V30,T34] ( 2, 4 ) ref -> rdi class-hnd single-def "dup spill" <System.Threading.Tasks.TaskScheduler>
-; V31 tmp17 [V31,T25] ( 5, 5 ) ref -> rdi
-; V32 tmp18 [V32,T22] ( 3, 6 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-; V33 tmp19 [V33,T23] ( 3, 6 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-;* V34 tmp20 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V35 tmp21 [V35 ] ( 0, 0 ) long -> zero-ref "dup spill"
-;* V36 tmp22 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V37 tmp23 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-;* V38 tmp24 [V38,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V39 tmp25 [V39,T07] ( 2,128 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-; V40 tmp26 [V40,T10] ( 3, 96 ) int -> rsi "Inline stloc first use temp"
-;* V41 tmp27 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V42 tmp28 [V42 ] ( 0, 0 ) long -> zero-ref "dup spill"
-;* V43 tmp29 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V44 tmp30 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-;* V45 tmp31 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V46 tmp32 [V46 ] ( 0, 0 ) long -> zero-ref "dup spill"
-;* V47 tmp33 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V48 tmp34 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-; V49 tmp35 [V49 ] ( 2, 16 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V50 tmp36 [V50 ] ( 2, 16 ) long -> [rbp-0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V51 tmp37 [V51,T14] ( 2, 32 ) int -> rax "impAppendStmt"
-; V52 tmp38 [V52,T15] ( 2, 32 ) long -> r13 "Inlining Arg"
-;* V53 tmp39 [V53 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V54 tmp40 [V54,T16] ( 2, 32 ) long -> r12 "Inlining Arg"
-;* V55 tmp41 [V55 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-;* V56 tmp42 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-;* V57 tmp43 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelEtwProvider>
-; V58 tmp44 [V58,T29] ( 4, 4 ) ref -> rdi class-hnd "dup spill" <System.Threading.Tasks.TaskScheduler>
-; V59 tmp45 [V59,T24] ( 10, 5 ) ref -> rdi
-; V60 tmp46 [V60,T42] ( 3, 2 ) ubyte -> [rbp-0x38] do-not-enreg[] "field V08.hasValue (fldOffset=0x0)" P-DEP
-; V61 tmp47 [V61,T27] ( 6, 4 ) int -> [rbp-0x34] do-not-enreg[] "field V08.value (fldOffset=0x4)" P-DEP
-; V62 cse0 [V62,T40] ( 3, 3 ) ref -> rax "CSE #05: moderate"
-; V63 cse1 [V63,T41] ( 3, 3 ) ref -> rbx "CSE #10: moderate"
-; V64 cse2 [V64,T30] ( 4, 4 ) ref -> rcx "CSE #08: moderate"
-; V65 cse3 [V65,T31] ( 4, 4 ) ref -> rax "CSE #12: moderate"
-; V66 rat0 [V66 ] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
-; V67 rat1 [V67,T08] ( 3, 96 ) ref -> rax "delegate invoke call"
-; V68 rat2 [V68,T09] ( 3, 96 ) ref -> rcx "delegate invoke call"
-; V69 rat3 [V69,T02] ( 3,384 ) ref -> r8 "delegate invoke call"
-; V70 rat4 [V70,T43] ( 3, 0 ) ref -> rax "delegate invoke call"
+; V22 tmp8 [V22,T43] ( 2, 2 ) struct (40) [rbp-0x68] do-not-enreg[HS] must-init hidden-struct-arg "stack copy for value returned via return buffer" <System.Threading.Tasks.RangeWorker>
+; V23 tmp9 [V23 ] ( 2, 2 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V24 tmp10 [V24 ] ( 2, 2 ) long -> [rbp-0x78] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V25 tmp11 [V25,T36] ( 2, 4 ) int -> rax "impAppendStmt"
+; V26 tmp12 [V26,T37] ( 2, 4 ) long -> r13 "Inlining Arg"
+;* V27 tmp13 [V27 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
+; V28 tmp14 [V28,T38] ( 2, 4 ) long -> r12 "Inlining Arg"
+;* V29 tmp15 [V29 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V30 tmp16 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelEtwProvider>
+; V31 tmp17 [V31,T34] ( 2, 4 ) ref -> rdi class-hnd single-def "dup spill" <System.Threading.Tasks.TaskScheduler>
+; V32 tmp18 [V32,T25] ( 5, 5 ) ref -> rdi
+; V33 tmp19 [V33,T22] ( 3, 6 ) ref -> [rbp-0xC0] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
+; V34 tmp20 [V34,T23] ( 3, 6 ) ref -> [rbp-0xC8] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
+;* V35 tmp21 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V36 tmp22 [V36 ] ( 0, 0 ) long -> zero-ref "dup spill"
+;* V37 tmp23 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V38 tmp24 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
+;* V39 tmp25 [V39,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V40 tmp26 [V40,T07] ( 2,128 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
+; V41 tmp27 [V41,T10] ( 3, 96 ) int -> rsi "Inline stloc first use temp"
+;* V42 tmp28 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V43 tmp29 [V43 ] ( 0, 0 ) long -> zero-ref "dup spill"
+;* V44 tmp30 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V45 tmp31 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
+;* V46 tmp32 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V47 tmp33 [V47 ] ( 0, 0 ) long -> zero-ref "dup spill"
+;* V48 tmp34 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V49 tmp35 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
+; V50 tmp36 [V50 ] ( 2, 16 ) long -> [rbp-0x80] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V51 tmp37 [V51 ] ( 2, 16 ) long -> [rbp-0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V52 tmp38 [V52,T14] ( 2, 32 ) int -> rax "impAppendStmt"
+; V53 tmp39 [V53,T15] ( 2, 32 ) long -> r13 "Inlining Arg"
+;* V54 tmp40 [V54 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
+; V55 tmp41 [V55,T16] ( 2, 32 ) long -> r12 "Inlining Arg"
+;* V56 tmp42 [V56 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V57 tmp43 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
+;* V58 tmp44 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.ParallelEtwProvider>
+; V59 tmp45 [V59,T29] ( 4, 4 ) ref -> rdi class-hnd "dup spill" <System.Threading.Tasks.TaskScheduler>
+; V60 tmp46 [V60,T24] ( 10, 5 ) ref -> rdi
+; V61 tmp47 [V61,T42] ( 3, 2 ) ubyte -> [rbp-0x38] do-not-enreg[] "field V08.hasValue (fldOffset=0x0)" P-DEP
+; V62 tmp48 [V62,T27] ( 6, 4 ) int -> [rbp-0x34] do-not-enreg[] "field V08.value (fldOffset=0x4)" P-DEP
+; V63 cse0 [V63,T40] ( 3, 3 ) ref -> rax "CSE #05: moderate"
+; V64 cse1 [V64,T41] ( 3, 3 ) ref -> rbx "CSE #10: moderate"
+; V65 cse2 [V65,T30] ( 4, 4 ) ref -> rcx "CSE #08: moderate"
+; V66 cse3 [V66,T31] ( 4, 4 ) ref -> rax "CSE #12: moderate"
+; V67 rat0 [V67 ] ( 1, 1 ) long -> [rbp-0xD0] do-not-enreg[V] "PSPSym"
+; V68 rat1 [V68,T08] ( 3, 96 ) ref -> rax "delegate invoke call"
+; V69 rat2 [V69,T09] ( 3, 96 ) ref -> rcx "delegate invoke call"
+; V70 rat3 [V70,T02] ( 3,384 ) ref -> r9 "delegate invoke call"
+; V71 rat4 [V71,T44] ( 3, 0 ) ref -> rax "delegate invoke call"
;
-; Lcl frame size = 136
+; Lcl frame size = 168
G_M61654_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 136
- lea rbp, [rsp+0xB0]
- mov qword ptr [rbp-0xB0], rsp
- mov gword ptr [rbp-0x68], rdi
+ sub rsp, 168
+ lea rbp, [rsp+0xD0]
+ xor eax, eax
+ mov qword ptr [rbp-0x68], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x60], ymm8
+ mov qword ptr [rbp-0xD0], rsp
+ mov gword ptr [rbp-0x90], rdi
+ mov r8, rdi
mov rbx, rsi
mov r14, rdx
mov r15, rcx
- ;; size=45 bbWeight=1 PerfScore 9.50
+ ;; size=67 bbWeight=1 PerfScore 13.33
G_M61654_IG02:
cmp gword ptr [rbx], 0
jne SHORT G_M61654_IG03
- mov rdi, gword ptr [rdi+0x20]
- mov rsi, rbx
+ mov rdi, gword ptr [r8+0x20]
+ lea rsi, [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.RangeManager:RegisterNewWorker():System.Threading.Tasks.RangeWorker:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.RangeManager:RegisterNewWorker():System.Threading.Tasks.RangeWorker:this
- ;; size=27 bbWeight=1 PerfScore 12.50
+ mov rdi, rbx
+ lea rsi, bword ptr [rbp-0x68]
+ call CORINFO_HELP_ASSIGN_BYREF
+ mov ecx, 4
+ rep movsq
+ ;; size=48 bbWeight=1 PerfScore 39.75
G_M61654_IG03:
mov byte ptr [r15], 0
- lea rdx, [rbp-0x50]
- lea rsi, [rbp-0x48]
+ lea rdx, [rbp-0x78]
+ lea rsi, [rbp-0x70]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.RangeWorker:FindNewWork(byref,byref):ubyte:this
call [rax]System.Threading.Tasks.RangeWorker:FindNewWork(byref,byref):ubyte:this
- mov r13, qword ptr [rbp-0x48]
- mov r12, qword ptr [rbp-0x50]
+ mov r13, qword ptr [rbp-0x70]
+ mov r12, qword ptr [rbp-0x78]
test eax, eax
je G_M61654_IG26
- mov rdi, gword ptr [rbp-0x68]
- mov rdi, gword ptr [rdi+0x18]
+ mov r8, gword ptr [rbp-0x90]
+ mov rdi, gword ptr [r8+0x18]
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ParallelLoopStateFlags`1[long]:ShouldExitLoop(long):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.ParallelLoopStateFlags`1[long]:ShouldExitLoop(long):ubyte:this
test eax, eax
jne G_M61654_IG26
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M61654_IG28
- ;; size=95 bbWeight=1 PerfScore 23.75
+ ;; size=98 bbWeight=1 PerfScore 23.75
G_M61654_IG04:
mov rax, 0xD1FFAB1E ; data for System.Threading.Tasks.ParallelEtwProvider:Log
mov rax, gword ptr [rax]
cmp byte ptr [rax+0x9D], 0
je SHORT G_M61654_IG05
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0xB8], rax
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_InternalCurrent():System.Threading.Tasks.TaskScheduler
call [rcx]System.Threading.Tasks.TaskScheduler:get_InternalCurrent():System.Threading.Tasks.TaskScheduler
mov rdi, rax
mov rax, 0xD1FFAB1E ; const ptr
test rdi, rdi
cmove rdi, gword ptr [rax]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
mov dword ptr [rbp-0x3C], eax
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_CurrentId():System.Nullable`1[int]
call [rcx]System.Threading.Tasks.Task:get_CurrentId():System.Nullable`1[int]
mov qword ptr [rbp-0x38], rax
- mov rdi, gword ptr [rbp-0x68]
- mov ecx, dword ptr [rdi+0x50]
- mov rdi, gword ptr [rbp-0x90]
+ mov r8, gword ptr [rbp-0x90]
+ mov ecx, dword ptr [r8+0x50]
+ mov rdi, gword ptr [rbp-0xB8]
mov esi, dword ptr [rbp-0x3C]
mov edx, dword ptr [rbp-0x34]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ParallelEtwProvider:ParallelFork(int,int,int):this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.ParallelEtwProvider:ParallelFork(int,int,int):this
- ;; size=128 bbWeight=1 PerfScore 38.00
+ ;; size=132 bbWeight=1 PerfScore 38.00
G_M61654_IG05:
xor rdi, rdi
- mov gword ptr [rbp-0x70], rdi
- ;; size=6 bbWeight=1 PerfScore 1.25
+ mov gword ptr [rbp-0x98], rdi
+ ;; size=9 bbWeight=1 PerfScore 1.25
G_M61654_IG06:
mov dword ptr [rbp-0x2C], edi
;; size=3 bbWeight=1 PerfScore 1.00
G_M61654_IG07:
xor rax, rax
- mov rdi, gword ptr [rbp-0x68]
- cmp gword ptr [rdi+0x28], 0
- jne SHORT G_M61654_IG08
- cmp gword ptr [rdi+0x30], 0
- mov gword ptr [rbp-0x78], rax
+ mov r8, gword ptr [rbp-0x90]
+ cmp gword ptr [r8+0x28], 0
+ jne G_M61654_IG08
+ cmp gword ptr [r8+0x30], 0
+ mov gword ptr [rbp-0xA0], rax
je G_M61654_IG09
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.ParallelLoopState`1[long]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x80], rax
- mov rdi, gword ptr [rbp-0x68]
- mov rcx, gword ptr [rdi+0x18]
- mov gword ptr [rbp-0xA0], rcx
+ mov gword ptr [rbp-0xA8], rax
+ mov r8, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [r8+0x18]
+ mov gword ptr [rbp-0xC8], rcx
lea rdi, bword ptr [rax+0x08]
mov rsi, rcx
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0xA8]
lea rdi, bword ptr [rax+0x10]
- mov rsi, gword ptr [rbp-0xA0]
+ mov rsi, gword ptr [rbp-0xC8]
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x80]
- mov gword ptr [rbp-0x78], rax
- mov rdi, gword ptr [rbp-0x68]
- mov rcx, gword ptr [rdi+0x38]
+ mov rax, gword ptr [rbp-0xA8]
+ mov gword ptr [rbp-0xA0], rax
+ mov r8, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [r8+0x38]
test rcx, rcx
je SHORT G_M61654_IG09
mov rdi, gword ptr [rcx+0x08]
call [rcx+0x18]System.Func`1[System.__Canon]:Invoke():System.__Canon:this
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x98], rax
mov dword ptr [rbp-0x2C], 1
jmp SHORT G_M61654_IG09
- ;; size=135 bbWeight=1 PerfScore 37.00
+ ;; size=166 bbWeight=1 PerfScore 37.00
G_M61654_IG08:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.ParallelLoopState`1[long]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x88], rax
- mov rdi, gword ptr [rbp-0x68]
- mov rcx, gword ptr [rdi+0x18]
- mov gword ptr [rbp-0x98], rcx
+ mov gword ptr [rbp-0xB0], rax
+ mov r8, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [r8+0x18]
+ mov gword ptr [rbp-0xC0], rcx
lea rdi, bword ptr [rax+0x08]
mov rsi, rcx
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x88]
+ mov rax, gword ptr [rbp-0xB0]
lea rdi, bword ptr [rax+0x10]
- mov rsi, gword ptr [rbp-0x98]
+ mov rsi, gword ptr [rbp-0xC0]
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x88]
- mov gword ptr [rbp-0x78], rax
- ;; size=83 bbWeight=1 PerfScore 13.50
+ mov rax, gword ptr [rbp-0xB0]
+ mov gword ptr [rbp-0xA0], rax
+ ;; size=89 bbWeight=1 PerfScore 13.50
G_M61654_IG09:
call System.Environment:get_TickCount64():long
add r14, rax
jmp G_M61654_IG14
;; size=13 bbWeight=1 PerfScore 3.25
G_M61654_IG10:
- mov rdi, gword ptr [rbp-0x68]
- mov rax, gword ptr [rbp-0x78]
+ mov r8, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0xA0]
mov qword ptr [rax+0x18], r13
- mov r8, gword ptr [rdi+0x30]
+ mov r9, gword ptr [r8+0x30]
mov rsi, r13
- mov gword ptr [rbp-0x78], rax
+ mov gword ptr [rbp-0xA0], rax
mov rdx, rax
- mov rcx, gword ptr [rbp-0x70]
- mov rdi, gword ptr [r8+0x08]
- call [r8+0x18]System.Func`4[long,System.__Canon,System.__Canon,System.__Canon]:Invoke(long,System.__Canon,System.__Canon):System.__Canon:this
- mov gword ptr [rbp-0x70], rax
+ mov rcx, gword ptr [rbp-0x98]
+ mov rdi, gword ptr [r9+0x08]
+ call [r9+0x18]System.Func`4[long,System.__Canon,System.__Canon,System.__Canon]:Invoke(long,System.__Canon,System.__Canon):System.__Canon:this
+ mov gword ptr [rbp-0x98], rax
inc r13
- mov rdi, gword ptr [rbp-0x68]
- ;; size=49 bbWeight=64 PerfScore 944.00
+ mov r8, gword ptr [rbp-0x90]
+ ;; size=67 bbWeight=64 PerfScore 944.00
G_M61654_IG11:
cmp r13, r12
jge SHORT G_M61654_IG12
- mov rsi, gword ptr [rdi+0x18]
- cmp dword ptr [rsi+0x08], 0
+ mov rdi, gword ptr [r8+0x18]
+ cmp dword ptr [rdi+0x08], 0
je SHORT G_M61654_IG10
- mov rdi, gword ptr [rdi+0x18]
+ mov rdi, gword ptr [r8+0x18]
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ParallelLoopStateFlags`1[long]:ShouldExitLoop(long):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.ParallelLoopStateFlags`1[long]:ShouldExitLoop(long):ubyte:this
test eax, eax
je SHORT G_M61654_IG10
;; size=40 bbWeight=256 PerfScore 4352.00
G_M61654_IG12:
call System.Environment:get_TickCount64():long
mov rdx, r14
sub rdx, rax
test rdx, rdx
- jle SHORT G_M61654_IG17
- ;; size=16 bbWeight=32 PerfScore 88.00
+ jle G_M61654_IG17
+ ;; size=20 bbWeight=32 PerfScore 88.00
G_M61654_IG13:
- lea rdx, [rbp-0x60]
- lea rsi, [rbp-0x58]
+ lea rdx, [rbp-0x88]
+ lea rsi, [rbp-0x80]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.RangeWorker:FindNewWork(byref,byref):ubyte:this
call [rax]System.Threading.Tasks.RangeWorker:FindNewWork(byref,byref):ubyte:this
- mov r13, qword ptr [rbp-0x58]
- mov r12, qword ptr [rbp-0x60]
+ mov r13, qword ptr [rbp-0x80]
+ mov r12, qword ptr [rbp-0x88]
test eax, eax
je G_M61654_IG23
- mov rdi, gword ptr [rbp-0x68]
- mov rsi, gword ptr [rdi+0x18]
- cmp dword ptr [rsi+0x08], 0
+ mov r8, gword ptr [rbp-0x90]
+ mov rdi, gword ptr [r8+0x18]
+ cmp dword ptr [rdi+0x08], 0
je SHORT G_M61654_IG14
- mov rdi, gword ptr [rbp-0x68]
- mov rdi, gword ptr [rdi+0x18]
+ mov r8, gword ptr [rbp-0x90]
+ mov rdi, gword ptr [r8+0x18]
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ParallelLoopStateFlags`1[long]:ShouldExitLoop(long):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.ParallelLoopStateFlags`1[long]:ShouldExitLoop(long):ubyte:this
test eax, eax
jne G_M61654_IG23
- ;; size=86 bbWeight=8 PerfScore 204.00
+ ;; size=98 bbWeight=8 PerfScore 204.00
G_M61654_IG14:
- mov rdi, gword ptr [rbp-0x68]
- cmp gword ptr [rdi+0x40], 0
+ mov r8, gword ptr [rbp-0x90]
+ cmp gword ptr [r8+0x40], 0
jne SHORT G_M61654_IG20
- ;; size=11 bbWeight=8 PerfScore 40.00
+ ;; size=14 bbWeight=8 PerfScore 40.00
G_M61654_IG15:
- cmp gword ptr [rdi+0x28], 0
+ cmp gword ptr [r8+0x28], 0
jne SHORT G_M61654_IG18
;; size=7 bbWeight=4 PerfScore 16.00
G_M61654_IG16:
jmp G_M61654_IG11
;; size=5 bbWeight=32 PerfScore 64.00
G_M61654_IG17:
mov byte ptr [r15], 1
jmp G_M61654_IG23
;; size=9 bbWeight=1 PerfScore 3.00
G_M61654_IG18:
cmp r13, r12
jge G_M61654_IG12
- mov rsi, gword ptr [rdi+0x18]
- cmp dword ptr [rsi+0x08], 0
+ mov rdi, gword ptr [r8+0x18]
+ cmp dword ptr [rdi+0x08], 0
je SHORT G_M61654_IG19
- mov rdi, gword ptr [rdi+0x18]
+ mov rdi, gword ptr [r8+0x18]
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ParallelLoopStateFlags`1[long]:ShouldExitLoop(long):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.ParallelLoopStateFlags`1[long]:ShouldExitLoop(long):ubyte:this
test eax, eax
jne G_M61654_IG12
;; size=48 bbWeight=32 PerfScore 544.00
G_M61654_IG19:
- mov rdi, gword ptr [rbp-0x68]
- mov rax, gword ptr [rbp-0x78]
+ mov r8, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0xA0]
mov qword ptr [rax+0x18], r13
- mov rcx, gword ptr [rdi+0x28]
+ mov rcx, gword ptr [r8+0x28]
mov rsi, r13
- mov gword ptr [rbp-0x78], rax
+ mov gword ptr [rbp-0xA0], rax
mov rdx, rax
mov rdi, gword ptr [rcx+0x08]
call [rcx+0x18]System.Action`2[long,System.__Canon]:Invoke(long,System.__Canon):this
inc r13
- mov rdi, gword ptr [rbp-0x68]
+ mov r8, gword ptr [rbp-0x90]
jmp SHORT G_M61654_IG18
- ;; size=42 bbWeight=16 PerfScore 236.00
+ ;; size=54 bbWeight=16 PerfScore 236.00
G_M61654_IG20:
cmp r13, r12
jge G_M61654_IG12
- mov rsi, gword ptr [rdi+0x18]
+ mov rsi, gword ptr [r8+0x18]
cmp dword ptr [rsi+0x08], 0
je SHORT G_M61654_IG21
- mov rsi, gword ptr [rdi+0x18]
+ mov rsi, gword ptr [r8+0x18]
mov esi, dword ptr [rsi+0x08]
test esi, esi
je SHORT G_M61654_IG21
test sil, 9
jne G_M61654_IG12
;; size=40 bbWeight=32 PerfScore 440.00
G_M61654_IG21:
- mov rax, gword ptr [rdi+0x40]
+ mov rax, gword ptr [r8+0x40]
mov rsi, r13
mov rdi, gword ptr [rax+0x08]
call [rax+0x18]System.Action`1[long]:Invoke(long):this
inc r13
- mov rdi, gword ptr [rbp-0x68]
+ mov r8, gword ptr [rbp-0x90]
jmp SHORT G_M61654_IG20
- ;; size=23 bbWeight=16 PerfScore 168.00
+ ;; size=26 bbWeight=16 PerfScore 168.00
G_M61654_IG22:
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M61654_IG23:
- mov rdi, gword ptr [rbp-0x68]
- mov rax, gword ptr [rdi+0x48]
+ mov r8, gword ptr [rbp-0x90]
+ mov rax, gword ptr [r8+0x48]
test rax, rax
setne sil
movzx rsi, sil
test esi, dword ptr [rbp-0x2C]
je SHORT G_M61654_IG24
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, gword ptr [rbp-0x98]
mov rdi, gword ptr [rax+0x08]
call [rax+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
- ;; size=35 bbWeight=1 PerfScore 13.50
+ ;; size=41 bbWeight=1 PerfScore 13.50
G_M61654_IG24:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M61654_IG29
;; size=19 bbWeight=1 PerfScore 4.25
G_M61654_IG25:
mov rax, 0xD1FFAB1E ; static handle
mov rbx, gword ptr [rax]
cmp byte ptr [rbx+0x9D], 0
je SHORT G_M61654_IG26
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_InternalCurrent():System.Threading.Tasks.TaskScheduler
call [rax]System.Threading.Tasks.TaskScheduler:get_InternalCurrent():System.Threading.Tasks.TaskScheduler
mov rdi, rax
mov rax, 0xD1FFAB1E ; const ptr
test rdi, rdi
cmove rdi, gword ptr [rax]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
mov r15d, eax
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_CurrentId():System.Nullable`1[int]
call [rax]System.Threading.Tasks.Task:get_CurrentId():System.Nullable`1[int]
mov qword ptr [rbp-0x38], rax
- mov rdi, gword ptr [rbp-0x68]
- mov ecx, dword ptr [rdi+0x50]
+ mov r8, gword ptr [rbp-0x90]
+ mov ecx, dword ptr [r8+0x50]
mov rdi, rbx
mov esi, r15d
mov edx, dword ptr [rbp-0x34]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ParallelEtwProvider:ParallelJoin(int,int,int):this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.ParallelEtwProvider:ParallelJoin(int,int,int):this
- ;; size=117 bbWeight=1 PerfScore 34.75
+ ;; size=121 bbWeight=1 PerfScore 34.75
G_M61654_IG26:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M61654_IG27:
- add rsp, 136
+ add rsp, 168
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M61654_IG28:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.ParallelEtwProvider
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M61654_IG04
;; size=27 bbWeight=0 PerfScore 0.00
G_M61654_IG29:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.ParallelEtwProvider
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M61654_IG25
;; size=27 bbWeight=0 PerfScore 0.00
G_M61654_IG30:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0xB0]
+ lea rbp, [rbp+0xD0]
;; size=25 bbWeight=0 PerfScore 0.00
G_M61654_IG31:
mov rbx, rsi
- mov rdi, gword ptr [rbp-0x68]
- mov rdi, gword ptr [rdi+0x18]
+ mov r8, gword ptr [rbp-0x90]
+ mov rdi, gword ptr [r8+0x18]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ParallelLoopStateFlags:SetExceptional():this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.ParallelLoopStateFlags:SetExceptional():this
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw(System.Exception)
call [rax]System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw(System.Exception)
lea rax, G_M61654_IG22
- ;; size=47 bbWeight=0 PerfScore 0.00
+ ;; size=50 bbWeight=0 PerfScore 0.00
G_M61654_IG32:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
G_M61654_IG33:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0xB0]
+ lea rbp, [rbp+0xD0]
;; size=25 bbWeight=0 PerfScore 0.00
G_M61654_IG34:
- mov rdi, gword ptr [rbp-0x68]
- cmp gword ptr [rdi+0x48], 0
+ mov r8, gword ptr [rbp-0x90]
+ cmp gword ptr [r8+0x48], 0
setne sil
movzx rsi, sil
test esi, dword ptr [rbp-0x2C]
je SHORT G_M61654_IG35
- mov rax, gword ptr [rdi+0x48]
- mov rsi, gword ptr [rbp-0x70]
+ mov rax, gword ptr [r8+0x48]
+ mov rsi, gword ptr [rbp-0x98]
mov rdi, gword ptr [rax+0x08]
call [rax+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
- ;; size=37 bbWeight=0 PerfScore 0.00
+ ;; size=43 bbWeight=0 PerfScore 0.00
G_M61654_IG35:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.ParallelEtwProvider
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.ParallelEtwProvider:Log
mov rdi, gword ptr [rdi]
cmp byte ptr [rdi+0x9D], 0
je G_M61654_IG36
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.ParallelEtwProvider
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
mov rax, 0xD1FFAB1E ; data for System.Threading.Tasks.ParallelEtwProvider:Log
mov rbx, gword ptr [rax]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_InternalCurrent():System.Threading.Tasks.TaskScheduler
call [rax]System.Threading.Tasks.TaskScheduler:get_InternalCurrent():System.Threading.Tasks.TaskScheduler
mov rdi, rax
mov rax, 0xD1FFAB1E ; const ptr
test rdi, rdi
cmove rdi, gword ptr [rax]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskScheduler:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TaskScheduler:get_Id():int:this
mov r15d, eax
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_CurrentId():System.Nullable`1[int]
call [rax]System.Threading.Tasks.Task:get_CurrentId():System.Nullable`1[int]
mov qword ptr [rbp-0x38], rax
- mov rdi, gword ptr [rbp-0x68]
- mov ecx, dword ptr [rdi+0x50]
+ mov r8, gword ptr [rbp-0x90]
+ mov ecx, dword ptr [r8+0x50]
mov rdi, rbx
mov esi, r15d
mov edx, dword ptr [rbp-0x34]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ParallelEtwProvider:ParallelJoin(int,int,int):this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.ParallelEtwProvider:ParallelJoin(int,int,int):this
- ;; size=178 bbWeight=0 PerfScore 0.00
+ ;; size=182 bbWeight=0 PerfScore 0.00
G_M61654_IG36:
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M61654_IG37:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1499, prolog size 45, PerfScore 7295.75, instruction count 366, allocated bytes for code 1499 (MethodHash=76770f29) for method System.Threading.Tasks.Parallel+<>c__DisplayClass19_0`2[System.__Canon,long]:<ForWorker>b__1(byref,long,byref):this (FullOpts)
+; Total bytes of code 1664, prolog size 67, PerfScore 7326.83, instruction count 376, allocated bytes for code 1664 (MethodHash=76770f29) for method System.Threading.Tasks.Parallel+<>c__DisplayClass19_0`2[System.__Canon,long]:<ForWorker>b__1(byref,long,byref):this (FullOpts)
; ============================================================ 126 (32.31 % of base) - System.Net.NetworkInformation.LinuxIPGlobalStatistics:.ctor(ubyte):this ; Assembly listing for method System.Net.NetworkInformation.LinuxIPGlobalStatistics:.ctor(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; 15 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 8 ) ref -> rbx this class-hnd single-def <System.Net.NetworkInformation.LinuxIPGlobalStatistics>
+; V00 this [V00,T00] ( 11, 7 ) ref -> rbx this class-hnd single-def <System.Net.NetworkInformation.LinuxIPGlobalStatistics>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
; V02 loc0 [V02,T12] ( 2, 1 ) ref -> rdi class-hnd exact single-def <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;* V04 tmp1 [V04 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+; V04 tmp1 [V04,T17] ( 2, 1 ) struct (144) [rbp-0x98] do-not-enreg[HS] hidden-struct-arg "stack copy for value returned via return buffer" <System.Net.NetworkInformation.IPGlobalStatisticsTable>
;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V08 tmp5 [V08,T02] ( 4, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
-;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-; V12 tmp9 [V12,T06] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V15 tmp12 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V17 tmp14 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp15 [V18,T03] ( 4, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
-;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V21 tmp18 [V21,T05] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-; V22 tmp19 [V22,T07] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V24 tmp21 [V24 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V25 tmp22 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp23 [V26,T08] ( 3, 1.50) byref -> rdi "field V06._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T10] ( 3, 1.50) int -> rsi "field V06._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T13] ( 2, 1 ) byref -> rdi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T17] ( 2, 1 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
-;* V32 tmp29 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V36 tmp33 [V36,T14] ( 2, 1 ) byref -> rdx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-;* V37 tmp34 [V37,T19] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V38 tmp35 [V38,T09] ( 3, 1.50) byref -> rdi "field V16._reference (fldOffset=0x0)" P-INDEP
-; V39 tmp36 [V39,T11] ( 3, 1.50) int -> rsi "field V16._length (fldOffset=0x8)" P-INDEP
-;* V40 tmp37 [V40 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V42 tmp39 [V42,T15] ( 2, 1 ) byref -> rdi single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V43 tmp40 [V43,T18] ( 2, 1 ) int -> rsi "field V19._length (fldOffset=0x8)" P-INDEP
-;* V44 tmp41 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-;* V46 tmp43 [V46 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
-;* V47 tmp44 [V47 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V48 tmp45 [V48,T16] ( 2, 1 ) byref -> rdx single-def "field V24._reference (fldOffset=0x0)" P-INDEP
-;* V49 tmp46 [V49,T20] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+; V07 tmp4 [V07,T18] ( 2, 1 ) struct (144) [rbp-0x128] do-not-enreg[HS] hidden-struct-arg "stack copy for value returned via return buffer" <System.Net.NetworkInformation.IPGlobalStatisticsTable>
+;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
+;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
+; V10 tmp7 [V10,T02] ( 4, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+; V13 tmp10 [V13,T04] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V14 tmp11 [V14,T06] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V15 tmp12 [V15 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V17 tmp14 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V18 tmp15 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
+; V20 tmp17 [V20,T03] ( 4, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+;* V21 tmp18 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+; V23 tmp20 [V23,T05] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V24 tmp21 [V24,T07] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V25 tmp22 [V25 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;* V26 tmp23 [V26 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V27 tmp24 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V28 tmp25 [V28,T08] ( 3, 1.50) byref -> rdi "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp26 [V29,T10] ( 3, 1.50) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
+;* V30 tmp27 [V30 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V32 tmp29 [V32,T13] ( 2, 1 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp30 [V33,T19] ( 2, 1 ) int -> rsi "field V11._length (fldOffset=0x8)" P-INDEP
+;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
+;* V36 tmp33 [V36 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V38 tmp35 [V38,T14] ( 2, 1 ) byref -> rdx single-def "field V16._reference (fldOffset=0x0)" P-INDEP
+;* V39 tmp36 [V39,T21] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
+; V40 tmp37 [V40,T09] ( 3, 1.50) byref -> rdi "field V18._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp38 [V41,T11] ( 3, 1.50) int -> rsi "field V18._length (fldOffset=0x8)" P-INDEP
+;* V42 tmp39 [V42 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V43 tmp40 [V43 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+; V44 tmp41 [V44,T15] ( 2, 1 ) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp42 [V45,T20] ( 2, 1 ) int -> rsi "field V21._length (fldOffset=0x8)" P-INDEP
+;* V46 tmp43 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
+;* V47 tmp44 [V47 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
+;* V48 tmp45 [V48 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp46 [V49 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
+; V50 tmp47 [V50,T16] ( 2, 1 ) byref -> rdx single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V51 tmp48 [V51,T22] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 296
G_M4273_IG01:
push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
+ sub rsp, 296
+ lea rbp, [rsp+0x130]
mov rbx, rdi
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=20 bbWeight=1 PerfScore 3.00
G_M4273_IG02:
test sil, sil
jne G_M4273_IG06
;; size=9 bbWeight=1 PerfScore 1.25
G_M4273_IG03:
- cmp byte ptr [rbx], bl
- lea rdi, bword ptr [rbx+0x18]
+ lea rdi, [rbp-0x98]
mov rsi, 0xD1FFAB1E ; '/proc/net/snmp6'
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ParseIPv6GlobalStatisticsFromSnmp6File(System.String):System.Net.NetworkInformation.IPGlobalStatisticsTable
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ParseIPv6GlobalStatisticsFromSnmp6File(System.String):System.Net.NetworkInformation.IPGlobalStatisticsTable
+ vmovdqu32 zmm0, zmmword ptr [rbp-0x98]
+ vmovdqu32 zmmword ptr [rbx+0x18], zmm0
+ vmovdqu32 zmm0, zmmword ptr [rbp-0x58]
+ vmovdqu32 zmmword ptr [rbx+0x58], zmm0
+ vmovdqu xmm0, xmmword ptr [rbp-0x18]
+ vmovdqu xmmword ptr [rbx+0x98], xmm0
mov rdi, 0xD1FFAB1E ; '/proc/net/ipv6_route'
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ReadAllText(System.String):System.String
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ReadAllText(System.String):System.String
test rax, rax
je SHORT G_M4273_IG04
lea rdi, bword ptr [rax+0x0C]
mov esi, dword ptr [rax+0x08]
jmp SHORT G_M4273_IG05
- ;; size=64 bbWeight=0.50 PerfScore 8.12
+ ;; size=118 bbWeight=0.50 PerfScore 14.12
G_M4273_IG04:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M4273_IG05:
mov rdx, 0xD1FFAB1E
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions:Count[ushort](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int
call [rax]System.MemoryExtensions:Count[ushort](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int
dec eax
mov dword ptr [rbx+0x08], eax
mov rdi, 0xD1FFAB1E ; '/proc/sys/net/ipv6/conf'
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ParseNumIPInterfaces(System.String):int
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ParseNumIPInterfaces(System.String):int
mov dword ptr [rbx+0x0C], eax
mov rdi, 0xD1FFAB1E ; '/proc/sys/net/ipv6/conf'
mov rsi, 0xD1FFAB1E ; 'default'
mov rdx, 0xD1FFAB1E ; 'forwarding'
mov rax, 0xD1FFAB1E ; code for System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
call [rax]System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ParseRawIntFile(System.String):int
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ParseRawIntFile(System.String):int
cmp eax, 1
sete dil
mov byte ptr [rbx+0x18], dil
mov rdi, 0xD1FFAB1E ; '/proc/net/snmp'
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ParseDefaultTtlFromFile(System.String):int
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ParseDefaultTtlFromFile(System.String):int
mov dword ptr [rbx+0x1C], eax
jmp G_M4273_IG09
;; size=155 bbWeight=0.50 PerfScore 12.88
G_M4273_IG06:
- cmp byte ptr [rbx], bl
- lea rdi, bword ptr [rbx+0x18]
+ lea rdi, [rbp-0x128]
mov rsi, 0xD1FFAB1E ; '/proc/net/snmp'
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ParseIPv4GlobalStatisticsFromSnmpFile(System.String):System.Net.NetworkInformation.IPGlobalStatisticsTable
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ParseIPv4GlobalStatisticsFromSnmpFile(System.String):System.Net.NetworkInformation.IPGlobalStatisticsTable
+ vmovdqu32 zmm0, zmmword ptr [rbp-0x128]
+ vmovdqu32 zmmword ptr [rbx+0x18], zmm0
+ vmovdqu32 zmm0, zmmword ptr [rbp-0xE8]
+ vmovdqu32 zmmword ptr [rbx+0x58], zmm0
+ vmovdqu xmm0, xmmword ptr [rbp-0xA8]
+ vmovdqu xmmword ptr [rbx+0x98], xmm0
mov rdi, 0xD1FFAB1E ; '/proc/net/route'
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ReadAllText(System.String):System.String
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ReadAllText(System.String):System.String
test rax, rax
je SHORT G_M4273_IG07
lea rdi, bword ptr [rax+0x0C]
mov esi, dword ptr [rax+0x08]
jmp SHORT G_M4273_IG08
- ;; size=64 bbWeight=0.50 PerfScore 8.12
+ ;; size=121 bbWeight=0.50 PerfScore 14.12
G_M4273_IG07:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M4273_IG08:
mov rdx, 0xD1FFAB1E
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions:Count[ushort](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int
call [rax]System.MemoryExtensions:Count[ushort](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int
dec eax
mov dword ptr [rbx+0x08], eax
mov rdi, 0xD1FFAB1E ; '/proc/sys/net/ipv4/conf'
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.StringParsingHelpers:ParseNumIPInterfaces(System.String):int
call [rax]System.Net.NetworkInformation.StringParsingHelpers:ParseNumIPInterfaces(System.String):int
mov dword ptr [rbx+0x0C], eax
;; size=57 bbWeight=0.50 PerfScore 4.75
G_M4273_IG09:
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkInformation.LinuxIPGlobalStatistics:GetNumIPAddresses():int
call [rax]System.Net.NetworkInformation.LinuxIPGlobalStatistics:GetNumIPAddresses():int
mov dword ptr [rbx+0x10], eax
;; size=15 bbWeight=1 PerfScore 4.25
G_M4273_IG10:
- add rsp, 8
+ vzeroupper
+ add rsp, 296
pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 390, prolog size 8, PerfScore 45.88, instruction count 80, allocated bytes for code 390 (MethodHash=69d9ef4e) for method System.Net.NetworkInformation.LinuxIPGlobalStatistics:.ctor(ubyte):this (FullOpts)
+; Total bytes of code 516, prolog size 17, PerfScore 58.12, instruction count 91, allocated bytes for code 516 (MethodHash=69d9ef4e) for method System.Net.NetworkInformation.LinuxIPGlobalStatistics:.ctor(ubyte):this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/f508ed0e71cc21a956d0cd30c17a2d8f |
Top method improvements-53 (-29.94 % of base) - System.Net.Http.Http2Connection:SplitBuffer(System.ReadOnlyMemory`1[ubyte],int):System.ValueTuple`2[System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte]] ; Assembly listing for method System.Net.Http.Http2Connection:SplitBuffer(System.ReadOnlyMemory`1[ubyte],int):System.ValueTuple`2[System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[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; 8 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T00] ( 15, 9 ) byref -> rbx single-def
-; V01 arg0 [V01,T02] ( 5, 5 ) struct (16) [rbp-0x38] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlyMemory`1[ubyte]>
-; V02 arg1 [V02,T01] ( 7, 5 ) int -> r15 single-def
+; V00 RetBuf [V00,T00] ( 15, 9 ) long -> rdi single-def
+; V01 arg0 [V01,T02] ( 5, 5 ) struct (16) [rbp-0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlyMemory`1[ubyte]>
+; V02 arg1 [V02,T01] ( 7, 5 ) int -> rcx single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlyMemory`1[ubyte]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte]]>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlyMemory`1[ubyte]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte]]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Memory`1[ubyte]>
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
-; V21 tmp18 [V21,T06] ( 2, 2 ) int -> [rbp-0x3C] spill-single-def "Inlining Arg"
-; V22 tmp19 [V22,T07] ( 2, 2 ) int -> r14 "Inlining Arg"
+; V21 tmp18 [V21,T06] ( 2, 2 ) int -> rax "Inlining Arg"
+; V22 tmp19 [V22,T07] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._object (fldOffset=0x0)" P-INDEP
;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0xc)" P-INDEP
;* V26 tmp23 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
;* V28 tmp25 [V28 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0xc)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._object (fldOffset=0x0)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x8)" P-INDEP
;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0xc)" P-INDEP
;* V32 tmp29 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._object (fldOffset=0x0)" P-INDEP
;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0xc)" P-INDEP
;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._object (fldOffset=0x0)" P-INDEP
;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0xc)" P-INDEP
;* V38 tmp35 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._object (fldOffset=0x0)" P-INDEP
;* V39 tmp36 [V39 ] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
;* V40 tmp37 [V40 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0xc)" P-INDEP
;* V41 tmp38 [V41 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._object (fldOffset=0x0)" P-INDEP
;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
;* V43 tmp40 [V43 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
;* V44 tmp41 [V44 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._object (fldOffset=0x0)" P-INDEP
;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "field V16._index (fldOffset=0x8)" P-INDEP
;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0xc)" P-INDEP
;* V47 tmp44 [V47 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._object (fldOffset=0x0)" P-INDEP
;* V48 tmp45 [V48 ] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x8)" P-INDEP
;* V49 tmp46 [V49 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0xc)" P-INDEP
-; V50 tmp47 [V50,T04] ( 4, 2.50) ref -> r13 single-def "V01.[000..008)"
-; V51 tmp48 [V51,T05] ( 4, 2.50) int -> r12 "V01.[008..012)"
-; V52 tmp49 [V52,T03] ( 5, 3.50) int -> r14 "V01.[012..016)"
+; V50 tmp47 [V50,T04] ( 4, 2.50) ref -> r15 single-def "V01.[000..008)"
+; V51 tmp48 [V51,T05] ( 4, 2.50) int -> r14 "V01.[008..012)"
+; V52 tmp49 [V52,T03] ( 5, 3.50) int -> rbx "V01.[012..016)"
;* V53 tmp50 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)"
;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)"
;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "V05.[012..016)"
;* V56 tmp53 [V56 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[016..024)"
;* V57 tmp54 [V57 ] ( 0, 0 ) int -> zero-ref "V05.[024..028)"
;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "V05.[028..032)"
;* V59 tmp56 [V59 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[000..008)"
;* V60 tmp57 [V60 ] ( 0, 0 ) int -> zero-ref "V09.[008..012)"
;* V61 tmp58 [V61 ] ( 0, 0 ) int -> zero-ref "V09.[012..016)"
;* V62 tmp59 [V62 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[016..024)"
;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "V09.[024..028)"
;* V64 tmp61 [V64 ] ( 0, 0 ) int -> zero-ref "V09.[028..032)"
;
; Lcl frame size = 24
G_M43810_IG01:
push rbp
push r15
push r14
- push r13
- push r12
push rbx
sub rsp, 24
- lea rbp, [rsp+0x40]
- mov gword ptr [rbp-0x38], rsi
- mov qword ptr [rbp-0x30], rdx
- mov rbx, rdi
- mov r15d, ecx
- ;; size=33 bbWeight=1 PerfScore 9.25
+ lea rbp, [rsp+0x30]
+ mov gword ptr [rbp-0x28], rsi
+ mov qword ptr [rbp-0x20], rdx
+ ;; size=23 bbWeight=1 PerfScore 6.75
G_M43810_IG02:
- mov r14d, dword ptr [rbp-0x2C]
- mov r13, gword ptr [rbp-0x38]
- mov r12d, dword ptr [rbp-0x30]
- cmp r14d, r15d
+ mov ebx, dword ptr [rbp-0x1C]
+ mov r15, gword ptr [rbp-0x28]
+ mov r14d, dword ptr [rbp-0x20]
+ cmp ebx, ecx
jle SHORT G_M43810_IG05
- ;; size=17 bbWeight=1 PerfScore 4.25
+ ;; size=15 bbWeight=1 PerfScore 4.25
G_M43810_IG03:
- cmp r15d, r14d
+ cmp ecx, ebx
ja SHORT G_M43810_IG04
- lea eax, [r12+r15]
- mov dword ptr [rbp-0x3C], eax
- sub r14d, r15d
- mov rdi, rbx
- mov rsi, r13
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [rbx+0x08], r12d
- mov dword ptr [rbx+0x0C], r15d
- lea rdi, bword ptr [rbx+0x10]
- mov rsi, r13
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov r13d, dword ptr [rbp-0x3C]
- mov dword ptr [rbx+0x18], r13d
- mov dword ptr [rbx+0x1C], r14d
+ lea eax, [r14+rcx]
+ sub ebx, ecx
+ mov gword ptr [rdi], r15
+ mov dword ptr [rdi+0x08], r14d
+ mov dword ptr [rdi+0x0C], ecx
+ mov gword ptr [rdi+0x10], r15
+ mov dword ptr [rdi+0x18], eax
+ mov dword ptr [rdi+0x1C], ebx
jmp SHORT G_M43810_IG08
- ;; size=60 bbWeight=0.50 PerfScore 6.62
+ ;; size=32 bbWeight=0.50 PerfScore 5.00
G_M43810_IG04:
mov edi, 33
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M43810_IG05:
- mov rdi, rbx
- mov rsi, r13
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [rbx+0x08], r12d
- mov dword ptr [rbx+0x0C], r14d
+ mov gword ptr [rdi], r15
+ mov dword ptr [rdi+0x08], r14d
+ mov dword ptr [rdi+0x0C], ebx
xor rax, rax
- mov gword ptr [rbx+0x10], rax
- ;; size=25 bbWeight=0.50 PerfScore 2.38
+ mov gword ptr [rdi+0x10], rax
+ ;; size=16 bbWeight=0.50 PerfScore 2.12
G_M43810_IG06:
- mov dword ptr [rbx+0x18], eax
+ mov dword ptr [rdi+0x18], eax
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M43810_IG07:
- mov dword ptr [rbx+0x1C], eax
+ mov dword ptr [rdi+0x1C], eax
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M43810_IG08:
- mov rax, rbx
+ mov rax, rdi
;; size=3 bbWeight=1 PerfScore 0.25
G_M43810_IG09:
add rsp, 24
pop rbx
- pop r12
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=11 bbWeight=1 PerfScore 3.25
-; Total bytes of code 177, prolog size 19, PerfScore 29.88, instruction count 56, allocated bytes for code 177 (MethodHash=99b654dd) for method System.Net.Http.Http2Connection:SplitBuffer(System.ReadOnlyMemory`1[ubyte],int):System.ValueTuple`2[System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte]] (FullOpts)
+; Total bytes of code 124, prolog size 15, PerfScore 24.50, instruction count 42, allocated bytes for code 124 (MethodHash=99b654dd) for method System.Net.Http.Http2Connection:SplitBuffer(System.ReadOnlyMemory`1[ubyte],int):System.ValueTuple`2[System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte]] (FullOpts)
; ============================================================ -51 (-53.68 % of base) - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:this ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially 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] ( 7, 7 ) ref -> rbx this class-hnd single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
-; V01 RetBuf [V01,T01] ( 7, 7 ) byref -> r15 single-def
+; V00 this [V00,T00] ( 7, 7 ) ref -> rdi this class-hnd single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+; V01 RetBuf [V01,T01] ( 7, 7 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp5 [V07,T02] ( 2, 2 ) ref -> rsi single-def "field V03._root (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T03] ( 2, 2 ) ref -> r14 single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
-; V09 tmp7 [V09,T04] ( 2, 2 ) ref -> r12 single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-; V10 tmp8 [V10,T05] ( 2, 2 ) int -> r13 "field V03._count (fldOffset=0x18)" P-INDEP
+; V07 tmp5 [V07,T02] ( 2, 2 ) ref -> rax single-def "field V03._root (fldOffset=0x0)" P-INDEP
+; V08 tmp6 [V08,T03] ( 2, 2 ) ref -> rcx single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
+; V09 tmp7 [V09,T04] ( 2, 2 ) ref -> r8 single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V10 tmp8 [V10,T05] ( 2, 2 ) int -> rdx "field V03._count (fldOffset=0x18)" P-INDEP
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56214_IG01:
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 16
- mov qword ptr [rsp+0x08], rdi
- mov rbx, rdi
- mov r15, rsi
- ;; size=24 bbWeight=1 PerfScore 6.75
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M56214_IG02:
- cmp dword ptr [rbx], ebx
- mov rsi, gword ptr [rbx+0x10]
- mov r14, gword ptr [rbx+0x08]
- mov r13d, dword ptr [rbx+0x20]
- mov r12, gword ptr [rbx+0x18]
- mov rdi, r15
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [r15+0x08]
- mov rsi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [r15+0x10]
- mov rsi, r12
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [r15+0x18], r13d
- mov rax, r15
- ;; size=57 bbWeight=1 PerfScore 17.00
+ cmp dword ptr [rdi], edi
+ mov rax, gword ptr [rdi+0x10]
+ mov rcx, gword ptr [rdi+0x08]
+ mov edx, dword ptr [rdi+0x20]
+ mov r8, gword ptr [rdi+0x18]
+ mov gword ptr [rsi], rax
+ mov gword ptr [rsi+0x08], rcx
+ mov gword ptr [rsi+0x10], r8
+ mov dword ptr [rsi+0x18], edx
+ mov rax, rsi
+ ;; size=34 bbWeight=1 PerfScore 15.25
G_M56214_IG03:
- add rsp, 16
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
+ add rsp, 8
ret
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 95, prolog size 18, PerfScore 27.50, instruction count 31, allocated bytes for code 95 (MethodHash=54d12469) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:this (FullOpts)
+; Total bytes of code 44, prolog size 5, PerfScore 18.50, instruction count 14, allocated bytes for code 44 (MethodHash=54d12469) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:this (FullOpts)
; ============================================================ -47 (-18.50 % of base) - System.Collections.Immutable.ImmutableHashSet`1+Builder[double]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]:this ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1+Builder[double]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]: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; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 6, 6 ) ref -> rdi this class-hnd single-def <System.Collections.Immutable.ImmutableHashSet`1+Builder[double]>
-; V01 RetBuf [V01,T00] ( 7, 7 ) byref -> rbx single-def
+; V01 RetBuf [V01,T00] ( 7, 7 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
-; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]>
-; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[double]>
-; V06 tmp4 [V06,T05] ( 3, 6 ) int -> r13 "Inlining Arg"
-; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]>
+; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]>
+; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[double]>
+; V06 tmp4 [V06,T05] ( 3, 6 ) int -> rdi "Inlining Arg"
+; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rsi single-def "field V03._root (fldOffset=0x0)" P-INDEP
-; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> r15 single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
-; V11 tmp9 [V11,T08] ( 2, 2 ) ref -> r14 single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-; V12 tmp10 [V12,T10] ( 2, 2 ) int -> r13 "field V03._count (fldOffset=0x18)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rax single-def "field V03._root (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> rcx single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
+; V11 tmp9 [V11,T08] ( 2, 2 ) ref -> rdx single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V12 tmp10 [V12,T10] ( 2, 2 ) int -> rdi "field V03._count (fldOffset=0x18)" P-INDEP
; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
;
; Lcl frame size = 0
G_M2428_IG01:
push rbp
- push r15
- push r14
- push r13
- push rbx
- lea rbp, [rsp+0x20]
- mov rbx, rsi
- ;; size=16 bbWeight=1 PerfScore 5.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M2428_IG02:
- mov rsi, gword ptr [rdi+0x08]
- mov r15, gword ptr [rdi+0x10]
- mov r14, gword ptr [rdi+0x18]
- mov r13d, dword ptr [rdi+0x28]
- test rsi, rsi
+ mov rax, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdi+0x10]
+ mov rdx, gword ptr [rdi+0x18]
+ mov edi, dword ptr [rdi+0x28]
+ test rax, rax
je G_M2428_IG07
- test r15, r15
- je G_M2428_IG06
- test r13d, r13d
+ test rcx, rcx
+ je SHORT G_M2428_IG06
+ test edi, edi
jl SHORT G_M2428_IG05
- test r14, r14
+ test rdx, rdx
je SHORT G_M2428_IG04
- mov rdi, rbx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, r15
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x10]
- mov rsi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [rbx+0x18], r13d
- mov rax, rbx
- ;; size=83 bbWeight=1 PerfScore 19.00
+ mov gword ptr [rsi], rax
+ mov gword ptr [rsi+0x08], rcx
+ mov gword ptr [rsi+0x10], rdx
+ mov dword ptr [rsi+0x18], edi
+ mov rax, rsi
+ ;; size=55 bbWeight=1 PerfScore 17.25
G_M2428_IG03:
- pop rbx
- pop r13
- pop r14
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M2428_IG04:
mov edi, 0x541
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M2428_IG05:
mov edi, 0x505
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0.50 PerfScore 2.75
G_M2428_IG06:
mov edi, 0x4B5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M2428_IG07:
mov edi, 0x4AB
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 254, prolog size 13, PerfScore 38.88, instruction count 64, allocated bytes for code 254 (MethodHash=7b4df683) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[double]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]:this (FullOpts)
+; Total bytes of code 207, prolog size 4, PerfScore 30.62, instruction count 50, allocated bytes for code 207 (MethodHash=7b4df683) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[double]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]:this (FullOpts)
; ============================================================ -47 (-18.50 % of base) - System.Collections.Immutable.ImmutableHashSet`1+Builder[int]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]:this ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1+Builder[int]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 6, 6 ) ref -> rdi this class-hnd single-def <System.Collections.Immutable.ImmutableHashSet`1+Builder[int]>
-; V01 RetBuf [V01,T00] ( 7, 7 ) byref -> rbx single-def
+; V01 RetBuf [V01,T00] ( 7, 7 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
-; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]>
-; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
-; V06 tmp4 [V06,T05] ( 3, 6 ) int -> r13 "Inlining Arg"
-; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]>
+; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]>
+; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
+; V06 tmp4 [V06,T05] ( 3, 6 ) int -> rdi "Inlining Arg"
+; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rsi single-def "field V03._root (fldOffset=0x0)" P-INDEP
-; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> r15 single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
-; V11 tmp9 [V11,T08] ( 2, 2 ) ref -> r14 single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-; V12 tmp10 [V12,T10] ( 2, 2 ) int -> r13 "field V03._count (fldOffset=0x18)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rax single-def "field V03._root (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> rcx single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
+; V11 tmp9 [V11,T08] ( 2, 2 ) ref -> rdx single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V12 tmp10 [V12,T10] ( 2, 2 ) int -> rdi "field V03._count (fldOffset=0x18)" P-INDEP
; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
;
; Lcl frame size = 0
G_M55612_IG01:
push rbp
- push r15
- push r14
- push r13
- push rbx
- lea rbp, [rsp+0x20]
- mov rbx, rsi
- ;; size=16 bbWeight=1 PerfScore 5.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M55612_IG02:
- mov rsi, gword ptr [rdi+0x08]
- mov r15, gword ptr [rdi+0x10]
- mov r14, gword ptr [rdi+0x18]
- mov r13d, dword ptr [rdi+0x28]
- test rsi, rsi
+ mov rax, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdi+0x10]
+ mov rdx, gword ptr [rdi+0x18]
+ mov edi, dword ptr [rdi+0x28]
+ test rax, rax
je G_M55612_IG07
- test r15, r15
- je G_M55612_IG06
- test r13d, r13d
+ test rcx, rcx
+ je SHORT G_M55612_IG06
+ test edi, edi
jl SHORT G_M55612_IG05
- test r14, r14
+ test rdx, rdx
je SHORT G_M55612_IG04
- mov rdi, rbx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, r15
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x10]
- mov rsi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [rbx+0x18], r13d
- mov rax, rbx
- ;; size=83 bbWeight=1 PerfScore 19.00
+ mov gword ptr [rsi], rax
+ mov gword ptr [rsi+0x08], rcx
+ mov gword ptr [rsi+0x10], rdx
+ mov dword ptr [rsi+0x18], edi
+ mov rax, rsi
+ ;; size=55 bbWeight=1 PerfScore 17.25
G_M55612_IG03:
- pop rbx
- pop r13
- pop r14
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M55612_IG04:
mov edi, 0x541
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M55612_IG05:
mov edi, 0x505
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0.50 PerfScore 2.75
G_M55612_IG06:
mov edi, 0x4B5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M55612_IG07:
mov edi, 0x4AB
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 254, prolog size 13, PerfScore 38.88, instruction count 64, allocated bytes for code 254 (MethodHash=85be26c3) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[int]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]:this (FullOpts)
+; Total bytes of code 207, prolog size 4, PerfScore 30.62, instruction count 50, allocated bytes for code 207 (MethodHash=85be26c3) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[int]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]:this (FullOpts)
; ============================================================ -47 (-18.50 % of base) - System.Collections.Immutable.ImmutableHashSet`1+Builder[long]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[long]:this ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1+Builder[long]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[long]: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; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 6, 6 ) ref -> rdi this class-hnd single-def <System.Collections.Immutable.ImmutableHashSet`1+Builder[long]>
-; V01 RetBuf [V01,T00] ( 7, 7 ) byref -> rbx single-def
+; V01 RetBuf [V01,T00] ( 7, 7 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[long]>
-; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[long]]>
-; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[long]>
-; V06 tmp4 [V06,T05] ( 3, 6 ) int -> r13 "Inlining Arg"
-; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[long]]>
+; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[long]]>
+; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[long]>
+; V06 tmp4 [V06,T05] ( 3, 6 ) int -> rdi "Inlining Arg"
+; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[long]]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rsi single-def "field V03._root (fldOffset=0x0)" P-INDEP
-; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> r15 single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
-; V11 tmp9 [V11,T08] ( 2, 2 ) ref -> r14 single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-; V12 tmp10 [V12,T10] ( 2, 2 ) int -> r13 "field V03._count (fldOffset=0x18)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rax single-def "field V03._root (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> rcx single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
+; V11 tmp9 [V11,T08] ( 2, 2 ) ref -> rdx single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V12 tmp10 [V12,T10] ( 2, 2 ) int -> rdi "field V03._count (fldOffset=0x18)" P-INDEP
; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
;
; Lcl frame size = 0
G_M21788_IG01:
push rbp
- push r15
- push r14
- push r13
- push rbx
- lea rbp, [rsp+0x20]
- mov rbx, rsi
- ;; size=16 bbWeight=1 PerfScore 5.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M21788_IG02:
- mov rsi, gword ptr [rdi+0x08]
- mov r15, gword ptr [rdi+0x10]
- mov r14, gword ptr [rdi+0x18]
- mov r13d, dword ptr [rdi+0x28]
- test rsi, rsi
+ mov rax, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdi+0x10]
+ mov rdx, gword ptr [rdi+0x18]
+ mov edi, dword ptr [rdi+0x28]
+ test rax, rax
je G_M21788_IG07
- test r15, r15
- je G_M21788_IG06
- test r13d, r13d
+ test rcx, rcx
+ je SHORT G_M21788_IG06
+ test edi, edi
jl SHORT G_M21788_IG05
- test r14, r14
+ test rdx, rdx
je SHORT G_M21788_IG04
- mov rdi, rbx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, r15
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x10]
- mov rsi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [rbx+0x18], r13d
- mov rax, rbx
- ;; size=83 bbWeight=1 PerfScore 19.00
+ mov gword ptr [rsi], rax
+ mov gword ptr [rsi+0x08], rcx
+ mov gword ptr [rsi+0x10], rdx
+ mov dword ptr [rsi+0x18], edi
+ mov rax, rsi
+ ;; size=55 bbWeight=1 PerfScore 17.25
G_M21788_IG03:
- pop rbx
- pop r13
- pop r14
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M21788_IG04:
mov edi, 0x541
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M21788_IG05:
mov edi, 0x505
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0.50 PerfScore 2.75
G_M21788_IG06:
mov edi, 0x4B5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M21788_IG07:
mov edi, 0x4AB
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 254, prolog size 13, PerfScore 38.88, instruction count 64, allocated bytes for code 254 (MethodHash=cc77aae3) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[long]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[long]:this (FullOpts)
+; Total bytes of code 207, prolog size 4, PerfScore 30.62, instruction count 50, allocated bytes for code 207 (MethodHash=cc77aae3) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[long]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[long]:this (FullOpts)
; ============================================================ -47 (-18.50 % of base) - System.Collections.Immutable.ImmutableHashSet`1+Builder[short]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[short]:this ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1+Builder[short]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[short]: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; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 6, 6 ) ref -> rdi this class-hnd single-def <System.Collections.Immutable.ImmutableHashSet`1+Builder[short]>
-; V01 RetBuf [V01,T00] ( 7, 7 ) byref -> rbx single-def
+; V01 RetBuf [V01,T00] ( 7, 7 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[short]>
-; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[short]]>
-; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[short]>
-; V06 tmp4 [V06,T05] ( 3, 6 ) int -> r13 "Inlining Arg"
-; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[short]]>
+; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[short]]>
+; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[short]>
+; V06 tmp4 [V06,T05] ( 3, 6 ) int -> rdi "Inlining Arg"
+; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[short]]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rsi single-def "field V03._root (fldOffset=0x0)" P-INDEP
-; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> r15 single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
-; V11 tmp9 [V11,T08] ( 2, 2 ) ref -> r14 single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-; V12 tmp10 [V12,T10] ( 2, 2 ) int -> r13 "field V03._count (fldOffset=0x18)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> rax single-def "field V03._root (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> rcx single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
+; V11 tmp9 [V11,T08] ( 2, 2 ) ref -> rdx single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V12 tmp10 [V12,T10] ( 2, 2 ) int -> rdi "field V03._count (fldOffset=0x18)" P-INDEP
; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
;
; Lcl frame size = 0
G_M65532_IG01:
push rbp
- push r15
- push r14
- push r13
- push rbx
- lea rbp, [rsp+0x20]
- mov rbx, rsi
- ;; size=16 bbWeight=1 PerfScore 5.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M65532_IG02:
- mov rsi, gword ptr [rdi+0x08]
- mov r15, gword ptr [rdi+0x10]
- mov r14, gword ptr [rdi+0x18]
- mov r13d, dword ptr [rdi+0x28]
- test rsi, rsi
+ mov rax, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdi+0x10]
+ mov rdx, gword ptr [rdi+0x18]
+ mov edi, dword ptr [rdi+0x28]
+ test rax, rax
je G_M65532_IG07
- test r15, r15
- je G_M65532_IG06
- test r13d, r13d
+ test rcx, rcx
+ je SHORT G_M65532_IG06
+ test edi, edi
jl SHORT G_M65532_IG05
- test r14, r14
+ test rdx, rdx
je SHORT G_M65532_IG04
- mov rdi, rbx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, r15
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x10]
- mov rsi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [rbx+0x18], r13d
- mov rax, rbx
- ;; size=83 bbWeight=1 PerfScore 19.00
+ mov gword ptr [rsi], rax
+ mov gword ptr [rsi+0x08], rcx
+ mov gword ptr [rsi+0x10], rdx
+ mov dword ptr [rsi+0x18], edi
+ mov rax, rsi
+ ;; size=55 bbWeight=1 PerfScore 17.25
G_M65532_IG03:
- pop rbx
- pop r13
- pop r14
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M65532_IG04:
mov edi, 0x541
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M65532_IG05:
mov edi, 0x505
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0.50 PerfScore 2.75
G_M65532_IG06:
mov edi, 0x4B5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M65532_IG07:
mov edi, 0x4AB
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 254, prolog size 13, PerfScore 38.88, instruction count 64, allocated bytes for code 254 (MethodHash=43bf0003) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[short]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[short]:this (FullOpts)
+; Total bytes of code 207, prolog size 4, PerfScore 30.62, instruction count 50, allocated bytes for code 207 (MethodHash=43bf0003) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[short]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[short]:this (FullOpts)
; ============================================================ -47 (-17.28 % of base) - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:this ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]: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; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 7, 7 ) ref -> rbx this class-hnd single-def <System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]>
-; V01 RetBuf [V01,T01] ( 7, 7 ) byref -> r15 single-def
+; V01 RetBuf [V01,T01] ( 7, 7 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V07 tmp5 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
;* V09 tmp7 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp8 [V10,T05] ( 3, 6 ) int -> r12 "Inlining Arg"
-; V11 tmp9 [V11,T04] ( 3, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+; V10 tmp8 [V10,T05] ( 3, 6 ) int -> rdx "Inlining Arg"
+; V11 tmp9 [V11,T04] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
;* V12 tmp10 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp12 [V14,T06] ( 2, 2 ) ref -> rsi single-def "field V03._root (fldOffset=0x0)" P-INDEP
-; V15 tmp13 [V15,T07] ( 2, 2 ) ref -> r14 single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
-; V16 tmp14 [V16,T08] ( 2, 2 ) ref -> r13 single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-; V17 tmp15 [V17,T10] ( 2, 2 ) int -> r12 "field V03._count (fldOffset=0x18)" P-INDEP
+; V14 tmp12 [V14,T06] ( 2, 2 ) ref -> rax single-def "field V03._root (fldOffset=0x0)" P-INDEP
+; V15 tmp13 [V15,T07] ( 2, 2 ) ref -> rdi single-def "field V03._equalityComparer (fldOffset=0x8)" P-INDEP
+; V16 tmp14 [V16,T08] ( 2, 2 ) ref -> rcx single-def "field V03._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V17 tmp15 [V17,T10] ( 2, 2 ) int -> rdx "field V03._count (fldOffset=0x18)" P-INDEP
; V18 tmp16 [V18,T09] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
;
; Lcl frame size = 8
G_M58268_IG01:
push rbp
- push r15
- push r14
- push r13
- push r12
push rbx
push rax
- lea rbp, [rsp+0x30]
- mov qword ptr [rbp-0x30], rdi
+ lea rbp, [rsp+0x10]
+ mov qword ptr [rbp-0x10], rdi
mov rbx, rdi
- mov r15, rsi
- ;; size=26 bbWeight=1 PerfScore 9.00
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M58268_IG02:
cmp dword ptr [rbx], ebx
- mov rsi, gword ptr [rbx+0x08]
- mov r14, gword ptr [rbx+0x10]
- mov r13, gword ptr [rbx+0x18]
- mov r12d, dword ptr [rbx+0x28]
- test rsi, rsi
+ mov rax, gword ptr [rbx+0x08]
+ mov rdi, gword ptr [rbx+0x10]
+ mov rcx, gword ptr [rbx+0x18]
+ mov edx, dword ptr [rbx+0x28]
+ test rax, rax
je G_M58268_IG07
- test r14, r14
- je G_M58268_IG06
- test r12d, r12d
+ test rdi, rdi
+ je SHORT G_M58268_IG06
+ test edx, edx
jl SHORT G_M58268_IG05
- test r13, r13
+ test rcx, rcx
je SHORT G_M58268_IG04
- mov rdi, r15
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [r15+0x08]
- mov rsi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- lea rdi, bword ptr [r15+0x10]
- mov rsi, r13
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [r15+0x18], r12d
- mov rax, r15
- ;; size=85 bbWeight=1 PerfScore 22.00
+ mov gword ptr [rsi], rax
+ mov gword ptr [rsi+0x08], rdi
+ mov gword ptr [rsi+0x10], rcx
+ mov dword ptr [rsi+0x18], edx
+ mov rax, rsi
+ ;; size=57 bbWeight=1 PerfScore 20.25
G_M58268_IG03:
add rsp, 8
pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=7 bbWeight=1 PerfScore 2.25
G_M58268_IG04:
mov edi, 0x541
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M58268_IG05:
mov edi, 0x505
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailRange(System.String,System.String)
call [rax]System.Collections.Immutable.Requires:FailRange(System.String,System.String)
int3
;; size=38 bbWeight=0.50 PerfScore 2.75
G_M58268_IG06:
mov edi, 0x4B5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
G_M58268_IG07:
mov edi, 0x4AB
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
int3
;; size=36 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 272, prolog size 20, PerfScore 45.88, instruction count 71, allocated bytes for code 272 (MethodHash=70ea1c63) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:this (FullOpts)
+; Total bytes of code 225, prolog size 12, PerfScore 37.88, instruction count 57, allocated bytes for code 225 (MethodHash=70ea1c63) for method System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/bf223300c92239c020ced4745d2d7046 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 18 minutes 16 seconds (remote runner delay: 1 minute 19 seconds).
dotnet/runtime#112060
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: