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
[X64] [AndyAyersMS] Stack allocate unescaped boxes #467
Comments
Top method regressions130 (6.36 % of base) - System.Net.Security.SslStreamCertificateContext:Create(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,ubyte,System.Net.Security.SslCertificateTrust,ubyte):System.Net.Security.SslStreamCertificateContext ; Assembly listing for method System.Net.Security.SslStreamCertificateContext:Create(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,ubyte,System.Net.Security.SslCertificateTrust,ubyte):System.Net.Security.SslStreamCertificateContext (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; 33 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T18] ( 6, 5.50) ref -> r15 class-hnd single-def <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V01 arg1 [V01,T22] ( 4, 3.50) ref -> r13 class-hnd single-def <System.Security.Cryptography.X509Certificates.X509Certificate2Collection>
; V02 arg2 [V02,T20] ( 4, 4 ) ubyte -> r14 single-def
; V03 arg3 [V03,T16] ( 8, 6 ) ref -> rbx class-hnd single-def <System.Net.Security.SslCertificateTrust>
; V04 arg4 [V04,T24] ( 3, 3 ) ubyte -> r12 single-def
-; V05 loc0 [V05,T19] ( 5, 7.25) ref -> [rbp-0x50] class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate2[]>
-; V06 loc1 [V06,T27] ( 5, 3.50) ref -> [rbp-0x58] class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate2>
-;* V07 loc2 [V07,T55] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc3 [V08,T02] ( 25, 20 ) ref -> [rbp-0x60] class-hnd exact EH-live spill-single-def <System.Security.Cryptography.X509Certificates.X509Chain>
+; V05 loc0 [V05,T19] ( 5, 7.25) ref -> [rbp-0x90] class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate2[]>
+; V06 loc1 [V06,T27] ( 5, 3.50) ref -> [rbp-0x98] class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate2>
+;* V07 loc2 [V07,T54] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
+; V08 loc3 [V08,T02] ( 25, 20 ) ref -> [rbp-0xA0] class-hnd exact EH-live spill-single-def <System.Security.Cryptography.X509Certificates.X509Chain>
;* V09 loc4 [V09 ] ( 0, 0 ) ubyte -> zero-ref
; V10 loc5 [V10,T15] ( 10, 9.25) int -> r13
; V11 loc6 [V11,T25] ( 3, 5 ) int -> [rbp-0x2C] spill-single-def
; V12 loc7 [V12,T23] ( 3, 5 ) ref -> rax class-hnd exact single-def <System.Security.Cryptography.X509Certificates.X509ChainStatus[]>
-;* V13 loc8 [V13,T58] ( 0, 0 ) int -> zero-ref
+;* V13 loc8 [V13,T57] ( 0, 0 ) int -> zero-ref
;* V14 loc9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Security.Cryptography.X509Certificates.X509ChainStatus>
; V15 loc10 [V15,T01] ( 6, 20.25) int -> [rbp-0x30]
; V16 loc11 [V16,T04] ( 6, 17 ) int -> r13
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V18 tmp1 [V18,T03] ( 11, 18 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
+; V18 tmp1 [V18,T03] ( 11, 18 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
; V19 tmp2 [V19,T21] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2]>
-; V20 tmp3 [V20,T14] ( 7, 13 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.Security.SslStreamCertificateContext>
+; V20 tmp3 [V20,T14] ( 7, 13 ) ref -> [rbp-0xB0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.Security.SslStreamCertificateContext>
;* V21 tmp4 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
;* V22 tmp5 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V23 tmp6 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Security.Cryptography.X509Certificates.X509ChainStatusFlags>
;* V24 tmp7 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Security.Cryptography.X509Certificates.X509ChainStatusFlags>
-; V25 tmp8 [V25,T51] ( 3, 1.50) int -> rax
-; V26 tmp9 [V26,T31] ( 3, 3 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "dup spill" <System.Object[]>
-; V27 tmp10 [V27,T36] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
+; V25 tmp8 [V25,T50] ( 3, 1.50) int -> rax
+; V26 tmp9 [V26,T31] ( 3, 3 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V27 tmp10 [V27,T35] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
;* V28 tmp11 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Security.Cryptography.X509Certificates.X509Certificate2Collection>
-; V29 tmp12 [V29,T60] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
+; V29 tmp12 [V29,T59] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
; V30 tmp13 [V30,T28] ( 2, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Object>
-; V31 tmp14 [V31,T37] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainPolicy>
+; V31 tmp14 [V31,T36] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainPolicy>
; V32 tmp15 [V32,T29] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainPolicy>
; V33 tmp16 [V33,T30] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainPolicy>
;* V34 tmp17 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainPolicy>
;* V35 tmp18 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
-; V36 tmp19 [V36,T38] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
-; V37 tmp20 [V37,T39] ( 2, 2 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.FormattableString>
-; V38 tmp21 [V38,T40] ( 2, 2 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "non-inline candidate call" <System.String>
+; V36 tmp19 [V36,T37] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
+; V37 tmp20 [V37,T38] ( 2, 2 ) ref -> [rbp-0xC0] class-hnd spill-single-def "Inlining Arg" <System.FormattableString>
+; V38 tmp21 [V38,T39] ( 2, 2 ) ref -> [rbp-0xC8] class-hnd exact spill-single-def "non-inline candidate call" <System.String>
;* V39 tmp22 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
-; V40 tmp23 [V40,T52] ( 2, 1 ) ref -> rdi single-def
-;* V41 tmp24 [V41,T59] ( 0, 0 ) int -> zero-ref
-; V42 tmp25 [V42,T53] ( 2, 1 ) ref -> rdx single-def
-;* V43 tmp26 [V43,T57] ( 0, 0 ) ref -> zero-ref single-def
-; V44 tmp27 [V44,T41] ( 2, 2 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
+; V40 tmp23 [V40,T51] ( 2, 1 ) ref -> rdi single-def
+;* V41 tmp24 [V41,T58] ( 0, 0 ) int -> zero-ref
+; V42 tmp25 [V42,T52] ( 2, 1 ) ref -> rdx single-def
+;* V43 tmp26 [V43,T56] ( 0, 0 ) ref -> zero-ref single-def
+; V44 tmp27 [V44,T40] ( 2, 2 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
;* V45 tmp28 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V46 tmp29 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V47 tmp30 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V48 tmp31 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V49 tmp32 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
; V50 tmp33 [V50,T08] ( 2, 16 ) ref -> rdx class-hnd exact "dup spill" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
; V51 tmp34 [V51,T12] ( 4, 14 ) ref -> rdx
-; V52 tmp35 [V52,T06] ( 4, 16 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
+; V52 tmp35 [V52,T06] ( 4, 16 ) ref -> [rbp-0xD0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V53 tmp36 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V54 tmp37 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V55 tmp38 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V56 tmp39 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
;* V57 tmp40 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V58 tmp41 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V59 tmp42 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
; V60 tmp43 [V60,T09] ( 2, 16 ) ref -> rcx class-hnd exact "dup spill" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
; V61 tmp44 [V61,T13] ( 4, 14 ) ref -> rcx
-; V62 tmp45 [V62,T07] ( 4, 16 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
+; V62 tmp45 [V62,T07] ( 4, 16 ) ref -> [rbp-0xD8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V63 tmp46 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V64 tmp47 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V65 tmp48 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V66 tmp49 [V66,T49] ( 6, 1.50) ref -> rdi class-hnd "Inline stloc first use temp" <System.Security.Cryptography.X509Certificates.IChainPal>
+; V66 tmp49 [V66,T48] ( 6, 1.50) ref -> rdi class-hnd "Inline stloc first use temp" <System.Security.Cryptography.X509Certificates.IChainPal>
;* V67 tmp50 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V68 tmp51 [V68 ] ( 4, 2 ) struct (24) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask`1[ubyte[]]>
-;* V69 tmp52 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte[]]>
-; V70 tmp53 [V70,T35] ( 4, 2 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V71 tmp54 [V71,T54] ( 2, 1 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte[]]>
+;* V69 tmp52 [V69 ] ( 0, 0 ) byref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte[]]>
+; V70 tmp53 [V70,T34] ( 4, 2 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V71 tmp54 [V71,T53] ( 2, 1 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte[]]>
;* V72 tmp55 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[ubyte[]]>
-;* V73 tmp56 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte[]]>
+;* V73 tmp56 [V73 ] ( 0, 0 ) byref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte[]]>
; V74 tmp57 [V74,T32] ( 3, 3 ) ref -> r15 ld-addr-op class-hnd single-def "Inlining Arg" <ubyte[]>
-; V75 tmp58 [V75,T33] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[ubyte[]]>
+;* V75 tmp58 [V75 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task`1[ubyte[]]>
;* V76 tmp59 [V76 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V77 tmp60 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ubyte[]>
;* V78 tmp61 [V78 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V79 tmp62 [V79 ] ( 0, 0 ) ref -> zero-ref "field V14._statusInformation (fldOffset=0x0)" P-INDEP
-; V80 tmp63 [V80,T17] ( 2, 8 ) int -> rdx "field V14.<Status>k__BackingField (fldOffset=0x8)" P-INDEP
-; V81 tmp64 [V81 ] ( 3, 1.50) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V68._obj (fldOffset=0x0)" P-DEP
-; V82 tmp65 [V82 ] ( 3, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V68._result (fldOffset=0x8)" P-DEP
-; V83 tmp66 [V83 ] ( 2, 1 ) short -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V68._token (fldOffset=0x10)" P-DEP
-; V84 tmp67 [V84 ] ( 2, 1 ) ubyte -> [rbp-0x36] do-not-enreg[X] addr-exposed "field V68._continueOnCapturedContext (fldOffset=0x12)" P-DEP
-;* V85 tmp68 [V85 ] ( 0, 0 ) ref -> zero-ref "field V76._source (fldOffset=0x0)" P-INDEP
-; V86 tmp69 [V86,T42] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V87 tmp70 [V87,T43] ( 2, 2 ) ref -> r13 single-def "argument with side effect"
-; V88 tmp71 [V88,T44] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V89 tmp72 [V89,T45] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V90 tmp73 [V90,T46] ( 2, 2 ) ref -> [rbp-0xA0] spill-single-def "argument with side effect"
-; V91 tmp74 [V91,T48] ( 2, 2 ) int -> rsi "argument with side effect"
-; V92 tmp75 [V92,T11] ( 2, 16 ) int -> rdx "Enum:HasFlag this temp"
-; V93 tmp76 [V93,T10] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V94 tmp77 [V94,T47] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V95 tmp78 [V95,T34] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V96 tmp79 [V96,T00] ( 3, 24 ) ref -> rdi "argument with side effect"
-; V97 tmp80 [V97,T61] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V98 PSPSym [V98,T56] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
-; V99 cse0 [V99,T50] ( 3, 1.50) ref -> r13 "CSE #01: conservative"
-; V100 cse1 [V100,T26] ( 3, 5 ) int -> rcx "CSE #02: moderate"
-; V101 rat0 [V101,T05] ( 5, 16.50) long -> rdi "Widened IV V13"
+; V79 tmp62 [V79 ] ( 3, 1.50) struct (64) [rbp-0x88] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Threading.Tasks.Task`1[ubyte[]]>
+;* V80 tmp63 [V80 ] ( 0, 0 ) ref -> zero-ref "field V14._statusInformation (fldOffset=0x0)" P-INDEP
+; V81 tmp64 [V81,T17] ( 2, 8 ) int -> rdx "field V14.<Status>k__BackingField (fldOffset=0x8)" P-INDEP
+; V82 tmp65 [V82 ] ( 3, 1.50) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V68._obj (fldOffset=0x0)" P-DEP
+; V83 tmp66 [V83 ] ( 3, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V68._result (fldOffset=0x8)" P-DEP
+; V84 tmp67 [V84 ] ( 2, 1 ) short -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V68._token (fldOffset=0x10)" P-DEP
+; V85 tmp68 [V85 ] ( 2, 1 ) ubyte -> [rbp-0x36] do-not-enreg[X] addr-exposed "field V68._continueOnCapturedContext (fldOffset=0x12)" P-DEP
+;* V86 tmp69 [V86 ] ( 0, 0 ) ref -> zero-ref "field V76._source (fldOffset=0x0)" P-INDEP
+; V87 tmp70 [V87,T41] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V88 tmp71 [V88,T42] ( 2, 2 ) ref -> r13 single-def "argument with side effect"
+; V89 tmp72 [V89,T43] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V90 tmp73 [V90,T44] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V91 tmp74 [V91,T45] ( 2, 2 ) ref -> [rbp-0xE0] spill-single-def "argument with side effect"
+; V92 tmp75 [V92,T47] ( 2, 2 ) int -> rsi "argument with side effect"
+; V93 tmp76 [V93,T11] ( 2, 16 ) int -> rdx "Enum:HasFlag this temp"
+; V94 tmp77 [V94,T10] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V95 tmp78 [V95,T46] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V96 tmp79 [V96,T33] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V97 tmp80 [V97,T00] ( 3, 24 ) ref -> rdi "argument with side effect"
+; V98 tmp81 [V98,T60] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V99 PSPSym [V99,T55] ( 1, 1 ) long -> [rbp-0xF0] do-not-enreg[V] "PSPSym"
+; V100 cse0 [V100,T49] ( 3, 1.50) ref -> r13 "CSE #01: conservative"
+; V101 cse1 [V101,T26] ( 3, 5 ) int -> rcx "CSE #02: moderate"
+; V102 rat0 [V102,T05] ( 5, 16.50) long -> rdi "Widened IV V13"
;
-; Lcl frame size = 136
+; Lcl frame size = 200
G_M52998_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 136
- lea rbp, [rsp+0xB0]
- vxorps xmm8, xmm8, xmm8
- vmovdqu xmmword ptr [rbp-0x48], xmm8
+ sub rsp, 200
+ lea rbp, [rsp+0xF0]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
- mov qword ptr [rbp-0xB0], rsp
+ mov qword ptr [rbp-0x88], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu32 zmmword ptr [rbp-0x80], zmm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ mov qword ptr [rbp-0xF0], rsp
mov r15, rdi
mov r13, rsi
mov r14d, edx
mov rbx, rcx
mov r12d, r8d
- ;; size=63 bbWeight=1 PerfScore 12.58
+ ;; size=73 bbWeight=1 PerfScore 14.58
G_M52998_IG02:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Certificate2:get_HasPrivateKey():ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate2:get_HasPrivateKey():ubyte:this
test eax, eax
je G_M52998_IG43
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M52998_IG40
;; size=44 bbWeight=1 PerfScore 12.00
G_M52998_IG03:
mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Security.Cryptography.X509Certificates.X509Certificate2]:Value
mov rax, gword ptr [rdi]
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x90], rax
xor rcx, rcx
- mov gword ptr [rbp-0x58], rcx
+ mov gword ptr [rbp-0x98], rcx
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Chain
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0xA8], rax
mov rdi, 0xD1FFAB1E ; System.Object
call CORINFO_HELP_NEWSFAST
- mov rcx, gword ptr [rbp-0x68]
+ mov rcx, gword ptr [rbp-0xA8]
lea rdi, bword ptr [rcx+0x28]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x68]
- mov gword ptr [rbp-0x60], rax
- ;; size=81 bbWeight=1 PerfScore 12.75
+ mov rax, gword ptr [rbp-0xA8]
+ mov gword ptr [rbp-0xA0], rax
+ ;; size=99 bbWeight=1 PerfScore 12.75
G_M52998_IG04:
test r13, r13
je SHORT G_M52998_IG06
;; size=5 bbWeight=1 PerfScore 1.25
G_M52998_IG05:
mov rdi, rax
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
call [rcx]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509ChainPolicy:get_ExtraStore():System.Security.Cryptography.X509Certificates.X509Certificate2Collection:this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509ChainPolicy:get_ExtraStore():System.Security.Cryptography.X509Certificates.X509Certificate2Collection:this
mov rdi, rax
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
- mov rax, gword ptr [rbp-0x68]
- ;; size=56 bbWeight=0.50 PerfScore 8.88
+ mov rax, gword ptr [rbp-0xA8]
+ ;; size=59 bbWeight=0.50 PerfScore 8.88
G_M52998_IG06:
test rbx, rbx
je G_M52998_IG09
;; size=9 bbWeight=1 PerfScore 1.25
G_M52998_IG07:
mov rdi, rax
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
call [rcx]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
mov dword ptr [rax+0x34], 1
cmp gword ptr [rbx+0x08], 0
je SHORT G_M52998_IG08
- mov rdi, gword ptr [rbp-0x68]
+ mov rdi, gword ptr [rbp-0xA8]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509ChainPolicy:get_CustomTrustStore():System.Security.Cryptography.X509Certificates.X509Certificate2Collection:this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509ChainPolicy:get_CustomTrustStore():System.Security.Cryptography.X509Certificates.X509Certificate2Collection:this
mov r13, rax
mov rdi, gword ptr [rbx+0x08]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Store:get_Certificates():System.Security.Cryptography.X509Certificates.X509Certificate2Collection:this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509Store:get_Certificates():System.Security.Cryptography.X509Certificates.X509Certificate2Collection:this
mov rsi, rax
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
- ;; size=103 bbWeight=0.50 PerfScore 17.25
+ ;; size=106 bbWeight=0.50 PerfScore 17.25
G_M52998_IG08:
cmp gword ptr [rbx+0x10], 0
je G_M52998_IG15
- mov rdi, gword ptr [rbp-0x68]
+ mov rdi, gword ptr [rbp-0xA8]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509ChainPolicy:get_CustomTrustStore():System.Security.Cryptography.X509Certificates.X509Certificate2Collection:this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509ChainPolicy:get_CustomTrustStore():System.Security.Cryptography.X509Certificates.X509Certificate2Collection:this
mov rdi, rax
mov rsi, gword ptr [rbx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
- mov rax, gword ptr [rbp-0x68]
- ;; size=69 bbWeight=0.50 PerfScore 12.12
+ mov rax, gword ptr [rbp-0xA8]
+ ;; size=75 bbWeight=0.50 PerfScore 12.12
G_M52998_IG09:
mov rdi, rax
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
call [rcx]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
mov dword ptr [rax+0x30], 0xFFF
- mov rdi, gword ptr [rbp-0x68]
+ mov rdi, gword ptr [rbp-0xA8]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
xor edi, edi
mov dword ptr [rax+0x28], edi
- mov rdi, gword ptr [rbp-0x68]
+ mov rdi, gword ptr [rbp-0xA8]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainPolicy():System.Security.Cryptography.X509Certificates.X509ChainPolicy:this
mov byte ptr [rax+0x38], r14b
- mov rdi, gword ptr [rbp-0x68]
+ mov rdi, gword ptr [rbp-0xA8]
mov rsi, r15
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:Build(System.Security.Cryptography.X509Certificates.X509Certificate2,ubyte):ubyte:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:Build(System.Security.Cryptography.X509Certificates.X509Certificate2,ubyte):ubyte:this
test eax, eax
jne G_M52998_IG11
- ;; size=95 bbWeight=1 PerfScore 21.25
+ ;; size=104 bbWeight=1 PerfScore 21.25
G_M52998_IG10:
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
cmp byte ptr [r13+0x9D], 0
je G_M52998_IG11
mov rdi, 0xD1FFAB1E ; System.Object[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
- mov gword ptr [rbp-0x78], rax
+ mov gword ptr [rbp-0xB8], rax
mov rdi, r15
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Certificate:get_Subject():System.String:this
call [rcx]System.Security.Cryptography.X509Certificates.X509Certificate:get_Subject():System.String:this
- mov rcx, gword ptr [rbp-0x78]
+ mov rcx, gword ptr [rbp-0xB8]
lea rdi, bword ptr [rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rsi, gword ptr [rbp-0x78]
+ mov rsi, gword ptr [rbp-0xB8]
mov rdi, 0xD1FFAB1E ; 'Failed to build chain for {0}'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.FormattableStringFactory:Create(System.String,System.Object[]):System.FormattableString
call [rax]System.Runtime.CompilerServices.FormattableStringFactory:Create(System.String,System.Object[]):System.FormattableString
- mov gword ptr [rbp-0x80], rax
+ mov gword ptr [rbp-0xC0], rax
xor rdi, rdi
mov rcx, 0xD1FFAB1E ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
call [rcx]System.Net.NetEventSource:IdOf(System.Object):System.String
- mov gword ptr [rbp-0x88], rax
- mov rdi, gword ptr [rbp-0x80]
+ mov gword ptr [rbp-0xC8], rax
+ mov rdi, gword ptr [rbp-0xC0]
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:Format(System.FormattableString):System.String
call [rax]System.Net.NetEventSource:Format(System.FormattableString):System.String
mov r8, rax
mov rdi, r13
- mov r13, gword ptr [rbp-0x88]
+ mov r13, gword ptr [rbp-0xC8]
mov rdx, r13
mov esi, 2
mov rcx, 0xD1FFAB1E ; 'Create'
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
- ;; size=192 bbWeight=0.50 PerfScore 17.38
+ ;; size=207 bbWeight=0.50 PerfScore 17.38
G_M52998_IG11:
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
mov rdi, gword ptr [rax+0x08]
mov r13d, dword ptr [rdi+0x08]
dec r13d
js G_M52998_IG32
- ;; size=33 bbWeight=1 PerfScore 9.50
+ ;; size=36 bbWeight=1 PerfScore 9.50
G_M52998_IG12:
dec r13d
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
- mov gword ptr [rbp-0xA0], rax
- mov rdi, gword ptr [rbp-0x60]
+ mov gword ptr [rbp-0xE0], rax
+ mov rdi, gword ptr [rbp-0xA0]
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
call [rcx]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
mov rdi, gword ptr [rax+0x08]
mov esi, dword ptr [rdi+0x08]
dec esi
- mov rdi, gword ptr [rbp-0xA0]
+ mov rdi, gword ptr [rbp-0xE0]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
mov rcx, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x58], rcx
- mov rdi, gword ptr [rbp-0x60]
+ mov gword ptr [rbp-0x98], rcx
+ mov rdi, gword ptr [rbp-0xA0]
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainStatus():System.Security.Cryptography.X509Certificates.X509ChainStatus[]:this
call [rcx]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainStatus():System.Security.Cryptography.X509Certificates.X509ChainStatus[]:this
xor edi, edi
mov ecx, dword ptr [rax+0x08]
test ecx, ecx
jle SHORT G_M52998_IG17
align [0 bytes for IG13]
- ;; size=105 bbWeight=0.50 PerfScore 16.00
+ ;; size=117 bbWeight=0.50 PerfScore 16.00
G_M52998_IG13:
mov rdx, rdi
shl rdx, 4
mov edx, dword ptr [rax+rdx+0x18]
test edx, 0x10000
je SHORT G_M52998_IG16
;; size=19 bbWeight=4 PerfScore 16.00
G_M52998_IG14:
inc r13d
xor rax, rax
- mov gword ptr [rbp-0x58], rax
+ mov gword ptr [rbp-0x98], rax
jmp SHORT G_M52998_IG17
- ;; size=11 bbWeight=0.50 PerfScore 1.75
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M52998_IG15:
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0xA8]
jmp G_M52998_IG09
- ;; size=9 bbWeight=0.25 PerfScore 0.75
+ ;; size=12 bbWeight=0.25 PerfScore 0.75
G_M52998_IG16:
inc edi
cmp ecx, edi
jg SHORT G_M52998_IG13
;; size=6 bbWeight=4 PerfScore 6.00
G_M52998_IG17:
test r13d, r13d
jle G_M52998_IG23
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
mov rsi, gword ptr [rax+0x08]
cmp dword ptr [rsi+0x08], 1
jle G_M52998_IG23
- ;; size=39 bbWeight=0.50 PerfScore 5.75
+ ;; size=42 bbWeight=0.50 PerfScore 5.75
G_M52998_IG18:
movsxd rsi, r13d
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate2[]
call CORINFO_HELP_NEWARR_1_OBJ
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x90], rax
xor ecx, ecx
mov dword ptr [rbp-0x30], ecx
- ;; size=27 bbWeight=0.25 PerfScore 0.94
+ ;; size=30 bbWeight=0.25 PerfScore 0.94
G_M52998_IG19:
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
mov rdx, gword ptr [rdi+0x18]
test rdx, rdx
jne SHORT G_M52998_IG22
- ;; size=13 bbWeight=4 PerfScore 17.00
+ ;; size=16 bbWeight=4 PerfScore 17.00
G_M52998_IG20:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509ChainElementCollection
call CORINFO_HELP_NEWSFAST
mov rdx, rax
- mov gword ptr [rbp-0x90], rdx
+ mov gword ptr [rbp-0xD0], rdx
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M52998_IG30
;; size=44 bbWeight=2 PerfScore 13.50
G_M52998_IG21:
mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Security.Cryptography.X509Certificates.X509ChainElement]:Value
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [rdx+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
lea rdi, bword ptr [rdi+0x18]
- mov rsi, gword ptr [rbp-0x90]
+ mov rsi, gword ptr [rbp-0xD0]
call CORINFO_HELP_ASSIGN_REF
- mov rdx, gword ptr [rbp-0x90]
- ;; size=49 bbWeight=2 PerfScore 16.50
+ mov rdx, gword ptr [rbp-0xD0]
+ ;; size=52 bbWeight=2 PerfScore 16.50
G_M52998_IG22:
mov ecx, dword ptr [rbp-0x30]
lea esi, [rcx+0x01]
mov rdi, rdx
mov rdx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
cmp dword ptr [rdi], edi
call [rdx]System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
mov rdx, gword ptr [rax+0x08]
movsxd rsi, dword ptr [rbp-0x30]
- mov rdi, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rbp-0x90]
mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rcx]CORINFO_HELP_ARRADDR_ST
mov eax, dword ptr [rbp-0x30]
inc eax
cmp eax, r13d
mov dword ptr [rbp-0x30], eax
jl G_M52998_IG19
- ;; size=64 bbWeight=4 PerfScore 83.00
+ ;; size=67 bbWeight=4 PerfScore 83.00
G_M52998_IG23:
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
call [rax]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
mov rdi, rax
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
mov rdi, gword ptr [rax+0x08]
mov esi, 1
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate:Dispose(ubyte):this
- cmp gword ptr [rbp-0x58], 0
+ cmp gword ptr [rbp-0x98], 0
je SHORT G_M52998_IG24
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
call [rcx]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
mov rdi, gword ptr [rax+0x08]
mov eax, dword ptr [rdi+0x08]
dec eax
jmp SHORT G_M52998_IG25
- ;; size=87 bbWeight=0.50 PerfScore 16.88
+ ;; size=96 bbWeight=0.50 PerfScore 16.88
G_M52998_IG24:
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
call [rcx]System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
mov rdi, gword ptr [rax+0x08]
mov eax, dword ptr [rdi+0x08]
- ;; size=23 bbWeight=0.50 PerfScore 4.12
+ ;; size=26 bbWeight=0.50 PerfScore 4.12
G_M52998_IG25:
mov dword ptr [rbp-0x2C], eax
inc r13d
cmp r13d, eax
jge G_M52998_IG32
;; size=15 bbWeight=0.50 PerfScore 1.25
G_M52998_IG26:
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
mov rcx, gword ptr [rdi+0x18]
test rcx, rcx
jne SHORT G_M52998_IG29
- ;; size=13 bbWeight=4 PerfScore 17.00
+ ;; size=16 bbWeight=4 PerfScore 17.00
G_M52998_IG27:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509ChainElementCollection
call CORINFO_HELP_NEWSFAST
mov rcx, rax
- mov gword ptr [rbp-0x98], rcx
+ mov gword ptr [rbp-0xD8], rcx
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M52998_IG31
;; size=44 bbWeight=2 PerfScore 13.50
G_M52998_IG28:
mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Security.Cryptography.X509Certificates.X509ChainElement]:Value
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [rcx+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0xA0]
lea rdi, bword ptr [rdi+0x18]
- mov rsi, gword ptr [rbp-0x98]
+ mov rsi, gword ptr [rbp-0xD8]
call CORINFO_HELP_ASSIGN_REF
- mov rcx, gword ptr [rbp-0x98]
- ;; size=49 bbWeight=2 PerfScore 16.50
+ mov rcx, gword ptr [rbp-0xD8]
+ ;; size=52 bbWeight=2 PerfScore 16.50
G_M52998_IG29:
mov rdi, rcx
mov esi, r13d
mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
cmp dword ptr [rdi], edi
call [rcx]System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
mov rdi, gword ptr [rax+0x08]
mov esi, 1
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax]System.Security.Cryptography.X509Certificates.X509Certificate:Dispose(ubyte):this
inc r13d
mov eax, dword ptr [rbp-0x2C]
cmp r13d, eax
jl G_M52998_IG26
jmp SHORT G_M52998_IG32
;; size=55 bbWeight=4 PerfScore 82.00
G_M52998_IG30:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Security.Cryptography.X509Certificates.X509ChainElement]
call CORINFO_HELP_GET_GCSTATIC_BASE
- mov rdx, gword ptr [rbp-0x90]
+ mov rdx, gword ptr [rbp-0xD0]
jmp G_M52998_IG21
;; size=27 bbWeight=0 PerfScore 0.00
G_M52998_IG31:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Security.Cryptography.X509Certificates.X509ChainElement]
call CORINFO_HELP_GET_GCSTATIC_BASE
- mov rcx, gword ptr [rbp-0x98]
+ mov rcx, gword ptr [rbp-0xD8]
jmp G_M52998_IG28
;; size=27 bbWeight=0 PerfScore 0.00
G_M52998_IG32:
xor rdi, rdi
- mov r13, gword ptr [rbp-0x60]
+ mov r13, gword ptr [rbp-0xA0]
mov gword ptr [r13+0x10], rdi
- ;; size=10 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.50 PerfScore 1.12
G_M52998_IG33:
mov gword ptr [r13+0x18], rdi
mov byte ptr [r13+0x30], 0
mov rdi, gword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M52998_IG34
xor r11, r11
mov gword ptr [r13+0x20], r11
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=38 bbWeight=0.50 PerfScore 4.88
G_M52998_IG34:
mov rdi, r13
call System.GC:_SuppressFinalize(System.Object)
mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2]
call CORINFO_HELP_NEWSFAST
mov r13, rax
- mov rax, gword ptr [rbp-0x50]
+ mov rax, gword ptr [rbp-0x90]
test rax, rax
je G_M52998_IG42
lea rdi, bword ptr [r13+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.Net.Security.SslStreamCertificateContext
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0xB0], rax
mov rdi, rax
mov rsi, r15
mov rdx, r13
mov rcx, rbx
mov r8, 0xD1FFAB1E ; code for System.Net.Security.SslStreamCertificateContext:.ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2],System.Net.Security.SslCertificateTrust):this
call [r8]System.Net.Security.SslStreamCertificateContext:.ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2],System.Net.Security.SslCertificateTrust):this
movzx rdi, r14b
movzx rsi, r12b
or edi, esi
- mov r13, gword ptr [rbp-0x70]
+ mov r13, gword ptr [rbp-0xB0]
mov byte ptr [r13+0x60], dil
lea rdi, bword ptr [r13+0x48]
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x98]
call CORINFO_HELP_ASSIGN_REF
cmp byte ptr [r13+0x60], 0
jne SHORT G_M52998_IG36
- ;; size=133 bbWeight=1 PerfScore 22.50
+ ;; size=145 bbWeight=1 PerfScore 22.50
G_M52998_IG35:
lea rsi, [rbp-0x48]
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Net.Security.SslStreamCertificateContext:GetOcspResponseAsync():System.Threading.Tasks.ValueTask`1[ubyte[]]:this
call [rax]System.Net.Security.SslStreamCertificateContext:GetOcspResponseAsync():System.Threading.Tasks.ValueTask`1[ubyte[]]:this
mov rbx, gword ptr [rbp-0x48]
test rbx, rbx
jne SHORT G_M52998_IG38
mov r15, gword ptr [rbp-0x40]
test r15, r15
jne SHORT G_M52998_IG39
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
je G_M52998_IG41
;; size=56 bbWeight=0.50 PerfScore 6.38
G_M52998_IG36:
mov rax, r13
;; size=3 bbWeight=1 PerfScore 0.25
G_M52998_IG37:
- add rsp, 136
+ add rsp, 200
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M52998_IG38:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte[]]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne SHORT G_M52998_IG36
lea rdi, [rbp-0x48]
mov rdx, rbx
mov rsi, 0xD1FFAB1E ; System.Threading.Tasks.ValueTask`1[ubyte[]]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ValueTask`1[System.__Canon]:GetTaskForValueTaskSource(System.Threading.Tasks.Sources.IValueTaskSource`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this
call [rax]System.Threading.Tasks.ValueTask`1[System.__Canon]:GetTaskForValueTaskSource(System.Threading.Tasks.Sources.IValueTaskSource`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this
jmp SHORT G_M52998_IG36
;; size=61 bbWeight=0.50 PerfScore 5.62
G_M52998_IG39:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte[]]
- call CORINFO_HELP_NEWSFAST
- mov dword ptr [rax+0x34], 0xD1FFAB1E
- lea rdi, bword ptr [rax+0x38]
- mov rsi, r15
- call CORINFO_HELP_ASSIGN_REF
+ mov qword ptr [rbp-0x88], rdi
+ mov dword ptr [rbp-0x54], 0xD1FFAB1E
+ mov gword ptr [rbp-0x50], r15
jmp SHORT G_M52998_IG36
- ;; size=36 bbWeight=0.50 PerfScore 3.00
+ ;; size=30 bbWeight=0.50 PerfScore 2.62
G_M52998_IG40:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Security.Cryptography.X509Certificates.X509Certificate2]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M52998_IG03
;; size=20 bbWeight=0 PerfScore 0.00
G_M52998_IG41:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte[]]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M52998_IG36
;; size=20 bbWeight=0 PerfScore 0.00
G_M52998_IG42:
mov edi, 20
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M52998_IG43:
mov rdi, 0xD1FFAB1E ; System.NotSupportedException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_net_ssl_io_no_server_cert():System.String
call [rax]System.SR:get_net_ssl_io_no_server_cert():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.NotSupportedException:.ctor(System.String):this
call [rax]System.NotSupportedException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
G_M52998_IG44:
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+0xF0]
;; size=25 bbWeight=0 PerfScore 0.00
G_M52998_IG45:
xor rdi, rdi
- mov r13, gword ptr [rbp-0x60]
+ mov r13, gword ptr [rbp-0xA0]
mov gword ptr [r13+0x10], rdi
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
G_M52998_IG46:
mov gword ptr [r13+0x18], rdi
mov byte ptr [r13+0x30], 0
mov rdi, gword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M52998_IG47
xor r11, r11
mov gword ptr [r13+0x20], r11
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=38 bbWeight=0 PerfScore 0.00
G_M52998_IG47:
mov rdi, r13
call System.GC:_SuppressFinalize(System.Object)
nop
;; size=9 bbWeight=0 PerfScore 0.00
G_M52998_IG48:
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 2043, prolog size 63, PerfScore 502.65, instruction count 461, allocated bytes for code 2043 (MethodHash=48fb30f9) for method System.Net.Security.SslStreamCertificateContext:Create(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,ubyte,System.Net.Security.SslCertificateTrust,ubyte):System.Net.Security.SslStreamCertificateContext (FullOpts)
+; Total bytes of code 2173, prolog size 73, PerfScore 504.27, instruction count 460, allocated bytes for code 2173 (MethodHash=48fb30f9) for method System.Net.Security.SslStreamCertificateContext:Create(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,ubyte,System.Net.Security.SslCertificateTrust,ubyte):System.Net.Security.SslStreamCertificateContext (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/5a40c7fedd9a725e83a263a4ef4ad731 |
Top method improvements-379 (-39.64 % of base) - System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this ; Assembly listing for method System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
-; fully interruptible
+; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 18, 10 ) ref -> rbx this class-hnd single-def <System.Data.RBTree`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T03] ( 9, 6 ) int -> r15 single-def
-; V02 arg2 [V02,T49] ( 7, 3.50) simd32 -> [rbp+0x10] single-def <System.Numerics.Vector`1[float]>
-; V03 loc0 [V03,T32] ( 4, 2.50) int -> rax
+; V00 this [V00,T00] ( 10, 6 ) ref -> rbx this class-hnd single-def <System.Data.RBTree`1[System.Numerics.Vector`1[float]]>
+; V01 arg1 [V01,T01] ( 7, 5 ) int -> r15 single-def
+; V02 arg2 [V02,T51] ( 4, 2 ) simd32 -> [rbp+0x10] single-def <System.Numerics.Vector`1[float]>
+; V03 loc0 [V03,T20] ( 4, 2.50) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 3, 3 ) ref -> r13 class-hnd exact single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
-; V06 tmp2 [V06,T06] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Numerics.Vector`1[float]>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V09 tmp5 [V09,T47] ( 3, 1.50) int -> registers "Inline return value spill temp"
-; V10 tmp6 [V10,T29] ( 5, 2.50) int -> rdx "Inline stloc first use temp"
-; V11 tmp7 [V11,T01] ( 11, 11 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
-; V12 tmp8 [V12,T07] ( 3, 3 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
-; V13 tmp9 [V13,T08] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
-; V14 tmp10 [V14,T39] ( 2, 2 ) int -> rdx "dup spill"
-; V15 tmp11 [V15,T40] ( 2, 2 ) int -> rdx "dup spill"
-; V16 tmp12 [V16,T48] ( 3, 1.50) int -> rax "Inline return value spill temp"
-; V17 tmp13 [V17,T30] ( 5, 2.50) int -> r13 "Inline stloc first use temp"
-; V18 tmp14 [V18,T02] ( 11, 11 ) int -> r15 "Inlining Arg"
-; V19 tmp15 [V19,T09] ( 3, 3 ) ref -> r13 class-hnd exact single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
-; V20 tmp16 [V20,T10] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
-; V21 tmp17 [V21,T41] ( 2, 2 ) int -> r13 "dup spill"
-; V22 tmp18 [V22,T42] ( 2, 2 ) int -> r13 "dup spill"
-; V23 tmp19 [V23,T11] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V24 tmp20 [V24,T12] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V25 tmp21 [V25,T13] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V26 tmp22 [V26,T14] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V27 tmp23 [V27,T15] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V28 tmp24 [V28,T16] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V29 tmp25 [V29,T17] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V30 tmp26 [V30,T18] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V31 tmp27 [V31,T43] ( 2, 2 ) int -> rsi "argument with side effect"
-; V32 tmp28 [V32,T19] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V33 tmp29 [V33,T20] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V34 tmp30 [V34,T44] ( 2, 2 ) int -> rsi "argument with side effect"
-; V35 tmp31 [V35,T21] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V36 tmp32 [V36,T22] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V37 tmp33 [V37,T23] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V38 tmp34 [V38,T24] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V39 tmp35 [V39,T25] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V40 tmp36 [V40,T26] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V41 tmp37 [V41,T45] ( 2, 2 ) int -> rsi "argument with side effect"
-; V42 tmp38 [V42,T27] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V43 tmp39 [V43,T28] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V44 tmp40 [V44,T46] ( 2, 2 ) int -> rsi "argument with side effect"
-; V45 cse0 [V45,T33] ( 4, 2 ) long -> [rbp-0x38] "CSE #06: conservative"
-; V46 cse1 [V46,T34] ( 4, 2 ) long -> [rbp-0x40] spill-single-def "CSE #13: conservative"
-; V47 cse2 [V47,T35] ( 4, 2 ) long -> [rbp-0x48] spill-single-def "CSE #20: conservative"
-; V48 cse3 [V48,T36] ( 4, 2 ) long -> [rbp-0x50] "CSE #04: conservative"
-; V49 cse4 [V49,T37] ( 4, 2 ) long -> [rbp-0x58] spill-single-def "CSE #11: conservative"
-; V50 cse5 [V50,T38] ( 4, 2 ) long -> r12 "CSE #18: conservative"
-; V51 cse6 [V51,T31] ( 5, 2.50) int -> r12 "CSE #01: moderate"
-; V52 cse7 [V52,T04] ( 7, 3.50) long -> r14 "CSE #03: moderate"
+; V09 tmp5 [V09,T43] ( 2, 1 ) int -> rax "Inline return value spill temp"
+; V10 tmp6 [V10,T17] ( 5, 2.50) int -> rax "Inline stloc first use temp"
+; V11 tmp7 [V11,T02] ( 6, 6 ) int -> r12 "Inlining Arg"
+;* V12 tmp8 [V12 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+;* V13 tmp9 [V13 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+; V14 tmp10 [V14,T24] ( 2, 2 ) int -> rax "dup spill"
+; V15 tmp11 [V15,T25] ( 2, 2 ) int -> rax "dup spill"
+; V16 tmp12 [V16,T44] ( 2, 1 ) int -> rax "Inline return value spill temp"
+; V17 tmp13 [V17,T18] ( 5, 2.50) int -> registers "Inline stloc first use temp"
+; V18 tmp14 [V18,T03] ( 6, 6 ) int -> r15 "Inlining Arg"
+;* V19 tmp15 [V19 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+;* V20 tmp16 [V20 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+; V21 tmp17 [V21,T26] ( 2, 2 ) int -> rax "dup spill"
+; V22 tmp18 [V22,T27] ( 2, 2 ) int -> rax "dup spill"
+;* V23 tmp19 [V23 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Numerics.Vector`1[float]]>
+;* V24 tmp20 [V24 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Numerics.Vector`1[float]]>
+;* V25 tmp21 [V25 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Numerics.Vector`1[float]]>
+;* V26 tmp22 [V26 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Numerics.Vector`1[float]]>
+;* V27 tmp23 [V27 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Numerics.Vector`1[float]]>
+;* V28 tmp24 [V28 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Numerics.Vector`1[float]]>
+; V29 tmp25 [V29,T04] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V30 tmp26 [V30,T05] ( 3, 3 ) ref -> rdi single-def "arr expr"
+;* V31 tmp27 [V31,T45] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V32 tmp28 [V32,T46] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V33 tmp29 [V33,T06] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V34 tmp30 [V34,T07] ( 3, 3 ) ref -> rsi single-def "arr expr"
+;* V35 tmp31 [V35,T47] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V36 tmp32 [V36,T48] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V37 tmp33 [V37,T28] ( 2, 2 ) int -> rsi "argument with side effect"
+; V38 tmp34 [V38,T08] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V39 tmp35 [V39,T09] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V40 tmp36 [V40,T29] ( 2, 2 ) int -> rsi "argument with side effect"
+; V41 tmp37 [V41,T10] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V42 tmp38 [V42,T11] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V43 tmp39 [V43,T12] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V44 tmp40 [V44,T13] ( 3, 3 ) ref -> rsi single-def "arr expr"
+;* V45 tmp41 [V45,T49] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V46 tmp42 [V46,T50] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V47 tmp43 [V47,T30] ( 2, 2 ) int -> rsi "argument with side effect"
+; V48 tmp44 [V48,T14] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V49 tmp45 [V49,T15] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V50 tmp46 [V50,T31] ( 2, 2 ) int -> rsi "argument with side effect"
+; V51 cse0 [V51,T32] ( 2, 1 ) ref -> rdi "CSE #07: conservative"
+; V52 cse1 [V52,T33] ( 2, 1 ) ref -> rsi "CSE #16: conservative"
+; V53 cse2 [V53,T34] ( 2, 1 ) ref -> rsi "CSE #27: conservative"
+; V54 cse3 [V54,T40] ( 2, 1 ) byref -> rdi "CSE #11: conservative"
+; V55 cse4 [V55,T41] ( 2, 1 ) byref -> rsi "CSE #20: conservative"
+; V56 cse5 [V56,T42] ( 2, 1 ) byref -> rsi "CSE #31: conservative"
+; V57 cse6 [V57,T35] ( 3, 1.50) long -> r13 "CSE #10: conservative"
+; V58 cse7 [V58,T36] ( 3, 1.50) long -> [rbp-0x30] spill-single-def "CSE #19: conservative"
+; V59 cse8 [V59,T37] ( 3, 1.50) long -> r14 "CSE #30: conservative"
+; V60 cse9 [V60,T16] ( 3, 1.50) ref -> rsi "CSE #03: moderate"
+; V61 cse10 [V61,T38] ( 3, 1.50) long -> [rbp-0x38] spill-single-def "CSE #14: conservative"
+; V62 cse11 [V62,T21] ( 3, 1.50) ref -> rsi "CSE #21: conservative"
+; V63 cse12 [V63,T39] ( 3, 1.50) long -> r12 "CSE #25: conservative"
+; V64 cse13 [V64,T19] ( 5, 2.50) int -> r14 "CSE #01: moderate"
+; V65 cse14 [V65,T22] ( 4, 2 ) int -> [rbp-0x3C] spill-single-def "CSE #12: conservative"
+; V66 cse15 [V66,T23] ( 4, 2 ) int -> r13 "CSE #23: conservative"
;
-; Lcl frame size = 88
+; Lcl frame size = 56
G_M21896_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- lea rbp, [rsp+0x80]
+ sub rsp, 56
+ lea rbp, [rsp+0x60]
mov rbx, rdi
mov r15d, esi
- ;; size=28 bbWeight=1 PerfScore 7.25
+ vmovups ymm0, ymmword ptr [rbp+0x10]
+ ;; size=30 bbWeight=1 PerfScore 11.25
G_M21896_IG02:
mov eax, -1
test r15d, r15d
- je G_M21896_IG09
+ je G_M21896_IG06
;; size=14 bbWeight=1 PerfScore 1.50
G_M21896_IG03:
- mov r14, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
- mov rdi, r14
- call CORINFO_HELP_NEWSFAST
- mov r13, rax
- mov rdi, gword ptr [rbx+0x08]
- mov r12d, r15d
- sar r12d, 16
- cmp r12d, dword ptr [rdi+0x08]
- jae G_M21896_IG14
- mov eax, r12d
- mov qword ptr [rbp-0x50], rax
+ mov rsi, gword ptr [rbx+0x08]
+ mov rdi, rsi
+ mov r14d, r15d
+ sar r14d, 16
+ cmp r14d, dword ptr [rdi+0x08]
+ jae G_M21896_IG12
+ mov eax, r14d
mov rdi, gword ptr [rdi+8*rax+0x10]
mov rdi, gword ptr [rdi+0x08]
- movzx rcx, r15w
- cmp ecx, dword ptr [rdi+0x08]
- jae G_M21896_IG14
- movzx rcx, r15w
- shl rcx, 6
- mov qword ptr [rbp-0x38], rcx
- vmovups ymm0, ymmword ptr [rdi+rcx+0x28]
- vmovups ymmword ptr [r13+0x08], ymm0
- mov rdi, r14
- call CORINFO_HELP_NEWSFAST
- vmovups ymm0, ymmword ptr [rbp+0x10]
- vmovups ymmword ptr [rax+0x08], ymm0
- cmp r13, rax
- jne SHORT G_M21896_IG05
- mov rdi, rbx
- mov esi, r15d
- mov rax, 0xD1FFAB1E ; code for System.Data.RBTree`1[System.Numerics.Vector`1[float]]:GetIndexByNode(int):int:this
- ;; size=134 bbWeight=0.50 PerfScore 18.00
-G_M21896_IG04:
- vzeroupper
- add rsp, 88
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- tail.jmp [rax]System.Data.RBTree`1[System.Numerics.Vector`1[float]]:GetIndexByNode(int):int:this
- ;; size=20 bbWeight=0.50 PerfScore 3.12
-G_M21896_IG05:
- mov rdi, gword ptr [rbx+0x08]
- cmp r12d, dword ptr [rdi+0x08]
- jae G_M21896_IG14
- mov r13, qword ptr [rbp-0x50]
- mov rdi, gword ptr [rdi+8*r13+0x10]
- mov rdi, gword ptr [rdi+0x08]
movzx rax, r15w
cmp eax, dword ptr [rdi+0x08]
- jae G_M21896_IG14
- mov rax, qword ptr [rbp-0x38]
- mov ecx, dword ptr [rdi+rax+0x14]
- mov dword ptr [rbp-0x2C], ecx
- mov edx, -1
- test ecx, ecx
- je G_M21896_IG07
- mov rdi, r14
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x60], rax
- mov rdi, gword ptr [rbx+0x08]
- mov ecx, dword ptr [rbp-0x2C]
- mov edx, ecx
- sar edx, 16
- cmp edx, dword ptr [rdi+0x08]
- jae G_M21896_IG14
+ jae G_M21896_IG12
+ movzx rax, r15w
+ mov r13d, eax
+ shl r13, 6
+ lea rdi, bword ptr [rdi+r13+0x10]
+ mov r12d, dword ptr [rdi+0x04]
+ mov eax, -1
+ test r12d, r12d
+ je G_M21896_IG05
+ mov ecx, r12d
+ sar ecx, 16
+ mov dword ptr [rbp-0x3C], ecx
+ cmp ecx, dword ptr [rsi+0x08]
+ jae G_M21896_IG12
mov edx, ecx
- sar edx, 16
- mov qword ptr [rbp-0x58], rdx
- mov rdi, gword ptr [rdi+8*rdx+0x10]
- mov rdi, gword ptr [rdi+0x08]
- movzx rsi, cx
- cmp esi, dword ptr [rdi+0x08]
- jae G_M21896_IG14
- movzx rsi, cx
- shl rsi, 6
- mov qword ptr [rbp-0x40], rsi
- vmovups ymm0, ymmword ptr [rdi+rsi+0x28]
- vmovups ymmword ptr [rax+0x08], ymm0
- mov rdi, r14
- call CORINFO_HELP_NEWSFAST
- vmovups ymm0, ymmword ptr [rbp+0x10]
- vmovups ymmword ptr [rax+0x08], ymm0
- mov rdi, gword ptr [rbp-0x60]
- cmp rdi, rax
- jne SHORT G_M21896_IG06
- mov rdi, rbx
- mov esi, dword ptr [rbp-0x2C]
- mov rax, 0xD1FFAB1E ; code for System.Data.RBTree`1[System.Numerics.Vector`1[float]]:GetIndexByNode(int):int:this
- call [rax]System.Data.RBTree`1[System.Numerics.Vector`1[float]]:GetIndexByNode(int):int:this
- jmp G_M21896_IG08
- ;; size=199 bbWeight=0.50 PerfScore 32.75
-G_M21896_IG06:
- mov rsi, gword ptr [rbx+0x08]
- mov eax, dword ptr [rbp-0x2C]
- mov edi, eax
- sar edi, 16
- cmp edi, dword ptr [rsi+0x08]
- jae G_M21896_IG14
- mov rcx, qword ptr [rbp-0x58]
- mov rsi, gword ptr [rsi+8*rcx+0x10]
+ mov qword ptr [rbp-0x38], rdx
+ mov rsi, gword ptr [rsi+8*rdx+0x10]
mov rsi, gword ptr [rsi+0x08]
- movzx rdi, ax
+ movzx rdi, r12w
cmp edi, dword ptr [rsi+0x08]
- jae G_M21896_IG14
- mov rdx, qword ptr [rbp-0x40]
- mov esi, dword ptr [rsi+rdx+0x14]
- vmovups ymm0, ymmword ptr [rbp+0x10]
+ jae G_M21896_IG12
+ movzx rdi, r12w
+ mov r8d, edi
+ shl r8, 6
+ mov qword ptr [rbp-0x30], r8
+ lea rsi, bword ptr [rsi+r8+0x10]
+ mov esi, dword ptr [rsi+0x04]
+ vmovups ymmword ptr [rbp+0x10], ymm0
vmovups ymmword ptr [rsp], ymm0
mov rdi, rbx
- mov r8, 0xD1FFAB1E ; code for System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
- call [r8]System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
- mov edx, eax
- cmp edx, -1
+ mov rax, 0xD1FFAB1E ; code for System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
+ call [rax]System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
+ cmp eax, -1
jne SHORT G_M21896_IG07
mov rsi, gword ptr [rbx+0x08]
- mov edi, dword ptr [rbp-0x2C]
- mov eax, edi
- sar eax, 16
- cmp eax, dword ptr [rsi+0x08]
- jae G_M21896_IG14
- mov rcx, qword ptr [rbp-0x58]
- mov rsi, gword ptr [rsi+8*rcx+0x10]
+ mov edi, dword ptr [rbp-0x3C]
+ cmp edi, dword ptr [rsi+0x08]
+ jae G_M21896_IG12
+ mov rdi, qword ptr [rbp-0x38]
+ mov rsi, gword ptr [rsi+8*rdi+0x10]
mov rsi, gword ptr [rsi+0x08]
- movzx rdi, di
+ movzx rdi, r12w
cmp edi, dword ptr [rsi+0x08]
- jae G_M21896_IG14
- mov rdi, qword ptr [rbp-0x40]
- mov esi, dword ptr [rsi+rdi+0x18]
+ ;; size=218 bbWeight=0.50 PerfScore 31.62
+G_M21896_IG04:
+ jae G_M21896_IG12
+ mov r12, qword ptr [rbp-0x30]
+ mov esi, dword ptr [rsi+r12+0x18]
vmovups ymm0, ymmword ptr [rbp+0x10]
vmovups ymmword ptr [rsp], ymm0
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
call [rax]System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
- mov edx, eax
- ;; size=168 bbWeight=0.50 PerfScore 29.38
-G_M21896_IG07:
- mov eax, edx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M21896_IG08:
+ vmovups ymm0, ymmword ptr [rbp+0x10]
+ ;; size=45 bbWeight=0.50 PerfScore 8.25
+G_M21896_IG05:
cmp eax, -1
- je SHORT G_M21896_IG10
+ je SHORT G_M21896_IG08
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M21896_IG09:
- vzeroupper
- add rsp, 88
+G_M21896_IG06:
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0.50 PerfScore 2.62
-G_M21896_IG10:
- mov rdi, qword ptr [rbp-0x38]
- mov rax, gword ptr [rbx+0x08]
- cmp r12d, dword ptr [rax+0x08]
- jae G_M21896_IG14
- mov rax, gword ptr [rax+8*r13+0x10]
- mov rax, gword ptr [rax+0x08]
- movzx rcx, r15w
- cmp ecx, dword ptr [rax+0x08]
- jae G_M21896_IG14
- mov r15d, dword ptr [rax+rdi+0x18]
- mov r13d, -1
- test r15d, r15d
- je G_M21896_IG12
- mov rdi, r14
- call CORINFO_HELP_NEWSFAST
- mov r13, rax
- mov rdi, gword ptr [rbx+0x08]
- mov eax, r15d
- sar eax, 16
- cmp eax, dword ptr [rdi+0x08]
- jae G_M21896_IG14
- mov eax, r15d
- sar eax, 16
- mov r12d, eax
- mov rdi, gword ptr [rdi+8*r12+0x10]
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M21896_IG07:
+ vmovups ymm0, ymmword ptr [rbp+0x10]
+ jmp SHORT G_M21896_IG05
+ ;; size=7 bbWeight=0.25 PerfScore 1.50
+G_M21896_IG08:
+ mov rsi, gword ptr [rbx+0x08]
+ mov rdi, rsi
+ cmp r14d, dword ptr [rdi+0x08]
+ jae G_M21896_IG12
+ mov eax, r14d
+ mov rdi, gword ptr [rdi+8*rax+0x10]
mov rdi, gword ptr [rdi+0x08]
movzx rax, r15w
cmp eax, dword ptr [rdi+0x08]
- jae G_M21896_IG14
- movzx rax, r15w
- shl rax, 6
- mov qword ptr [rbp-0x48], rax
- vmovups ymm0, ymmword ptr [rdi+rax+0x28]
- vmovups ymmword ptr [r13+0x08], ymm0
- mov rdi, r14
- call CORINFO_HELP_NEWSFAST
- vmovups ymm0, ymmword ptr [rbp+0x10]
- vmovups ymmword ptr [rax+0x08], ymm0
- cmp r13, rax
- jne SHORT G_M21896_IG11
- mov rdi, rbx
- mov esi, r15d
- mov rax, 0xD1FFAB1E ; code for System.Data.RBTree`1[System.Numerics.Vector`1[float]]:GetIndexByNode(int):int:this
- call [rax]System.Data.RBTree`1[System.Numerics.Vector`1[float]]:GetIndexByNode(int):int:this
- jmp G_M21896_IG13
- ;; size=191 bbWeight=0.50 PerfScore 29.62
-G_M21896_IG11:
- mov rsi, gword ptr [rbx+0x08]
- mov edi, r15d
- sar edi, 16
- cmp edi, dword ptr [rsi+0x08]
- jae G_M21896_IG14
+ jae G_M21896_IG12
+ mov r15d, dword ptr [rdi+r13+0x18]
+ mov r14d, -1
+ test r15d, r15d
+ je G_M21896_IG09
+ mov r13d, r15d
+ sar r13d, 16
+ cmp r13d, dword ptr [rsi+0x08]
+ jae G_M21896_IG12
+ mov r12d, r13d
mov rsi, gword ptr [rsi+8*r12+0x10]
mov rsi, gword ptr [rsi+0x08]
movzx rdi, r15w
cmp edi, dword ptr [rsi+0x08]
- jae G_M21896_IG14
- mov r14, qword ptr [rbp-0x48]
- mov esi, dword ptr [rsi+r14+0x14]
+ jae G_M21896_IG12
+ movzx rdi, r15w
+ mov r14d, edi
+ shl r14, 6
+ lea rsi, bword ptr [rsi+r14+0x10]
+ mov esi, dword ptr [rsi+0x04]
vmovups ymmword ptr [rbp+0x10], ymm0
vmovups ymmword ptr [rsp], ymm0
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
call [rax]System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
- mov r13d, eax
- cmp r13d, -1
- jne SHORT G_M21896_IG12
+ cmp eax, -1
+ jne SHORT G_M21896_IG11
mov rsi, gword ptr [rbx+0x08]
- mov edi, r15d
- sar edi, 16
- cmp edi, dword ptr [rsi+0x08]
- jae SHORT G_M21896_IG14
+ cmp r13d, dword ptr [rsi+0x08]
+ jae SHORT G_M21896_IG12
mov rsi, gword ptr [rsi+8*r12+0x10]
mov rsi, gword ptr [rsi+0x08]
movzx rdi, r15w
cmp edi, dword ptr [rsi+0x08]
- jae SHORT G_M21896_IG14
+ jae SHORT G_M21896_IG12
mov esi, dword ptr [rsi+r14+0x18]
vmovups ymm0, ymmword ptr [rbp+0x10]
vmovups ymmword ptr [rsp], ymm0
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
call [rax]System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this
- mov r13d, eax
- ;; size=150 bbWeight=0.50 PerfScore 25.38
-G_M21896_IG12:
- mov eax, r13d
+ mov r14d, eax
+ ;; size=214 bbWeight=0.50 PerfScore 33.62
+G_M21896_IG09:
+ mov eax, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M21896_IG13:
- vzeroupper
- add rsp, 88
+G_M21896_IG10:
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0.50 PerfScore 2.62
-G_M21896_IG14:
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M21896_IG11:
+ mov r14d, eax
+ jmp SHORT G_M21896_IG09
+ ;; size=5 bbWeight=0.25 PerfScore 0.56
+G_M21896_IG12:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 956, prolog size 28, PerfScore 153.12, instruction count 249, allocated bytes for code 956 (MethodHash=0301aa77) for method System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this (FullOpts)
+; Total bytes of code 577, prolog size 19, PerfScore 93.31, instruction count 153, allocated bytes for code 577 (MethodHash=0301aa77) for method System.Data.RBTree`1[System.Numerics.Vector`1[float]]:IndexOf(int,System.Numerics.Vector`1[float]):int:this (FullOpts) -192 (-19.79 % of base) - System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapPartitionedStream[System.__Canon,System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],System.Linq.Parallel.IPartitionedStreamRecipient`1[double],ubyte,System.Linq.Parallel.QuerySettings):this ; Assembly listing for method System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapPartitionedStream[System.__Canon,System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],System.Linq.Parallel.IPartitionedStreamRecipient`1[double],ubyte,System.Linq.Parallel.QuerySettings):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; 36 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 7.50) ref -> rbx this class-hnd single-def <System.Linq.Parallel.ConcatQueryOperator`1[double]>
; V01 TypeCtx [V01,T02] ( 7, 4.20) long -> rdi single-def
; V02 arg1 [V02,T01] ( 7, 4.50) ref -> r15 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[double,System.__Canon]>
; V03 arg2 [V03,T03] ( 6, 4 ) ref -> r14 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
; V04 arg3 [V04,T04] ( 6, 4 ) ref -> r13 class-hnd single-def <System.Linq.Parallel.IPartitionedStreamRecipient`1[double]>
-; V05 arg4 [V05,T08] ( 5, 3.50) ubyte -> r12 single-def
-; V06 arg5 [V06,T10] ( 3, 3 ) struct (48) [rbp+0x10] do-not-enreg[S] single-def <System.Linq.Parallel.QuerySettings>
-; V07 loc0 [V07,T20] ( 4, 2 ) ref -> r15 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[double,int]>
+; V05 arg4 [V05,T05] ( 5, 3.50) ubyte -> r12 single-def
+; V06 arg5 [V06,T07] ( 3, 3 ) struct (48) [rbp+0x10] do-not-enreg[S] single-def <System.Linq.Parallel.QuerySettings>
+; V07 loc0 [V07,T17] ( 4, 2 ) ref -> r15 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[double,int]>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T32] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V10 tmp2 [V10,T29] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp4 [V12,T24] ( 2, 2 ) ref -> [rbp-0x68] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.QueryOperator`1[double]>
-;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+; V12 tmp4 [V12,T21] ( 2, 2 ) ref -> [rbp-0x58] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.QueryOperator`1[double]>
+;* V13 tmp5 [V13 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Linq.Parallel.ListQueryResults`1[double]>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (48) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Linq.Parallel.QuerySettings>
;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Threading.Tasks.TaskScheduler>
-; V16 tmp8 [V16,T33] ( 2, 2 ) ubyte -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V16 tmp8 [V16,T30] ( 2, 2 ) ubyte -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Linq.Parallel.CancellationState>
-; V18 tmp10 [V18,T19] ( 4, 2.20) long -> rsi "Inlining Arg"
+; V18 tmp10 [V18,T16] ( 4, 2.20) long -> rsi "Inlining Arg"
;* V19 tmp11 [V19 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V20 tmp12 [V20,T05] ( 6, 6 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.ListQueryResults`1[double]>
-; V21 tmp13 [V21,T25] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.MergeExecutor`1[double]>
-; V22 tmp14 [V22,T26] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" <double[]>
-; V23 tmp15 [V23,T34] ( 2, 2 ) int -> [rbp-0x3C] spill-single-def "impAppendStmt"
+;* V20 tmp12 [V20 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+; V21 tmp13 [V21,T22] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.MergeExecutor`1[double]>
+;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <double[]>
+; V23 tmp15 [V23,T31] ( 2, 2 ) int -> [rbp-0x3C] spill-single-def "impAppendStmt"
;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Linq.Parallel.PartitionedStream`2[double,int]>
;* V25 tmp17 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperator`1[double]>
-;* V26 tmp18 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+;* V26 tmp18 [V26 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Linq.Parallel.ListQueryResults`1[double]>
;* V27 tmp19 [V27 ] ( 0, 0 ) struct (48) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Linq.Parallel.QuerySettings>
;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Threading.Tasks.TaskScheduler>
-; V29 tmp21 [V29,T35] ( 2, 2 ) ubyte -> r8 "Inlining Arg"
+; V29 tmp21 [V29,T32] ( 2, 2 ) ubyte -> r8 "Inlining Arg"
;* V30 tmp22 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Linq.Parallel.CancellationState>
-; V31 tmp23 [V31,T06] ( 6, 6 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.ListQueryResults`1[double]>
-; V32 tmp24 [V32,T27] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.MergeExecutor`1[double]>
-; V33 tmp25 [V33,T28] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" <double[]>
-; V34 tmp26 [V34,T09] ( 6, 3.40) long -> [rbp-0x48] "Inlining Arg"
+;* V31 tmp23 [V31 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+; V32 tmp24 [V32,T23] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.MergeExecutor`1[double]>
+;* V33 tmp25 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <double[]>
+; V34 tmp26 [V34,T06] ( 6, 3.40) long -> [rbp-0x48] "Inlining Arg"
;* V35 tmp27 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V36 tmp28 [V36,T36] ( 2, 2 ) int -> [rbp-0x4C] spill-single-def "impAppendStmt"
-; V37 tmp29 [V37,T44] ( 2, 1 ) ref -> r12 class-hnd single-def "Inline stloc first use temp" <System.Linq.Parallel.PartitionedStream`2[double,int]>
+; V36 tmp28 [V36,T33] ( 2, 2 ) int -> [rbp-0x4C] spill-single-def "impAppendStmt"
+; V37 tmp29 [V37,T38] ( 2, 1 ) ref -> r12 class-hnd single-def "Inline stloc first use temp" <System.Linq.Parallel.PartitionedStream`2[double,int]>
;* V38 tmp30 [V38 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V39 tmp31 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperator`1[double]>
-;* V40 tmp32 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+;* V40 tmp32 [V40 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Linq.Parallel.ListQueryResults`1[double]>
;* V41 tmp33 [V41 ] ( 0, 0 ) struct (48) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Linq.Parallel.QuerySettings>
;* V42 tmp34 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Threading.Tasks.TaskScheduler>
-; V43 tmp35 [V43,T37] ( 2, 2 ) ubyte -> r8 "Inlining Arg"
+; V43 tmp35 [V43,T34] ( 2, 2 ) ubyte -> r8 "Inlining Arg"
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Linq.Parallel.CancellationState>
-; V45 tmp37 [V45,T07] ( 6, 6 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.ListQueryResults`1[double]>
-; V46 tmp38 [V46,T29] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.MergeExecutor`1[double]>
-; V47 tmp39 [V47,T30] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" <double[]>
-;* V48 tmp40 [V48 ] ( 0, 0 ) ref -> zero-ref single-def "V14.[000..008)"
-;* V49 tmp41 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "V14.[008..016)"
-;* V50 tmp42 [V50 ] ( 0, 0 ) int -> zero-ref "V14.[016..020)"
-;* V51 tmp43 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "V27.[000..008)"
-;* V52 tmp44 [V52 ] ( 0, 0 ) ref -> zero-ref single-def "V27.[008..016)"
-;* V53 tmp45 [V53 ] ( 0, 0 ) int -> zero-ref "V27.[016..020)"
-;* V54 tmp46 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "V41.[000..008)"
-;* V55 tmp47 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "V41.[008..016)"
-;* V56 tmp48 [V56 ] ( 0, 0 ) int -> zero-ref "V41.[016..020)"
-; V57 tmp49 [V57,T16] ( 4, 2.50) ref -> [rbp-0x88] spill-single-def "V06.[000..008)"
-; V58 tmp50 [V58,T17] ( 4, 2.50) ref -> [rbp-0x90] spill-single-def "V06.[008..016)"
-; V59 tmp51 [V59,T18] ( 4, 2.50) int -> [rbp-0x50] spill-single-def "V06.[016..020)"
-; V60 tmp52 [V60,T38] ( 2, 2 ) long -> rsi "argument with side effect"
-; V61 tmp53 [V61,T39] ( 2, 2 ) long -> rsi "argument with side effect"
-; V62 tmp54 [V62,T40] ( 2, 2 ) long -> rdi "argument with side effect"
-; V63 tmp55 [V63,T31] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V64 cse0 [V64,T41] ( 3, 1.50) int -> [rbp-0x54] spill-single-def "CSE #04: moderate"
-; V65 cse1 [V65,T42] ( 3, 1.50) int -> [rbp-0x58] spill-single-def "CSE #01: moderate"
-; V66 cse2 [V66,T43] ( 3, 1.50) int -> [rbp-0x5C] spill-single-def "CSE #08: moderate"
-; V67 rat0 [V67,T11] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V68 rat1 [V68,T21] ( 3, 2 ) long -> rdi "runtime lookup"
-; V69 rat2 [V69,T12] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
-; V70 rat3 [V70,T13] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
-; V71 rat4 [V71,T22] ( 3, 2 ) long -> rsi "runtime lookup"
-; V72 rat5 [V72,T14] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V73 rat6 [V73,T23] ( 3, 2 ) long -> rsi "runtime lookup"
-; V74 rat7 [V74,T15] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V45 tmp37 [V45 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+; V46 tmp38 [V46,T24] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.MergeExecutor`1[double]>
+;* V47 tmp39 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <double[]>
+;* V48 tmp40 [V48 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+;* V49 tmp41 [V49 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+;* V50 tmp42 [V50 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Linq.Parallel.ListQueryResults`1[double]>
+;* V51 tmp43 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "V14.[000..008)"
+;* V52 tmp44 [V52 ] ( 0, 0 ) ref -> zero-ref single-def "V14.[008..016)"
+;* V53 tmp45 [V53 ] ( 0, 0 ) int -> zero-ref "V14.[016..020)"
+;* V54 tmp46 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "V27.[000..008)"
+;* V55 tmp47 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "V27.[008..016)"
+;* V56 tmp48 [V56 ] ( 0, 0 ) int -> zero-ref "V27.[016..020)"
+;* V57 tmp49 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "V41.[000..008)"
+;* V58 tmp50 [V58 ] ( 0, 0 ) ref -> zero-ref single-def "V41.[008..016)"
+;* V59 tmp51 [V59 ] ( 0, 0 ) int -> zero-ref "V41.[016..020)"
+;* V60 tmp52 [V60 ] ( 0, 0 ) long -> zero-ref "V48.[000..008)"
+;* V61 tmp53 [V61 ] ( 0, 0 ) ref -> zero-ref "V48.[008..016)"
+;* V62 tmp54 [V62 ] ( 0, 0 ) int -> zero-ref "V48.[016..020)"
+;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "V48.[020..021)"
+;* V64 tmp56 [V64 ] ( 0, 0 ) long -> zero-ref "V49.[000..008)"
+;* V65 tmp57 [V65 ] ( 0, 0 ) ref -> zero-ref "V49.[008..016)"
+;* V66 tmp58 [V66 ] ( 0, 0 ) int -> zero-ref "V49.[016..020)"
+;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "V49.[020..021)"
+;* V68 tmp60 [V68 ] ( 0, 0 ) long -> zero-ref "V50.[000..008)"
+;* V69 tmp61 [V69 ] ( 0, 0 ) ref -> zero-ref "V50.[008..016)"
+;* V70 tmp62 [V70 ] ( 0, 0 ) int -> zero-ref "V50.[016..020)"
+;* V71 tmp63 [V71 ] ( 0, 0 ) ubyte -> zero-ref "V50.[020..021)"
+; V72 tmp64 [V72,T13] ( 4, 2.50) ref -> [rbp-0x60] spill-single-def "V06.[000..008)"
+; V73 tmp65 [V73,T14] ( 4, 2.50) ref -> [rbp-0x68] spill-single-def "V06.[008..016)"
+; V74 tmp66 [V74,T15] ( 4, 2.50) int -> [rbp-0x50] spill-single-def "V06.[016..020)"
+; V75 tmp67 [V75,T35] ( 2, 2 ) long -> rsi "argument with side effect"
+; V76 tmp68 [V76,T25] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V77 tmp69 [V77,T36] ( 2, 2 ) long -> rsi "argument with side effect"
+; V78 tmp70 [V78,T37] ( 2, 2 ) long -> rdi "argument with side effect"
+; V79 tmp71 [V79,T26] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V80 tmp72 [V80,T27] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V81 tmp73 [V81,T28] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V82 rat0 [V82,T08] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V83 rat1 [V83,T18] ( 3, 2 ) long -> rdi "runtime lookup"
+; V84 rat2 [V84,T09] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+; V85 rat3 [V85,T10] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
+; V86 rat4 [V86,T19] ( 3, 2 ) long -> rsi "runtime lookup"
+; V87 rat5 [V87,T11] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V88 rat6 [V88,T20] ( 3, 2 ) long -> rsi "runtime lookup"
+; V89 rat7 [V89,T12] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 120
+; Lcl frame size = 88
G_M17093_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 120
- lea rbp, [rsp+0xA0]
+ sub rsp, 88
+ lea rbp, [rsp+0x80]
mov qword ptr [rbp-0x30], rsi
mov rbx, rdi
mov rdi, rsi
mov r15, rdx
mov r14, rcx
mov r13, r8
mov r12d, r9d
;; size=44 bbWeight=1 PerfScore 9.25
G_M17093_IG02:
mov rax, gword ptr [rbp+0x10]
- mov gword ptr [rbp-0x88], rax
+ mov gword ptr [rbp-0x60], rax
mov r10, gword ptr [rbp+0x18]
- mov gword ptr [rbp-0x90], r10
+ mov gword ptr [rbp-0x68], r10
mov r11d, dword ptr [rbp+0x20]
mov dword ptr [rbp-0x50], r11d
cmp byte ptr [rbx+0x50], 0
- je G_M17093_IG07
- ;; size=40 bbWeight=1 PerfScore 10.00
+ je G_M17093_IG06
+ ;; size=34 bbWeight=1 PerfScore 10.00
G_M17093_IG03:
mov rsi, gword ptr [r15+0x08]
mov ecx, dword ptr [rsi+0x08]
- mov dword ptr [rbp-0x58], ecx
mov dword ptr [rbp-0x34], ecx
- mov r9, gword ptr [rbx+0x40]
- mov gword ptr [rbp-0x68], r9
+ mov rdx, gword ptr [rbx+0x40]
+ mov gword ptr [rbp-0x58], rdx
mov rsi, qword ptr [rdi+0x18]
mov rsi, qword ptr [rsi+0x20]
test rsi, rsi
- je G_M17093_IG15
- ;; size=38 bbWeight=0.50 PerfScore 7.12
+ je G_M17093_IG14
+ ;; size=35 bbWeight=0.50 PerfScore 6.62
G_M17093_IG04:
- movzx r8, byte ptr [r9+0x38]
- mov dword ptr [rbp-0x38], r8d
+ movzx r9, byte ptr [rdx+0x38]
+ mov dword ptr [rbp-0x38], r9d
mov rdi, qword ptr [rsi+0x18]
mov rdi, qword ptr [rdi+0x10]
test rdi, rdi
- je G_M17093_IG16
+ je G_M17093_IG15
;; size=26 bbWeight=0.50 PerfScore 4.12
G_M17093_IG05:
mov gword ptr [rsp], r10
mov dword ptr [rsp+0x08], r11d
mov rsi, r15
mov r8, rax
- mov r9d, dword ptr [rbp-0x38]
xor edx, edx
mov ecx, 3
mov r15, 0xD1FFAB1E ; code for System.Linq.Parallel.MergeExecutor`1[double]:Execute[System.__Canon](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],ubyte,int,System.Threading.Tasks.TaskScheduler,ubyte,System.Linq.Parallel.CancellationState,int):System.Linq.Parallel.MergeExecutor`1[double]
call [r15]System.Linq.Parallel.MergeExecutor`1[double]:Execute[System.__Canon](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],ubyte,int,System.Threading.Tasks.TaskScheduler,ubyte,System.Linq.Parallel.CancellationState,int):System.Linq.Parallel.MergeExecutor`1[double]
- mov r15, rax
- mov rdi, 0xD1FFAB1E ; System.Linq.Parallel.ListQueryResults`1[double]
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x70], rax
- mov rdi, gword ptr [r15+0x08]
+ mov rdi, gword ptr [rax+0x08]
mov r11, 0xD1FFAB1E ; code for System.Linq.Parallel.IMergeHelper`1[double]:GetResultsAsArray():double[]:this
call [r11]System.Linq.Parallel.IMergeHelper`1[double]:GetResultsAsArray():double[]:this
- mov r15, gword ptr [rbp-0x70]
- lea rdi, bword ptr [r15+0x08]
- mov rsi, rax
- call CORINFO_HELP_ASSIGN_REF
- mov eax, dword ptr [rbp-0x34]
- mov dword ptr [r15+0x10], eax
- mov byte ptr [r15+0x14], r12b
- movzx rdx, byte ptr [r15+0x14]
- mov esi, dword ptr [rbp-0x58]
- mov rdi, gword ptr [r15+0x08]
+ mov rdi, rax
+ movzx rdx, r12b
+ mov esi, dword ptr [rbp-0x34]
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.ExchangeUtilities:PartitionDataSource[double](System.Collections.Generic.IEnumerable`1[double],int,ubyte):System.Linq.Parallel.PartitionedStream`2[double,int]
call [rax]System.Linq.Parallel.ExchangeUtilities:PartitionDataSource[double](System.Collections.Generic.IEnumerable`1[double],int,ubyte):System.Linq.Parallel.PartitionedStream`2[double,int]
mov r15, rax
cmp byte ptr [rbx+0x51], 0
- je G_M17093_IG17
+ je G_M17093_IG16
mov rdi, gword ptr [r15+0x08]
mov eax, dword ptr [rdi+0x08]
- mov dword ptr [rbp-0x54], eax
mov dword ptr [rbp-0x3C], eax
mov rdi, gword ptr [rbx+0x40]
movzx r8, byte ptr [rdi+0x38]
- mov r11d, dword ptr [rbp-0x50]
- mov dword ptr [rsp], r11d
+ mov r10d, dword ptr [rbp-0x50]
+ mov dword ptr [rsp], r10d
mov rdi, r14
- mov r9, gword ptr [rbp-0x90]
- mov rcx, gword ptr [rbp-0x88]
+ mov r9, gword ptr [rbp-0x68]
+ mov rcx, gword ptr [rbp-0x60]
xor esi, esi
mov edx, 3
- mov r11, 0xD1FFAB1E ; code for System.Linq.Parallel.MergeExecutor`1[double]:Execute[System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],ubyte,int,System.Threading.Tasks.TaskScheduler,ubyte,System.Linq.Parallel.CancellationState,int):System.Linq.Parallel.MergeExecutor`1[double]
- call [r11]System.Linq.Parallel.MergeExecutor`1[double]:Execute[System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],ubyte,int,System.Threading.Tasks.TaskScheduler,ubyte,System.Linq.Parallel.CancellationState,int):System.Linq.Parallel.MergeExecutor`1[double]
- mov r14, rax
- mov rdi, 0xD1FFAB1E ; System.Linq.Parallel.ListQueryResults`1[double]
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x78], rax
- mov rdi, gword ptr [r14+0x08]
- ;; size=235 bbWeight=0.50 PerfScore 27.88
-G_M17093_IG06:
+ mov r10, 0xD1FFAB1E ; code for System.Linq.Parallel.MergeExecutor`1[double]:Execute[System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],ubyte,int,System.Threading.Tasks.TaskScheduler,ubyte,System.Linq.Parallel.CancellationState,int):System.Linq.Parallel.MergeExecutor`1[double]
+ call [r10]System.Linq.Parallel.MergeExecutor`1[double]:Execute[System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],ubyte,int,System.Threading.Tasks.TaskScheduler,ubyte,System.Linq.Parallel.CancellationState,int):System.Linq.Parallel.MergeExecutor`1[double]
+ mov rdi, gword ptr [rax+0x08]
mov r11, 0xD1FFAB1E ; code for System.Linq.Parallel.IMergeHelper`1[double]:GetResultsAsArray():double[]:this
call [r11]System.Linq.Parallel.IMergeHelper`1[double]:GetResultsAsArray():double[]:this
- mov r14, gword ptr [rbp-0x78]
- lea rdi, bword ptr [r14+0x08]
- mov rsi, rax
- call CORINFO_HELP_ASSIGN_REF
- mov edx, dword ptr [rbp-0x3C]
- mov dword ptr [r14+0x10], edx
- mov byte ptr [r14+0x14], r12b
- movzx rdx, byte ptr [r14+0x14]
- mov esi, dword ptr [rbp-0x54]
- mov rdi, gword ptr [r14+0x08]
+ mov rdi, rax
+ movzx rdx, r12b
+ mov esi, dword ptr [rbp-0x3C]
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.ExchangeUtilities:PartitionDataSource[double](System.Collections.Generic.IEnumerable`1[double],int,ubyte):System.Linq.Parallel.PartitionedStream`2[double,int]
call [rax]System.Linq.Parallel.ExchangeUtilities:PartitionDataSource[double](System.Collections.Generic.IEnumerable`1[double],int,ubyte):System.Linq.Parallel.PartitionedStream`2[double,int]
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rcx, r13
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapHelper2[int,int](System.Linq.Parallel.PartitionedStream`2[double,int],System.Linq.Parallel.PartitionedStream`2[double,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[double]):this
call [rax]System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapHelper2[int,int](System.Linq.Parallel.PartitionedStream`2[double,int],System.Linq.Parallel.PartitionedStream`2[double,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[double]):this
- jmp G_M17093_IG18
- ;; size=93 bbWeight=0.50 PerfScore 11.75
-G_M17093_IG07:
+ jmp G_M17093_IG17
+ ;; size=213 bbWeight=0.50 PerfScore 26.88
+G_M17093_IG06:
mov rsi, qword ptr [rdi+0x18]
mov rcx, qword ptr [rsi+0x18]
test rcx, rcx
- je G_M17093_IG10
+ je G_M17093_IG09
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M17093_IG08:
+G_M17093_IG07:
cmp byte ptr [rbx+0x51], 0
- je G_M17093_IG11
+ je G_M17093_IG10
mov qword ptr [rbp-0x48], rcx
mov rdi, gword ptr [r15+0x08]
mov edx, dword ptr [rdi+0x08]
- mov dword ptr [rbp-0x5C], edx
mov dword ptr [rbp-0x4C], edx
mov rdi, gword ptr [rbx+0x40]
movzx r8, byte ptr [rdi+0x38]
mov dword ptr [rsp], r11d
mov rdi, r14
mov r9, r10
mov rcx, rax
xor esi, esi
mov edx, 3
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.MergeExecutor`1[double]:Execute[System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],ubyte,int,System.Threading.Tasks.TaskScheduler,ubyte,System.Linq.Parallel.CancellationState,int):System.Linq.Parallel.MergeExecutor`1[double]
call [rax]System.Linq.Parallel.MergeExecutor`1[double]:Execute[System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],ubyte,int,System.Threading.Tasks.TaskScheduler,ubyte,System.Linq.Parallel.CancellationState,int):System.Linq.Parallel.MergeExecutor`1[double]
- mov r14, rax
- mov rdi, 0xD1FFAB1E ; System.Linq.Parallel.ListQueryResults`1[double]
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x80], rax
- mov rdi, gword ptr [r14+0x08]
+ mov rdi, gword ptr [rax+0x08]
mov r11, 0xD1FFAB1E ; code for System.Linq.Parallel.IMergeHelper`1[double]:GetResultsAsArray():double[]:this
call [r11]System.Linq.Parallel.IMergeHelper`1[double]:GetResultsAsArray():double[]:this
- mov r14, gword ptr [rbp-0x80]
- lea rdi, bword ptr [r14+0x08]
- mov rsi, rax
- call CORINFO_HELP_ASSIGN_REF
- mov edx, dword ptr [rbp-0x4C]
- mov dword ptr [r14+0x10], edx
- mov byte ptr [r14+0x14], r12b
- movzx rdx, byte ptr [r14+0x14]
- mov esi, dword ptr [rbp-0x5C]
- mov rdi, gword ptr [r14+0x08]
+ mov rdi, rax
+ movzx rdx, r12b
+ mov esi, dword ptr [rbp-0x4C]
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.ExchangeUtilities:PartitionDataSource[double](System.Collections.Generic.IEnumerable`1[double],int,ubyte):System.Linq.Parallel.PartitionedStream`2[double,int]
call [rax]System.Linq.Parallel.ExchangeUtilities:PartitionDataSource[double](System.Collections.Generic.IEnumerable`1[double],int,ubyte):System.Linq.Parallel.PartitionedStream`2[double,int]
mov r12, rax
mov r14, qword ptr [rbp-0x48]
mov rsi, qword ptr [r14+0x18]
mov rsi, qword ptr [rsi+0x20]
test rsi, rsi
- je G_M17093_IG14
- ;; size=182 bbWeight=0.50 PerfScore 24.38
-G_M17093_IG09:
+ je G_M17093_IG13
+ ;; size=128 bbWeight=0.50 PerfScore 18.00
+G_M17093_IG08:
mov rdi, rbx
mov rdx, r15
mov rcx, r12
mov r8, r13
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapHelper2[System.__Canon,int](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],System.Linq.Parallel.PartitionedStream`2[double,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[double]):this
call [rax]System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapHelper2[System.__Canon,int](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],System.Linq.Parallel.PartitionedStream`2[double,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[double]):this
- jmp G_M17093_IG18
+ jmp G_M17093_IG17
;; size=29 bbWeight=0.50 PerfScore 3.12
-G_M17093_IG10:
+G_M17093_IG09:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov qword ptr [rbp-0x48], rax
- mov rax, gword ptr [rbp-0x88]
+ mov rax, gword ptr [rbp-0x60]
mov rcx, qword ptr [rbp-0x48]
- mov r10, gword ptr [rbp-0x90]
+ mov r10, gword ptr [rbp-0x68]
mov r11d, dword ptr [rbp-0x50]
- jmp G_M17093_IG08
- ;; size=46 bbWeight=0.10 PerfScore 0.82
-G_M17093_IG11:
+ jmp G_M17093_IG07
+ ;; size=40 bbWeight=0.10 PerfScore 0.82
+G_M17093_IG10:
mov rdi, qword ptr [rcx+0x18]
mov rsi, qword ptr [rdi+0x18]
test rsi, rsi
- je SHORT G_M17093_IG13
+ je SHORT G_M17093_IG12
;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M17093_IG12:
+G_M17093_IG11:
mov rdi, rbx
mov rdx, r15
mov rcx, r14
mov r8, r13
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapHelper2[System.__Canon,System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],System.Linq.Parallel.IPartitionedStreamRecipient`1[double]):this
call [rax]System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapHelper2[System.__Canon,System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],System.Linq.Parallel.IPartitionedStreamRecipient`1[double]):this
- jmp G_M17093_IG18
+ jmp G_M17093_IG17
;; size=29 bbWeight=0.50 PerfScore 3.12
-G_M17093_IG13:
+G_M17093_IG12:
mov rdi, rcx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rsi, rax
- jmp SHORT G_M17093_IG12
+ jmp SHORT G_M17093_IG11
;; size=23 bbWeight=0.10 PerfScore 0.38
-G_M17093_IG14:
+G_M17093_IG13:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rsi, rax
- jmp G_M17093_IG09
+ jmp G_M17093_IG08
;; size=26 bbWeight=0.10 PerfScore 0.38
-G_M17093_IG15:
+G_M17093_IG14:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rsi, rax
- mov rax, gword ptr [rbp-0x88]
- mov r9, gword ptr [rbp-0x68]
- mov r10, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0x60]
+ mov rdx, gword ptr [rbp-0x58]
+ mov r10, gword ptr [rbp-0x68]
mov r11d, dword ptr [rbp-0x50]
jmp G_M17093_IG04
- ;; size=45 bbWeight=0.10 PerfScore 0.75
-G_M17093_IG16:
+ ;; size=39 bbWeight=0.10 PerfScore 0.75
+G_M17093_IG15:
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rdi, rax
- mov rax, gword ptr [rbp-0x88]
- mov r10, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0x60]
+ mov r9d, dword ptr [rbp-0x38]
+ mov r10, gword ptr [rbp-0x68]
mov r11d, dword ptr [rbp-0x50]
jmp G_M17093_IG05
- ;; size=44 bbWeight=0.10 PerfScore 0.68
-G_M17093_IG17:
+ ;; size=42 bbWeight=0.10 PerfScore 0.77
+G_M17093_IG16:
mov rdi, rbx
mov rsi, r15
mov rdx, r14
mov rcx, r13
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapHelper2[int,System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,int],System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],System.Linq.Parallel.IPartitionedStreamRecipient`1[double]):this
call [rax]System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapHelper2[int,System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,int],System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],System.Linq.Parallel.IPartitionedStreamRecipient`1[double]):this
;; size=24 bbWeight=0.50 PerfScore 2.12
-G_M17093_IG18:
+G_M17093_IG17:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M17093_IG19:
- add rsp, 120
+G_M17093_IG18:
+ add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 970, prolog size 26, PerfScore 115.62, instruction count 224, allocated bytes for code 970 (MethodHash=fee4bd3a) for method System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapPartitionedStream[System.__Canon,System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],System.Linq.Parallel.IPartitionedStreamRecipient`1[double],ubyte,System.Linq.Parallel.QuerySettings):this (FullOpts)
+; Total bytes of code 778, prolog size 26, PerfScore 96.10, instruction count 188, allocated bytes for code 778 (MethodHash=fee4bd3a) for method System.Linq.Parallel.ConcatQueryOperator`1[double]:WrapPartitionedStream[System.__Canon,System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon],System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]],System.Linq.Parallel.IPartitionedStreamRecipient`1[double],ubyte,System.Linq.Parallel.QuerySettings):this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/10da7ad68bfc5df7ea42257f6f1b28f1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 16 minutes.
dotnet/runtime#103361
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: