forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] xtqqczze/dotnet-runtime/MemoryExtensionsNullCheck #513
Comments
Top method regressions38 (2.11 % of base) - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this ; Assembly listing for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 37 single block inlinees; 17 inlinees without PGO data
+; 0 inlinees with PGO data; 36 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T07] ( 11, 8.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.Pkcs.SignerInfo>
; V01 arg1 [V01,T27] ( 5, 3.50) ubyte -> r15 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Security.Cryptography.HashAlgorithmName>
; V03 loc1 [V03,T19] ( 15, 7.50) ref -> r14 class-hnd exact single-def <System.Security.Cryptography.IncrementalHash>
; V04 loc2 [V04,T37] ( 3, 3.50) ubyte -> r13
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.PlatformNotSupportedException>
; V06 loc4 [V06,T58] ( 3, 1.50) byref -> rdx single-def
; V07 loc5 [V07,T66] ( 3, 1.50) struct (24) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op <System.Nullable`1[System.ReadOnlyMemory`1[ubyte]]>
; V08 loc6 [V08 ] ( 10, 5 ) struct (16) [rbp-0x50] do-not-enreg[SBR] multireg-ret must-init ld-addr-op single-def <System.ReadOnlyMemory`1[ubyte]>
; V09 loc7 [V09,T21] ( 4, 6.50) ref -> r12 class-hnd single-def <ubyte[]>
; V10 loc8 [V10,T20] ( 8, 7.50) ref -> [rbp-0xC8] class-hnd exact spill-single-def <System.Formats.Asn1.AsnWriter>
;* V11 loc9 [V11,T77] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
; V12 loc10 [V12,T28] ( 3, 5 ) ref -> rbx class-hnd exact single-def <System.Security.Cryptography.Asn1.AttributeAsn[]>
;* V13 loc11 [V13,T85] ( 0, 0 ) int -> zero-ref
; V14 loc12 [V14 ] ( 5, 16 ) struct (16) [rbp-0x60] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op <System.Security.Cryptography.Asn1.AttributeAsn>
; V15 loc13 [V15,T11] ( 4, 8 ) ref -> r13 class-hnd exact <System.Security.Cryptography.Pkcs.Pkcs9MessageDigest>
; V16 loc14 [V16,T51] ( 4, 2 ) ref -> rax class-hnd single-def <ubyte[]>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V19 tmp2 [V19,T53] ( 3, 2 ) int -> rdi
; V20 tmp3 [V20,T87] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
; V21 tmp4 [V21,T42] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnWriter>
; V22 tmp5 [V22,T82] ( 1, 1 ) struct (32) [rbp-0x80] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.Formats.Asn1.AsnWriter+Scope>
; V23 tmp6 [V23,T15] ( 2, 8 ) ref -> rax class-hnd exact "dup spill" <System.Security.Cryptography.CryptographicAttributeObject>
;* V24 tmp7 [V24 ] ( 0, 0 ) ref -> zero-ref
;* V25 tmp8 [V25 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
;* V26 tmp9 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V27 tmp10 [V27,T88] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
; V28 tmp11 [V28,T89] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
; V29 tmp12 [V29,T83] ( 1, 1 ) struct (32) [rbp-0xA0] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.Formats.Asn1.AsnWriter+Scope>
;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret single-def "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
;* V31 tmp14 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
;* V32 tmp15 [V32 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.ReadOnlyMemory`1[ubyte]>
;* V33 tmp16 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V34 tmp17 [V34,T92] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <System.PlatformNotSupportedException>
; V35 tmp18 [V35,T90] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.Security.Cryptography.HashAlgorithmName>
; V36 tmp19 [V36,T93] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impImportAndPushBox" <System.String>
; V37 tmp20 [V37,T91] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
;* V38 tmp21 [V38 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.Oid>
;* V39 tmp22 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V40 tmp23 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.Pkcs.SignedCms>
; V41 tmp24 [V41,T43] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.Pkcs.SignedCms>
;* V42 tmp25 [V42 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
; V43 tmp26 [V43,T38] ( 6, 3 ) byref -> r13 "Inline stloc first use temp"
; V44 tmp27 [V44,T40] ( 6, 3 ) int -> rdx "Inline stloc first use temp"
;* V45 tmp28 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V46 tmp29 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V47 tmp30 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V48 tmp31 [V48 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V49 tmp32 [V49 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" <System.Span`1[ubyte]>
; V50 tmp33 [V50,T67] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp"
;* V51 tmp34 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V52 tmp35 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
;* V53 tmp36 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
; V54 tmp37 [V54,T54] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V55 tmp38 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V56 tmp39 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V57 tmp40 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.HMACCommon>
;* V58 tmp41 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V59 tmp42 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.HMACCommon>
;* V60 tmp43 [V60 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
; V61 tmp44 [V61,T39] ( 6, 3 ) byref -> r12 "Inline stloc first use temp"
; V62 tmp45 [V62,T41] ( 6, 3 ) int -> rdx "Inline stloc first use temp"
; V63 tmp46 [V63,T30] ( 4, 4 ) byref -> r13 single-def "Inlining Arg"
; V64 tmp47 [V64,T35] ( 7, 3.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V65 tmp48 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V66 tmp49 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V67 tmp50 [V67 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V68 tmp51 [V68 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" <System.Span`1[ubyte]>
; V69 tmp52 [V69,T68] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp"
; V70 tmp53 [V70,T69] ( 3, 1.50) int -> rsi single-def "Inline stloc first use temp"
;* V71 tmp54 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
;* V72 tmp55 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
; V73 tmp56 [V73,T55] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
;* V74 tmp57 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V75 tmp58 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V76 tmp59 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.HMACCommon>
; V77 tmp60 [V77,T00] ( 5, 26 ) ref -> rdi class-hnd exact "Inlining Arg" <System.String>
;* V78 tmp61 [V78 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V79 tmp62 [V79,T05] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V80 tmp63 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
; V81 tmp64 [V81,T16] ( 2, 8 ) ref -> rsi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
;* V82 tmp65 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
; V83 tmp66 [V83,T17] ( 2, 8 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
;* V84 tmp67 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V85 tmp68 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <ubyte[]>
-; V86 tmp69 [V86,T18] ( 2, 8 ) ref -> rdx class-hnd "dup spill" <ubyte[]>
-; V87 tmp70 [V87,T04] ( 6, 12 ) ref -> rdx
-;* V88 tmp71 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <ubyte[]>
-;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <ubyte[]>
-; V90 tmp73 [V90,T12] ( 4, 8 ) ref -> [rbp-0xD0] class-hnd "Inline return value spill temp" <ubyte[]>
-; V91 tmp74 [V91,T02] ( 4, 16 ) ref -> rdi class-hnd "Inlining Arg" <ubyte[]>
-;* V92 tmp75 [V92 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
-; V93 tmp76 [V93 ] ( 5, 20 ) struct (16) [rbp-0xB0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-;* V94 tmp77 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V95 tmp78 [V95,T31] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
-;* V96 tmp79 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V97 tmp80 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V98 tmp81 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V99 tmp82 [V99 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V100 tmp83 [V100 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V85 tmp68 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
+;* V86 tmp69 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <ubyte[]>
+; V87 tmp70 [V87,T18] ( 2, 8 ) ref -> rdx class-hnd "dup spill" <ubyte[]>
+; V88 tmp71 [V88,T04] ( 6, 12 ) ref -> rdx
+;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <ubyte[]>
+;* V90 tmp73 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <ubyte[]>
+; V91 tmp74 [V91,T12] ( 4, 8 ) ref -> [rbp-0xD0] class-hnd "Inline return value spill temp" <ubyte[]>
+; V92 tmp75 [V92,T02] ( 4, 16 ) ref -> rdi class-hnd "Inlining Arg" <ubyte[]>
+;* V93 tmp76 [V93 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
+; V94 tmp77 [V94 ] ( 5, 20 ) struct (16) [rbp-0xB0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V95 tmp78 [V95 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+; V96 tmp79 [V96,T31] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
+;* V97 tmp80 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V98 tmp81 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V99 tmp82 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V100 tmp83 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V101 tmp84 [V101 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-;* V102 tmp85 [V102 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V103 tmp86 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V104 tmp87 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V106 tmp89 [V106 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Cryptography.Oid>
-; V107 tmp90 [V107,T52] ( 3, 2 ) ref -> [rbp-0xD8] do-not-enreg[H] EH-live "field V02._name (fldOffset=0x0)" P-INDEP
-; V108 tmp91 [V108,T36] ( 7, 3.50) ref -> [rbp-0x50] do-not-enreg[] "field V08._object (fldOffset=0x0)" P-DEP
-; V109 tmp92 [V109,T78] ( 2, 1 ) int -> [rbp-0x48] do-not-enreg[] "field V08._index (fldOffset=0x8)" P-DEP
-; V110 tmp93 [V110,T70] ( 3, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V08._length (fldOffset=0xc)" P-DEP
-; V111 tmp94 [V111 ] ( 4, 14 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V14.AttrType (fldOffset=0x0)" P-DEP
-; V112 tmp95 [V112 ] ( 3, 10 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V14.AttrValues (fldOffset=0x8)" P-DEP
-;* V113 tmp96 [V113 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V114 tmp97 [V114 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP
-; V115 tmp98 [V115,T33] ( 2, 4 ) byref -> [rbp-0xE0] spill-single-def "field V25._reference (fldOffset=0x0)" P-INDEP
-; V116 tmp99 [V116,T34] ( 2, 4 ) int -> [rbp-0xB4] spill-single-def "field V25._length (fldOffset=0x8)" P-INDEP
-;* V117 tmp100 [V117 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
-;* V118 tmp101 [V118 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
-; V119 tmp102 [V119,T59] ( 3, 1.50) byref -> rax "field V30._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp103 [V120,T71] ( 3, 1.50) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP
-;* V121 tmp104 [V121 ] ( 0, 0 ) ref -> zero-ref "field V31._object (fldOffset=0x0)" P-INDEP
-;* V122 tmp105 [V122 ] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP
-;* V123 tmp106 [V123 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0xc)" P-INDEP
-;* V124 tmp107 [V124 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP
-;* V125 tmp108 [V125 ] ( 0, 0 ) int -> zero-ref single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;* V126 tmp109 [V126 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp110 [V127 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V128 tmp111 [V128,T60] ( 3, 1.50) byref -> rsi single-def "field V46._reference (fldOffset=0x0)" P-INDEP
-; V129 tmp112 [V129,T72] ( 3, 1.50) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;* V130 tmp113 [V130 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-DEP
-;* V131 tmp114 [V131 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-DEP
-; V132 tmp115 [V132,T74] ( 2, 1 ) byref -> r13 "field V49._reference (fldOffset=0x0)" P-INDEP
-; V133 tmp116 [V133,T79] ( 2, 1 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP
-;* V134 tmp117 [V134 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V135 tmp118 [V135 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
-;* V136 tmp119 [V136 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP
-;* V137 tmp120 [V137 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP
-; V138 tmp121 [V138,T61] ( 3, 1.50) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP
-; V139 tmp122 [V139,T73] ( 3, 1.50) int -> rdx single-def "field V65._length (fldOffset=0x8)" P-INDEP
-;* V140 tmp123 [V140 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-DEP
-;* V141 tmp124 [V141 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-DEP
-; V142 tmp125 [V142,T75] ( 2, 1 ) byref -> r12 "field V68._reference (fldOffset=0x0)" P-INDEP
-; V143 tmp126 [V143,T80] ( 2, 1 ) int -> rdx "field V68._length (fldOffset=0x8)" P-INDEP
-;* V144 tmp127 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP
-;* V145 tmp128 [V145 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V146 tmp129 [V146,T22] ( 3, 6 ) byref -> rax "field V84._reference (fldOffset=0x0)" P-INDEP
-; V147 tmp130 [V147,T25] ( 3, 6 ) int -> rcx "field V84._length (fldOffset=0x8)" P-INDEP
-;* V148 tmp131 [V148 ] ( 0, 0 ) ref -> zero-ref "field V92._object (fldOffset=0x0)" P-INDEP
-;* V149 tmp132 [V149 ] ( 0, 0 ) int -> zero-ref "field V92._index (fldOffset=0x8)" P-INDEP
-;* V150 tmp133 [V150 ] ( 0, 0 ) int -> zero-ref "field V92._length (fldOffset=0xc)" P-INDEP
-; V151 tmp134 [V151,T08] ( 3, 10 ) ref -> [rbp-0xB0] do-not-enreg[] "field V93._object (fldOffset=0x0)" P-DEP
-; V152 tmp135 [V152,T09] ( 3, 10 ) int -> [rbp-0xA8] do-not-enreg[] "field V93._index (fldOffset=0x8)" P-DEP
-; V153 tmp136 [V153,T10] ( 3, 10 ) int -> [rbp-0xA4] do-not-enreg[] "field V93._length (fldOffset=0xc)" P-DEP
-; V154 tmp137 [V154,T23] ( 3, 6 ) byref -> rsi "field V94._reference (fldOffset=0x0)" P-INDEP
-; V155 tmp138 [V155,T13] ( 4, 8 ) int -> rdi "field V94._length (fldOffset=0x8)" P-INDEP
-;* V156 tmp139 [V156 ] ( 0, 0 ) byref -> zero-ref "field V96._reference (fldOffset=0x0)" P-INDEP
-;* V157 tmp140 [V157 ] ( 0, 0 ) int -> zero-ref "field V96._length (fldOffset=0x8)" P-INDEP
-;* V158 tmp141 [V158 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP
-;* V159 tmp142 [V159 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x8)" P-INDEP
-;* V160 tmp143 [V160 ] ( 0, 0 ) byref -> zero-ref "field V102._reference (fldOffset=0x0)" P-INDEP
-;* V161 tmp144 [V161 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP
-;* V162 tmp145 [V162 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP
-;* V163 tmp146 [V163 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP
-;* V164 tmp147 [V164 ] ( 0, 0 ) byref -> zero-ref "field V104._reference (fldOffset=0x0)" P-INDEP
-;* V165 tmp148 [V165 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP
-;* V166 tmp149 [V166 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
-;* V167 tmp150 [V167 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
-; V168 tmp151 [V168,T81] ( 2, 1 ) ubyte -> rsi single-def "V07.[000..001)"
-;* V169 tmp152 [V169 ] ( 0, 0 ) long -> zero-ref single-def "V106.[000..008)"
-; V170 tmp153 [V170,T56] ( 2, 2 ) ref -> rdi single-def "V106.[008..016)"
-;* V171 tmp154 [V171 ] ( 0, 0 ) ref -> zero-ref single-def "V106.[016..024)"
-;* V172 tmp155 [V172 ] ( 0, 0 ) ubyte -> zero-ref single-def "V106.[028..029)"
-; V173 tmp156 [V173,T44] ( 3, 3 ) byref -> rdi single-def "Spilling address for field-by-field copy"
-; V174 tmp157 [V174,T94] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V175 tmp158 [V175,T76] ( 2, 1 ) ref -> r13 single-def "Field obj"
-; V176 tmp159 [V176,T45] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V177 tmp160 [V177,T46] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V178 tmp161 [V178,T47] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V179 tmp162 [V179,T48] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V180 tmp163 [V180,T49] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V181 tmp164 [V181,T50] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V182 tmp165 [V182,T06] ( 3, 12 ) ref -> rdi "arr expr"
-; V183 tmp166 [V183,T14] ( 3, 8 ) ref -> rsi "argument with side effect"
-; V184 tmp167 [V184,T95] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V185 tmp168 [V185,T96] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V186 tmp169 [V186,T57] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V187 tmp170 [V187,T97] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V188 PSPSym [V188,T84] ( 1, 1 ) long -> [rbp-0xF0] do-not-enreg[V] "PSPSym"
-; V189 cse0 [V189,T24] ( 3, 6 ) ref -> rdi "CSE #10: moderate"
-; V190 cse1 [V190,T26] ( 3, 6 ) int -> rsi "CSE #11: moderate"
-; V191 cse2 [V191,T62] ( 3, 1.50) ref -> rdx "CSE #01: conservative"
-; V192 cse3 [V192,T63] ( 3, 1.50) ref -> rdi "CSE #02: conservative"
-; V193 cse4 [V193,T64] ( 3, 1.50) ref -> rdi "CSE #03: conservative"
-; V194 cse5 [V194,T65] ( 3, 1.50) ref -> rdi "CSE #05: conservative"
-; V195 cse6 [V195,T29] ( 3, 5 ) int -> [rbp-0xB8] spill-single-def "CSE #12: moderate"
-; V196 rat0 [V196,T01] ( 5, 16.50) long -> [rbp-0xC0] "Widened IV V13"
-; V197 rat1 [V197,T03] ( 4, 14 ) ref -> r13 "replacement local"
-; V198 rat2 [V198,T32] ( 3, 4 ) long -> rdi "CSE for expectedClsNode"
-; V199 rat3 [V199,T86] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+;* V102 tmp85 [V102 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V103 tmp86 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V104 tmp87 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V106 tmp89 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V107 tmp90 [V107 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Cryptography.Oid>
+; V108 tmp91 [V108,T52] ( 3, 2 ) ref -> [rbp-0xD8] do-not-enreg[H] EH-live "field V02._name (fldOffset=0x0)" P-INDEP
+; V109 tmp92 [V109,T36] ( 7, 3.50) ref -> [rbp-0x50] do-not-enreg[] "field V08._object (fldOffset=0x0)" P-DEP
+; V110 tmp93 [V110,T78] ( 2, 1 ) int -> [rbp-0x48] do-not-enreg[] "field V08._index (fldOffset=0x8)" P-DEP
+; V111 tmp94 [V111,T70] ( 3, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V08._length (fldOffset=0xc)" P-DEP
+; V112 tmp95 [V112 ] ( 4, 14 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V14.AttrType (fldOffset=0x0)" P-DEP
+; V113 tmp96 [V113 ] ( 3, 10 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V14.AttrValues (fldOffset=0x8)" P-DEP
+;* V114 tmp97 [V114 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V115 tmp98 [V115 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP
+; V116 tmp99 [V116,T22] ( 3, 6 ) byref -> [rbp-0xE0] "field V25._reference (fldOffset=0x0)" P-INDEP
+; V117 tmp100 [V117,T25] ( 3, 6 ) int -> [rbp-0xB4] "field V25._length (fldOffset=0x8)" P-INDEP
+;* V118 tmp101 [V118 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V119 tmp102 [V119 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
+; V120 tmp103 [V120,T59] ( 3, 1.50) byref -> rax "field V30._reference (fldOffset=0x0)" P-INDEP
+; V121 tmp104 [V121,T71] ( 3, 1.50) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP
+;* V122 tmp105 [V122 ] ( 0, 0 ) ref -> zero-ref "field V31._object (fldOffset=0x0)" P-INDEP
+;* V123 tmp106 [V123 ] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP
+;* V124 tmp107 [V124 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0xc)" P-INDEP
+;* V125 tmp108 [V125 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP
+;* V126 tmp109 [V126 ] ( 0, 0 ) int -> zero-ref single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;* V127 tmp110 [V127 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V128 tmp111 [V128 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+; V129 tmp112 [V129,T60] ( 3, 1.50) byref -> rsi single-def "field V46._reference (fldOffset=0x0)" P-INDEP
+; V130 tmp113 [V130,T72] ( 3, 1.50) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;* V131 tmp114 [V131 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-DEP
+;* V132 tmp115 [V132 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-DEP
+; V133 tmp116 [V133,T74] ( 2, 1 ) byref -> r13 "field V49._reference (fldOffset=0x0)" P-INDEP
+; V134 tmp117 [V134,T79] ( 2, 1 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP
+;* V135 tmp118 [V135 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V136 tmp119 [V136 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
+;* V137 tmp120 [V137 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP
+;* V138 tmp121 [V138 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP
+; V139 tmp122 [V139,T61] ( 3, 1.50) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp123 [V140,T73] ( 3, 1.50) int -> rdx single-def "field V65._length (fldOffset=0x8)" P-INDEP
+;* V141 tmp124 [V141 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-DEP
+;* V142 tmp125 [V142 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-DEP
+; V143 tmp126 [V143,T75] ( 2, 1 ) byref -> r12 "field V68._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp127 [V144,T80] ( 2, 1 ) int -> rdx "field V68._length (fldOffset=0x8)" P-INDEP
+;* V145 tmp128 [V145 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP
+;* V146 tmp129 [V146 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
+; V147 tmp130 [V147,T33] ( 2, 4 ) byref -> rax "field V84._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp131 [V148,T34] ( 2, 4 ) int -> rcx "field V84._length (fldOffset=0x8)" P-INDEP
+;* V149 tmp132 [V149 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
+;* V150 tmp133 [V150 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
+;* V151 tmp134 [V151 ] ( 0, 0 ) ref -> zero-ref "field V93._object (fldOffset=0x0)" P-INDEP
+;* V152 tmp135 [V152 ] ( 0, 0 ) int -> zero-ref "field V93._index (fldOffset=0x8)" P-INDEP
+;* V153 tmp136 [V153 ] ( 0, 0 ) int -> zero-ref "field V93._length (fldOffset=0xc)" P-INDEP
+; V154 tmp137 [V154,T08] ( 3, 10 ) ref -> [rbp-0xB0] do-not-enreg[] "field V94._object (fldOffset=0x0)" P-DEP
+; V155 tmp138 [V155,T09] ( 3, 10 ) int -> [rbp-0xA8] do-not-enreg[] "field V94._index (fldOffset=0x8)" P-DEP
+; V156 tmp139 [V156,T10] ( 3, 10 ) int -> [rbp-0xA4] do-not-enreg[] "field V94._length (fldOffset=0xc)" P-DEP
+; V157 tmp140 [V157,T23] ( 3, 6 ) byref -> rsi "field V95._reference (fldOffset=0x0)" P-INDEP
+; V158 tmp141 [V158,T13] ( 4, 8 ) int -> rdi "field V95._length (fldOffset=0x8)" P-INDEP
+;* V159 tmp142 [V159 ] ( 0, 0 ) byref -> zero-ref "field V97._reference (fldOffset=0x0)" P-INDEP
+;* V160 tmp143 [V160 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP
+;* V161 tmp144 [V161 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP
+;* V162 tmp145 [V162 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP
+;* V163 tmp146 [V163 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP
+;* V164 tmp147 [V164 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP
+;* V165 tmp148 [V165 ] ( 0, 0 ) byref -> zero-ref "field V104._reference (fldOffset=0x0)" P-INDEP
+;* V166 tmp149 [V166 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP
+;* V167 tmp150 [V167 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
+;* V168 tmp151 [V168 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
+;* V169 tmp152 [V169 ] ( 0, 0 ) byref -> zero-ref "field V106._reference (fldOffset=0x0)" P-INDEP
+;* V170 tmp153 [V170 ] ( 0, 0 ) int -> zero-ref "field V106._length (fldOffset=0x8)" P-INDEP
+; V171 tmp154 [V171,T81] ( 2, 1 ) ubyte -> rsi single-def "V07.[000..001)"
+;* V172 tmp155 [V172 ] ( 0, 0 ) long -> zero-ref single-def "V107.[000..008)"
+; V173 tmp156 [V173,T56] ( 2, 2 ) ref -> rdi single-def "V107.[008..016)"
+;* V174 tmp157 [V174 ] ( 0, 0 ) ref -> zero-ref single-def "V107.[016..024)"
+;* V175 tmp158 [V175 ] ( 0, 0 ) ubyte -> zero-ref single-def "V107.[028..029)"
+; V176 tmp159 [V176,T44] ( 3, 3 ) byref -> rdi single-def "Spilling address for field-by-field copy"
+; V177 tmp160 [V177,T94] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V178 tmp161 [V178,T76] ( 2, 1 ) ref -> r13 single-def "Field obj"
+; V179 tmp162 [V179,T45] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V180 tmp163 [V180,T46] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V181 tmp164 [V181,T47] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V182 tmp165 [V182,T48] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V183 tmp166 [V183,T49] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V184 tmp167 [V184,T50] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V185 tmp168 [V185,T06] ( 3, 12 ) ref -> rdi "arr expr"
+; V186 tmp169 [V186,T14] ( 3, 8 ) ref -> rsi "argument with side effect"
+; V187 tmp170 [V187,T95] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V188 tmp171 [V188,T96] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V189 tmp172 [V189,T57] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V190 tmp173 [V190,T97] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V191 PSPSym [V191,T84] ( 1, 1 ) long -> [rbp-0xF0] do-not-enreg[V] "PSPSym"
+; V192 cse0 [V192,T24] ( 3, 6 ) ref -> rdi "CSE #10: moderate"
+; V193 cse1 [V193,T26] ( 3, 6 ) int -> rsi "CSE #11: moderate"
+; V194 cse2 [V194,T62] ( 3, 1.50) ref -> rdx "CSE #01: conservative"
+; V195 cse3 [V195,T63] ( 3, 1.50) ref -> rdi "CSE #02: conservative"
+; V196 cse4 [V196,T64] ( 3, 1.50) ref -> rdi "CSE #03: conservative"
+; V197 cse5 [V197,T65] ( 3, 1.50) ref -> rdi "CSE #05: conservative"
+; V198 cse6 [V198,T29] ( 3, 5 ) int -> [rbp-0xB8] spill-single-def "CSE #12: moderate"
+; V199 rat0 [V199,T01] ( 5, 16.50) long -> [rbp-0xC0] "Widened IV V13"
+; V200 rat1 [V200,T03] ( 4, 14 ) ref -> r13 "replacement local"
+; V201 rat2 [V201,T32] ( 3, 4 ) long -> rdi "CSE for expectedClsNode"
+; V202 rat3 [V202,T86] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 200
G_M28512_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 200
lea rbp, [rsp+0xF0]
vxorps xmm8, xmm8, xmm8
vmovdqu32 zmmword ptr [rbp-0xB0], zmm8
vmovdqu32 zmmword ptr [rbp-0x70], zmm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0xF0], rsp
mov rbx, rdi
mov r15d, esi
;; size=69 bbWeight=1 PerfScore 13.83
G_M28512_IG02:
mov rdi, gword ptr [rbx+0x10]
mov esi, 1
mov rax, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName
call [rax]Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName
mov gword ptr [rbp-0xD8], rax
;; size=28 bbWeight=1 PerfScore 6.50
G_M28512_IG03:
mov rdi, gword ptr [rbp-0xD8]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:CreateHash(System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.IncrementalHash
call [rax]System.Security.Cryptography.IncrementalHash:CreateHash(System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.IncrementalHash
mov r14, rax
;; size=22 bbWeight=1 PerfScore 4.50
G_M28512_IG04:
cmp gword ptr [rbx+0x40], 0
jne G_M28512_IG08
;; size=11 bbWeight=1 PerfScore 4.00
G_M28512_IG05:
mov rdx, gword ptr [rbx+0x30]
cmp byte ptr [rdx+0x22], 0
je G_M28512_IG17
cmp byte ptr [rdx], dl
add rdx, 40
lea rdi, bword ptr [rdx+0x30]
movzx rsi, byte ptr [rdi]
;; size=28 bbWeight=0.50 PerfScore 5.88
G_M28512_IG06:
vmovdqu xmm0, xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp-0x40], xmm0
mov rax, qword ptr [rdi+0x10]
mov qword ptr [rbp-0x30], rax
;; size=17 bbWeight=0.50 PerfScore 4.00
G_M28512_IG07:
test esi, esi
je G_M28512_IG17
mov rdi, gword ptr [rbp-0x38]
mov rsi, qword ptr [rbp-0x30]
mov rdx, gword ptr [rdx+0x28]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignedCms:GetContent(System.ReadOnlyMemory`1[ubyte],System.String):System.ReadOnlyMemory`1[ubyte]
call [rax]System.Security.Cryptography.Pkcs.SignedCms:GetContent(System.ReadOnlyMemory`1[ubyte],System.String):System.ReadOnlyMemory`1[ubyte]
mov gword ptr [rbp-0x50], rax
mov qword ptr [rbp-0x48], rdx
xor r13, r13
xor edx, edx
cmp gword ptr [rbp-0x50], 0
je G_M28512_IG15
mov rdx, gword ptr [rbp-0x50]
mov rdi, qword ptr [rdx]
test dword ptr [rdi], 0xD1FFAB1E
je G_M28512_IG13
mov r13, gword ptr [rbp-0x50]
add r13, 16
mov rdi, gword ptr [rbp-0x50]
mov edx, dword ptr [rdi+0x08]
jmp G_M28512_IG14
;; size=95 bbWeight=0.50 PerfScore 13.62
G_M28512_IG08:
mov r13, gword ptr [rbx+0x40]
add r13, 144
xor r12, r12
xor edx, edx
mov rdi, gword ptr [r13]
test rdi, rdi
je SHORT G_M28512_IG11
mov rdx, qword ptr [rdi]
test dword ptr [rdx], 0xD1FFAB1E
je SHORT G_M28512_IG09
lea r12, bword ptr [rdi+0x10]
mov edx, dword ptr [rdi+0x08]
jmp SHORT G_M28512_IG10
;; size=45 bbWeight=0.50 PerfScore 8.25
G_M28512_IG09:
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
mov r12, rax
;; size=13 bbWeight=0.50 PerfScore 3.62
G_M28512_IG10:
mov edi, dword ptr [r13+0x08]
and edi, 0xD1FFAB1E
mov esi, dword ptr [r13+0x0C]
mov eax, esi
add rax, rdi
mov edx, edx
cmp rax, rdx
ja G_M28512_IG53
add r12, rdi
mov edx, esi
;; size=35 bbWeight=0.50 PerfScore 3.38
G_M28512_IG11:
mov rsi, r12
cmp byte ptr [r14+0x1C], 0
jne G_M28512_IG52
mov rdi, gword ptr [r14+0x08]
test rdi, rdi
je SHORT G_M28512_IG12
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
jmp G_M28512_IG19
;; size=38 bbWeight=0.50 PerfScore 8.25
G_M28512_IG12:
mov rdi, gword ptr [r14+0x10]
mov rdi, gword ptr [rdi+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
jmp G_M28512_IG19
;; size=23 bbWeight=0.50 PerfScore 6.50
G_M28512_IG13:
mov rdi, gword ptr [rbp-0x50]
mov rax, gword ptr [rbp-0x50]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
mov r13, rax
;; size=21 bbWeight=0.50 PerfScore 4.62
G_M28512_IG14:
mov edi, dword ptr [rbp-0x48]
and edi, 0xD1FFAB1E
mov esi, dword ptr [rbp-0x44]
add rsi, rdi
mov edx, edx
cmp rsi, rdx
ja G_M28512_IG53
add r13, rdi
mov edx, dword ptr [rbp-0x44]
;; size=32 bbWeight=0.50 PerfScore 2.62
G_M28512_IG15:
mov rsi, r13
cmp byte ptr [r14+0x1C], 0
jne G_M28512_IG52
mov rdi, gword ptr [r14+0x08]
test rdi, rdi
je SHORT G_M28512_IG16
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
jmp SHORT G_M28512_IG17
;; size=35 bbWeight=0.50 PerfScore 8.25
G_M28512_IG16:
mov rdi, gword ptr [r14+0x10]
mov rdi, gword ptr [rdi+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
;; size=18 bbWeight=0.50 PerfScore 5.50
G_M28512_IG17:
mov rdi, gword ptr [rbx+0x30]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignedCms:GetHashableContentSpan():System.ReadOnlySpan`1[ubyte]:this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.Pkcs.SignedCms:GetHashableContentSpan():System.ReadOnlySpan`1[ubyte]:this
cmp byte ptr [r14+0x1C], 0
jne G_M28512_IG52
mov rdi, gword ptr [r14+0x08]
test rdi, rdi
je SHORT G_M28512_IG18
mov rsi, rax
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
jmp SHORT G_M28512_IG19
;; size=53 bbWeight=0.50 PerfScore 12.38
G_M28512_IG18:
mov rdi, gword ptr [r14+0x10]
mov rdi, gword ptr [rdi+0x18]
mov rsi, rax
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
;; size=21 bbWeight=0.50 PerfScore 5.62
G_M28512_IG19:
cmp gword ptr [rbx+0x40], 0
jne SHORT G_M28512_IG21
;; size=7 bbWeight=1 PerfScore 4.00
G_M28512_IG20:
cmp gword ptr [rbx+0x18], 0
setne dil
movzx rdi, dil
jmp SHORT G_M28512_IG22
;; size=15 bbWeight=0.50 PerfScore 3.12
G_M28512_IG21:
mov edi, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M28512_IG22:
movzx r13, dil
cmp gword ptr [rbx+0x18], 0
je SHORT G_M28512_IG24
;; size=11 bbWeight=1 PerfScore 4.25
G_M28512_IG23:
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:GetHashAndReset():ubyte[]:this
call [rax]System.Security.Cryptography.IncrementalHash:GetHashAndReset():ubyte[]:this
mov r12, rax
mov rdi, 0xD1FFAB1E ; System.Formats.Asn1.AsnWriter
call CORINFO_HELP_NEWSFAST
mov dword ptr [rax+0x1C], 2
mov gword ptr [rbp-0xC8], rax
test r15b, r15b
je SHORT G_M28512_IG26
xor edx, edx
xor ecx, ecx
lea rsi, [rbp-0xA0]
mov rdi, rax
mov r8, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
call [r8]System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
jmp SHORT G_M28512_IG27
;; size=81 bbWeight=0.50 PerfScore 7.38
G_M28512_IG24:
test r15b, r15b
je G_M28512_IG45
xor rax, rax
;; size=11 bbWeight=0.50 PerfScore 0.75
G_M28512_IG25:
vzeroupper
add rsp, 200
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
G_M28512_IG26:
xor edx, edx
xor ecx, ecx
lea rsi, [rbp-0x80]
mov rdi, rax
mov r8, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PushSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
call [r8]System.Formats.Asn1.AsnWriter:PushSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
;; size=24 bbWeight=0.50 PerfScore 2.25
G_M28512_IG27:
mov rbx, gword ptr [rbx+0x18]
xor eax, eax
mov ecx, dword ptr [rbx+0x08]
mov dword ptr [rbp-0xB8], ecx
test ecx, ecx
jle G_M28512_IG43
;; size=23 bbWeight=0.50 PerfScore 3.25
G_M28512_IG28:
mov qword ptr [rbp-0xC0], rax
mov rdi, rax
shl rdi, 4
;; size=14 bbWeight=4 PerfScore 7.00
G_M28512_IG29:
vmovdqu xmm0, xmmword ptr [rbx+rdi+0x10]
vmovdqu xmmword ptr [rbp-0x60], xmm0
;; size=11 bbWeight=4 PerfScore 20.00
G_M28512_IG30:
lea rdi, [rbp-0x60]
mov rsi, gword ptr [rbp-0xC8]
mov rdx, 0xD1FFAB1E ; code for System.Security.Cryptography.Asn1.AttributeAsn:Encode(System.Formats.Asn1.AsnWriter):this
call [rdx]System.Security.Cryptography.Asn1.AttributeAsn:Encode(System.Formats.Asn1.AsnWriter):this
mov rdi, gword ptr [rbp-0x60]
test rdi, rdi
je G_M28512_IG42
;; size=36 bbWeight=4 PerfScore 28.00
G_M28512_IG31:
cmp dword ptr [rdi+0x08], 20
jne G_M28512_IG42
;; size=10 bbWeight=1 PerfScore 4.00
G_M28512_IG32:
vmovups ymm0, ymmword ptr [rdi+0x0C]
vpxor ymm0, ymm0, ymmword ptr [reloc @RWD00]
vmovups ymm1, ymmword ptr [rdi+0x14]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -10
vptest ymm0, ymm0
sete dil
movzx rdi, dil
test edi, edi
je G_M28512_IG42
mov rdi, gword ptr [rbp-0x60]
mov rsi, gword ptr [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignerInfo:MakeAttribute(System.Security.Cryptography.Asn1.AttributeAsn):System.Security.Cryptography.CryptographicAttributeObject
call [rax]System.Security.Cryptography.Pkcs.SignerInfo:MakeAttribute(System.Security.Cryptography.Asn1.AttributeAsn):System.Security.Cryptography.CryptographicAttributeObject
mov rdi, gword ptr [rax+0x08]
mov rdi, gword ptr [rdi+0x08]
mov rsi, rdi
mov esi, dword ptr [rsi+0x10]
cmp esi, 1
jne G_M28512_IG51
test esi, esi
je G_M28512_IG50
mov rdi, gword ptr [rdi+0x08]
cmp dword ptr [rdi+0x08], 0
jbe G_M28512_IG54
mov rsi, gword ptr [rdi+0x10]
mov r13, rsi
test r13, r13
je SHORT G_M28512_IG34
;; size=127 bbWeight=2 PerfScore 90.00
G_M28512_IG33:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.Pkcs.Pkcs9MessageDigest
cmp qword ptr [r13], rdi
jne G_M28512_IG49
;; size=20 bbWeight=1 PerfScore 4.25
G_M28512_IG34:
test r12, r12
jne SHORT G_M28512_IG35
xor rax, rax
xor ecx, ecx
jmp SHORT G_M28512_IG36
;; size=11 bbWeight=2 PerfScore 7.50
G_M28512_IG35:
lea rax, bword ptr [r12+0x10]
mov ecx, dword ptr [r12+0x08]
- ;; size=10 bbWeight=2 PerfScore 5.00
-G_M28512_IG36:
mov bword ptr [rbp-0xE0], rax
mov dword ptr [rbp-0xB4], ecx
+ mov rax, bword ptr [rbp-0xE0]
+ mov ecx, dword ptr [rbp-0xB4]
+ ;; size=36 bbWeight=2 PerfScore 13.00
+G_M28512_IG36:
mov rdx, gword ptr [r13+0x18]
test rdx, rdx
- mov rax, bword ptr [rbp-0xE0]
- jne SHORT G_M28512_IG39
+ jne G_M28512_IG39
mov rdi, gword ptr [r13+0x10]
test rdi, rdi
jne SHORT G_M28512_IG37
xor rdx, rdx
+ mov bword ptr [rbp-0xE0], rax
+ mov dword ptr [rbp-0xB4], ecx
jmp SHORT G_M28512_IG38
- ;; size=42 bbWeight=2 PerfScore 23.50
+ ;; size=39 bbWeight=2 PerfScore 21.50
G_M28512_IG37:
+ mov bword ptr [rbp-0xE0], rax
+ mov dword ptr [rbp-0xB4], ecx
mov gword ptr [rbp-0xB0], rdi
xor esi, esi
mov dword ptr [rbp-0xA8], esi
mov edi, dword ptr [rdi+0x08]
mov dword ptr [rbp-0xA4], edi
mov rdi, gword ptr [rbp-0xB0]
mov rsi, qword ptr [rbp-0xA8]
mov rdx, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:DecodeOctetString(System.ReadOnlyMemory`1[ubyte]):ubyte[]
call [rdx]Internal.Cryptography.PkcsHelpers:DecodeOctetString(System.ReadOnlyMemory`1[ubyte]):ubyte[]
mov rdx, rax
- ;; size=53 bbWeight=2 PerfScore 21.50
+ ;; size=66 bbWeight=2 PerfScore 25.50
G_M28512_IG38:
lea rdi, bword ptr [r13+0x18]
mov gword ptr [rbp-0xD0], rdx
mov rsi, rdx
call CORINFO_HELP_ASSIGN_REF
mov r13, gword ptr [rbp-0xD0]
mov rdx, r13
mov rax, bword ptr [rbp-0xE0]
- ;; size=36 bbWeight=2 PerfScore 10.00
+ mov ecx, dword ptr [rbp-0xB4]
+ ;; size=42 bbWeight=2 PerfScore 12.00
G_M28512_IG39:
test rdx, rdx
jne SHORT G_M28512_IG40
xor rsi, rsi
xor edi, edi
jmp SHORT G_M28512_IG41
;; size=11 bbWeight=2 PerfScore 7.50
G_M28512_IG40:
lea rsi, bword ptr [rdx+0x10]
mov edi, dword ptr [rdx+0x08]
;; size=7 bbWeight=2 PerfScore 5.00
G_M28512_IG41:
- cmp dword ptr [rbp-0xB4], edi
+ cmp ecx, edi
jne G_M28512_IG48
mov edx, edi
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
je G_M28512_IG48
xor r13d, r13d
- ;; size=40 bbWeight=2 PerfScore 16.50
+ ;; size=36 bbWeight=2 PerfScore 13.00
G_M28512_IG42:
mov rsi, qword ptr [rbp-0xC0]
inc esi
mov edx, dword ptr [rbp-0xB8]
cmp edx, esi
mov rax, rsi
jg G_M28512_IG28
;; size=26 bbWeight=4 PerfScore 15.00
G_M28512_IG43:
test r15b, r15b
je SHORT G_M28512_IG44
xor esi, esi
xor edx, edx
mov rdi, gword ptr [rbp-0xC8]
mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PopSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
call [rax]System.Formats.Asn1.AsnWriter:PopSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
mov rdi, gword ptr [rbp-0xC8]
mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
cmp dword ptr [rax+0x08], 0
jbe G_M28512_IG54
mov byte ptr [rax+0x10], 49
mov rdi, r14
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this
call [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this
jmp SHORT G_M28512_IG45
;; size=81 bbWeight=0.50 PerfScore 10.50
G_M28512_IG44:
xor esi, esi
xor edx, edx
mov rdi, gword ptr [rbp-0xC8]
mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PopSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
call [rax]System.Formats.Asn1.AsnWriter:PopSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
mov rdi, gword ptr [rbp-0xC8]
mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
mov rsi, rax
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this
call [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this
;; size=60 bbWeight=0.50 PerfScore 6.38
G_M28512_IG45:
test r13d, r13d
jne SHORT G_M28512_IG47
mov rax, r14
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M28512_IG46:
vzeroupper
add rsp, 200
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
G_M28512_IG47:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_Cms_MissingAuthenticatedAttribute():System.String
call [rax]System.SR:get_Cryptography_Cms_MissingAuthenticatedAttribute():System.String
mov rsi, rax
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this
mov rdi, r14
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
G_M28512_IG48:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_BadHashValue():System.String
call [rax]System.SR:get_Cryptography_BadHashValue():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
G_M28512_IG49:
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M28512_IG50:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M28512_IG51:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_BadHashValue():System.String
call [rax]System.SR:get_Cryptography_BadHashValue():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
G_M28512_IG52:
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object)
int3
;; size=16 bbWeight=0 PerfScore 0.00
G_M28512_IG53:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M28512_IG54:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M28512_IG55:
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+0xF0]
;; size=25 bbWeight=0 PerfScore 0.00
G_M28512_IG56:
mov rbx, rsi
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.HashAlgorithmName
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_UnknownHashAlgorithm():System.String
call [rax]System.SR:get_Cryptography_UnknownHashAlgorithm():System.String
mov r14, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, gword ptr [rbp-0xD8]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rsi, r15
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String
call [rax]System.SR:Format(System.String,System.Object):System.String
mov rsi, rax
mov rdi, r13
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String,System.Exception):this
call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String,System.Exception):this
mov rdi, r13
call CORINFO_HELP_THROW
int3
;; size=118 bbWeight=0 PerfScore 0.00
RWD00 dq 002E0032002E0031h, 002E003000340038h, 0035003300310031h, 0031002E00390034h
RWD32 dq 002E003000340038h, 0035003300310031h, 0031002E00390034h, 0034002E0039002Eh
-; Total bytes of code 1801, prolog size 69, PerfScore 434.08, instruction count 434, allocated bytes for code 1801 (MethodHash=5b9d909f) for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts)
+; Total bytes of code 1839, prolog size 69, PerfScore 442.58, instruction count 440, allocated bytes for code 1839 (MethodHash=5b9d909f) for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/2d1cee88efc52aa5f010ace32287de75 |
Top method improvements-108 (-26.34 % of base) - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this ; Assembly listing for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rbx single-def
+; V00 this [V00,T06] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rbx single-def
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Memory`1[System.__Canon]>
+; V03 loc0 [V03,T16] ( 2, 2 ) struct (16) [rbp-0x40] do-not-enreg[SR] multireg-ret must-init <System.Memory`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T16] ( 3, 3 ) long -> r13 "spilling helperCall"
+; V05 tmp1 [V05,T14] ( 3, 3 ) long -> r13 "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T00] ( 5, 10 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <System.Memory`1[System.__Canon]>
+; V07 tmp3 [V07,T02] ( 3, 6 ) ref -> rdx class-hnd exact single-def "Single-def Box Helper" <System.Memory`1[System.__Canon]>
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T14] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox"
-; V10 tmp6 [V10,T03] ( 4, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.__Canon[]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[System.__Canon]>
-; V12 tmp8 [V12,T11] ( 4, 4.40) long -> r12 "Inlining Arg"
-;* V13 tmp9 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp10 [V14,T15] ( 4, 3.20) long -> rdi "Inlining Arg"
-; V15 tmp11 [V15,T20] ( 3, 2 ) long -> rax "spilling helperCall"
-;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
-; V19 tmp15 [V19,T18] ( 4, 2.50) ref -> r12 "field V11._object (fldOffset=0x0)" P-INDEP
-;* V20 tmp16 [V20,T22] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V21 tmp17 [V21,T21] ( 3, 2 ) int -> r13 "field V11._length (fldOffset=0xc)" P-INDEP
-; V22 cse0 [V22,T10] ( 6, 4.40) long -> r14 "CSE #01: aggressive"
-; V23 rat0 [V23,T09] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
-; V24 rat1 [V24,T01] ( 5, 7.50) ref -> rdi "replacement local"
-; V25 rat2 [V25,T19] ( 3, 2.50) long -> r13 "CSE for expectedClsNode"
-; V26 rat3 [V26,T12] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V27 rat4 [V27,T04] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V28 rat5 [V28,T05] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
-; V29 rat6 [V29,T06] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V30 rat7 [V30,T17] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V31 rat8 [V31,T13] ( 3, 4 ) long -> rdi "runtime lookup"
-; V32 rat9 [V32,T07] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T12] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox"
+; V10 tmp6 [V10,T10] ( 3, 4 ) long -> r12 "argument with side effect"
+; V11 tmp7 [V11,T13] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V12 cse0 [V12,T08] ( 6, 4.40) long -> r14 "CSE #01: aggressive"
+; V13 rat0 [V13,T07] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
+; V14 rat1 [V14,T00] ( 5, 7.50) ref -> rdi "replacement local"
+; V15 rat2 [V15,T15] ( 3, 2.50) long -> r13 "CSE for expectedClsNode"
+; V16 rat3 [V16,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V17 rat4 [V17,T03] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V18 rat5 [V18,T04] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
+; V19 rat6 [V19,T11] ( 3, 4 ) long -> rdi "runtime lookup"
+; V20 rat7 [V20,T05] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M62907_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
+ xor eax, eax
+ mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x30], rdi
mov r15, rdi
mov rbx, rsi
- ;; size=26 bbWeight=1 PerfScore 9.00
+ ;; size=35 bbWeight=1 PerfScore 9.50
G_M62907_IG02:
mov r14, qword ptr [r15]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x18]
mov r13, qword ptr [rsi+0x10]
test r13, r13
- je G_M62907_IG13
+ je G_M62907_IG10
;; size=27 bbWeight=1 PerfScore 9.50
G_M62907_IG03:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi+0x18]
mov r12, qword ptr [rdi+0x18]
test r12, r12
- je G_M62907_IG14
+ je G_M62907_IG11
;; size=21 bbWeight=1 PerfScore 7.25
G_M62907_IG04:
mov rsi, gword ptr [rbx+0x50]
mov rdi, rsi
test rdi, rdi
je SHORT G_M62907_IG07
;; size=12 bbWeight=1 PerfScore 3.50
G_M62907_IG05:
cmp qword ptr [rdi], r13
je SHORT G_M62907_IG07
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M62907_IG06:
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
mov rdi, rax
;; size=18 bbWeight=0.25 PerfScore 0.94
G_M62907_IG07:
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
- mov r13, rax
- mov rdi, qword ptr [r12+0x18]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- je G_M62907_IG15
- ;; size=35 bbWeight=1 PerfScore 11.75
-G_M62907_IG08:
- test r13, r13
- jne G_M62907_IG16
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M62907_IG09:
- xor r12, r12
- xor r13d, r13d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M62907_IG10:
+ mov rsi, rax
+ mov rdi, r12
+ mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon]
+ call [rax]System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon]
+ mov gword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0x38], rdx
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi+0x18]
mov rdi, qword ptr [rdi+0x20]
test rdi, rdi
- je G_M62907_IG20
- ;; size=21 bbWeight=1 PerfScore 7.25
-G_M62907_IG11:
+ je SHORT G_M62907_IG12
+ ;; size=57 bbWeight=1 PerfScore 19.25
+G_M62907_IG08:
call CORINFO_HELP_NEWSFAST
- mov r14, rax
+ mov rdx, rax
add rbx, 48
- lea rdi, bword ptr [r14+0x08]
- mov rsi, r12
- call CORINFO_HELP_ASSIGN_REF
- xor edi, edi
- mov dword ptr [r14+0x10], edi
- mov dword ptr [r14+0x14], r13d
+ lea rdi, bword ptr [rdx+0x08]
+ lea rsi, bword ptr [rbp-0x40]
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
lea rdi, bword ptr [rbx+0x20]
- mov rsi, r14
+ mov rsi, rdx
call CORINFO_HELP_CHECKED_ASSIGN_REF
nop
- ;; size=47 bbWeight=1 PerfScore 7.50
-G_M62907_IG12:
- add rsp, 8
+ ;; size=40 bbWeight=1 PerfScore 6.50
+G_M62907_IG09:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M62907_IG13:
+G_M62907_IG10:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r13, rax
jmp G_M62907_IG03
;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M62907_IG14:
+G_M62907_IG11:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r12, rax
jmp G_M62907_IG04
;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62907_IG15:
- mov rdi, r12
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- jmp G_M62907_IG08
- ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62907_IG16:
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M62907_IG18
- ;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M62907_IG17:
- cmp qword ptr [r13], rax
- je SHORT G_M62907_IG19
- jmp SHORT G_M62907_IG21
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M62907_IG18:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- jmp SHORT G_M62907_IG17
- ;; size=17 bbWeight=0.10 PerfScore 0.33
-G_M62907_IG19:
- mov r12, r13
- mov r13d, dword ptr [r12+0x08]
- jmp G_M62907_IG10
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M62907_IG20:
+G_M62907_IG12:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
- jmp G_M62907_IG11
- ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62907_IG21:
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
- call [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
- int3
- ;; size=13 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M62907_IG08
+ ;; size=23 bbWeight=0.20 PerfScore 0.75
-; Total bytes of code 410, prolog size 20, PerfScore 76.46, instruction count 107, allocated bytes for code 410 (MethodHash=0c610a44) for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
+; Total bytes of code 302, prolog size 29, PerfScore 64.89, instruction count 82, allocated bytes for code 302 (MethodHash=0c610a44) for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -108 (-26.34 % of base) - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this ; Assembly listing for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rbx single-def
+; V00 this [V00,T06] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rbx single-def
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.JsonSerializerOptions>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlyMemory`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T16] ( 3, 3 ) long -> r13 "spilling helperCall"
-;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V05 tmp1 [V05,T15] ( 3, 3 ) long -> r13 "spilling helperCall"
+; V06 tmp2 [V06,T10] ( 3, 4 ) long -> r12 "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[System.__Canon]>
-; V09 tmp5 [V09,T00] ( 5, 10 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <System.ReadOnlyMemory`1[System.__Canon]>
+; V08 tmp4 [V08,T14] ( 2, 4 ) struct (16) [rbp-0x40] do-not-enreg[SR] multireg-ret must-init "spilled call-like call argument" <System.Memory`1[System.__Canon]>
+; V09 tmp5 [V09,T02] ( 3, 6 ) ref -> rdx class-hnd exact single-def "Single-def Box Helper" <System.ReadOnlyMemory`1[System.__Canon]>
;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp7 [V11,T14] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox"
-; V12 tmp8 [V12,T03] ( 4, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.__Canon[]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[System.__Canon]>
-; V14 tmp10 [V14,T11] ( 4, 4.40) long -> r12 "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V16 tmp12 [V16,T15] ( 4, 3.20) long -> rdi "Inlining Arg"
-; V17 tmp13 [V17,T20] ( 3, 2 ) long -> rax "spilling helperCall"
-;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[System.__Canon]>
-;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP
-;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._object (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0xc)" P-INDEP
-; V25 tmp21 [V25,T18] ( 4, 2.50) ref -> r12 "field V13._object (fldOffset=0x0)" P-INDEP
-;* V26 tmp22 [V26,T22] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T21] ( 3, 2 ) int -> r13 "field V13._length (fldOffset=0xc)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref "field V18._object (fldOffset=0x0)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
-;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0xc)" P-INDEP
-; V31 cse0 [V31,T10] ( 6, 4.40) long -> r14 "CSE #01: moderate"
-; V32 rat0 [V32,T09] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
-; V33 rat1 [V33,T01] ( 5, 7.50) ref -> rdi "replacement local"
-; V34 rat2 [V34,T19] ( 3, 2.50) long -> r13 "CSE for expectedClsNode"
-; V35 rat3 [V35,T12] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V36 rat4 [V36,T04] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V37 rat5 [V37,T05] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
-; V38 rat6 [V38,T06] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V39 rat7 [V39,T17] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V40 rat8 [V40,T13] ( 3, 4 ) long -> rdi "runtime lookup"
-; V41 rat9 [V41,T07] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V11 tmp7 [V11,T12] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox"
+;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[System.__Canon]>
+;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP
+;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
+;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
+;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V12._object (fldOffset=0x0)" P-INDEP
+;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
+;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
+; V19 tmp15 [V19,T13] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V20 cse0 [V20,T08] ( 6, 4.40) long -> r14 "CSE #01: aggressive"
+; V21 rat0 [V21,T07] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
+; V22 rat1 [V22,T00] ( 5, 7.50) ref -> rdi "replacement local"
+; V23 rat2 [V23,T16] ( 3, 2.50) long -> r13 "CSE for expectedClsNode"
+; V24 rat3 [V24,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V25 rat4 [V25,T03] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V26 rat5 [V26,T04] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
+; V27 rat6 [V27,T11] ( 3, 4 ) long -> rdi "runtime lookup"
+; V28 rat7 [V28,T05] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M47357_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
+ xor eax, eax
+ mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x30], rdi
mov r15, rdi
mov rbx, rsi
- ;; size=26 bbWeight=1 PerfScore 9.00
+ ;; size=35 bbWeight=1 PerfScore 9.50
G_M47357_IG02:
mov r14, qword ptr [r15]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x18]
mov r13, qword ptr [rsi+0x10]
test r13, r13
- je G_M47357_IG13
+ je G_M47357_IG10
;; size=27 bbWeight=1 PerfScore 9.50
G_M47357_IG03:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi+0x18]
mov r12, qword ptr [rdi+0x18]
test r12, r12
- je G_M47357_IG14
+ je G_M47357_IG11
;; size=21 bbWeight=1 PerfScore 7.25
G_M47357_IG04:
mov rsi, gword ptr [rbx+0x50]
mov rdi, rsi
test rdi, rdi
je SHORT G_M47357_IG07
;; size=12 bbWeight=1 PerfScore 3.50
G_M47357_IG05:
cmp qword ptr [rdi], r13
je SHORT G_M47357_IG07
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M47357_IG06:
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
mov rdi, rax
;; size=18 bbWeight=0.25 PerfScore 0.94
G_M47357_IG07:
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
- mov r13, rax
- mov rdi, qword ptr [r12+0x18]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- je G_M47357_IG15
- ;; size=35 bbWeight=1 PerfScore 11.75
-G_M47357_IG08:
- test r13, r13
- jne G_M47357_IG16
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M47357_IG09:
- xor r12, r12
- xor r13d, r13d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M47357_IG10:
+ mov rsi, rax
+ mov rdi, r12
+ mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon]
+ call [rax]System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon]
+ mov gword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0x38], rdx
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi+0x18]
mov rdi, qword ptr [rdi+0x28]
test rdi, rdi
- je G_M47357_IG20
- ;; size=21 bbWeight=1 PerfScore 7.25
-G_M47357_IG11:
+ je SHORT G_M47357_IG12
+ ;; size=57 bbWeight=1 PerfScore 19.25
+G_M47357_IG08:
call CORINFO_HELP_NEWSFAST
- mov r14, rax
+ mov rdx, rax
add rbx, 48
- lea rdi, bword ptr [r14+0x08]
- mov rsi, r12
- call CORINFO_HELP_ASSIGN_REF
- xor edi, edi
- mov dword ptr [r14+0x10], edi
- mov dword ptr [r14+0x14], r13d
+ lea rdi, bword ptr [rdx+0x08]
+ lea rsi, bword ptr [rbp-0x40]
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
lea rdi, bword ptr [rbx+0x20]
- mov rsi, r14
+ mov rsi, rdx
call CORINFO_HELP_CHECKED_ASSIGN_REF
nop
- ;; size=47 bbWeight=1 PerfScore 7.50
-G_M47357_IG12:
- add rsp, 8
+ ;; size=40 bbWeight=1 PerfScore 6.50
+G_M47357_IG09:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M47357_IG13:
+G_M47357_IG10:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r13, rax
jmp G_M47357_IG03
;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M47357_IG14:
+G_M47357_IG11:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r12, rax
jmp G_M47357_IG04
;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M47357_IG15:
- mov rdi, r12
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- jmp G_M47357_IG08
- ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M47357_IG16:
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M47357_IG18
- ;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M47357_IG17:
- cmp qword ptr [r13], rax
- je SHORT G_M47357_IG19
- jmp SHORT G_M47357_IG21
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M47357_IG18:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- jmp SHORT G_M47357_IG17
- ;; size=17 bbWeight=0.10 PerfScore 0.33
-G_M47357_IG19:
- mov r12, r13
- mov r13d, dword ptr [r12+0x08]
- jmp G_M47357_IG10
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M47357_IG20:
+G_M47357_IG12:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
- jmp G_M47357_IG11
- ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M47357_IG21:
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
- call [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
- int3
- ;; size=13 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M47357_IG08
+ ;; size=23 bbWeight=0.20 PerfScore 0.75
-; Total bytes of code 410, prolog size 20, PerfScore 76.46, instruction count 107, allocated bytes for code 410 (MethodHash=c9ab4702) for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
+; Total bytes of code 302, prolog size 29, PerfScore 64.89, instruction count 82, allocated bytes for code 302 (MethodHash=c9ab4702) for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/9e604cc6895aba1d5a43d27add98a67c |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 14 minutes.
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: