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] MichalPetryka/runtime/patch-45 #764
Comments
Top method regressions941 (168.34 % of base) - Internal.Cryptography.PkcsHelpers:EncodeUtcTime(System.DateTime):ubyte[] ; Assembly listing for method Internal.Cryptography.PkcsHelpers:EncodeUtcTime(System.DateTime):ubyte[] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 10 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 38 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 6, 5 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Formats.Asn1.AsnWriter>
-;* V02 loc1 [V02,T15] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
-; V03 loc2 [V03,T09] ( 2, 2 ) ref -> rax class-hnd single-def <ubyte[]>
+;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
+; V03 loc2 [V03,T19] ( 2, 2 ) ref -> rax class-hnd single-def <ubyte[]>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.ArgumentException>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T00] ( 5, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnWriter>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.DateTimeOffset>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret "spilled call-like call argument" <System.DateTime>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.DateTimeOffset>
-; V10 tmp5 [V10,T24] ( 4, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <System.ArgumentException>
-; V11 tmp6 [V11,T25] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
-; V12 tmp7 [V12,T12] ( 2, 2 ) long -> rax single-def "Inline stloc first use temp"
+; V10 tmp5 [V10,T51] ( 4, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <System.ArgumentException>
+; V11 tmp6 [V11,T52] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
+; V12 tmp7 [V12,T24] ( 2, 2 ) long -> rax single-def "Inline stloc first use temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
+;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
-; V17 tmp12 [V17,T13] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp"
+; V17 tmp12 [V17,T25] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.TimeSpan>
-; V20 tmp15 [V20,T02] ( 4, 2 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V20 tmp15 [V20,T04] ( 4, 2 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V21 tmp16 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V22 tmp17 [V22,T10] ( 2, 2 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
-; V23 tmp18 [V23,T03] ( 4, 2 ) ref -> rdi
-;* V24 tmp19 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-;* V25 tmp20 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
-;* V26 tmp21 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
-;* V27 tmp22 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
-; V28 tmp23 [V28,T16] ( 2, 1 ) long -> rdi single-def "Inline stloc first use temp"
-;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V30 tmp25 [V30 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.TimeSpan>
-; V31 tmp26 [V31,T04] ( 4, 2 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
-;* V32 tmp27 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V33 tmp28 [V33,T11] ( 2, 2 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
-; V34 tmp29 [V34,T05] ( 4, 2 ) ref -> rdi
-; V35 tmp30 [V35 ] ( 6, 5 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
-;* V36 tmp31 [V36 ] ( 0, 0 ) short -> zero-ref single-def "field V07._offsetMinutes (fldOffset=0x0)" P-INDEP
-;* V37 tmp32 [V37 ] ( 0, 0 ) long -> zero-ref single-def "field V07._dateTime (fldOffset=0x8)" P-INDEP
-; V38 tmp33 [V38,T06] ( 4, 2 ) long -> r15 "field V08._dateData (fldOffset=0x0)" P-INDEP
-;* V39 tmp34 [V39 ] ( 0, 0 ) short -> zero-ref single-def "field V09._offsetMinutes (fldOffset=0x0)" P-INDEP
-;* V40 tmp35 [V40 ] ( 0, 0 ) long -> zero-ref single-def "field V09._dateTime (fldOffset=0x8)" P-INDEP
-; V41 tmp36 [V41,T17] ( 2, 1 ) short -> r13 single-def "field V14._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V42 tmp37 [V42,T18] ( 2, 1 ) long -> [rbp-0x30] do-not-enreg[F] "field V14._dateTime (fldOffset=0x8)" P-INDEP
-;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref single-def "field V15._dateData (fldOffset=0x0)" P-INDEP
-; V44 tmp39 [V44,T07] ( 4, 2 ) long -> r14 "field V16._ticks (fldOffset=0x0)" P-INDEP
-; V45 tmp40 [V45,T19] ( 2, 1 ) long -> r14 "field V19._ticks (fldOffset=0x0)" P-INDEP
-;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref single-def "field V21._dateData (fldOffset=0x0)" P-INDEP
-;* V47 tmp42 [V47 ] ( 0, 0 ) long -> zero-ref "field V24._dateData (fldOffset=0x0)" P-INDEP
-; V48 tmp43 [V48,T20] ( 2, 1 ) short -> r13 single-def "field V25._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V49 tmp44 [V49,T21] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[F] "field V25._dateTime (fldOffset=0x8)" P-INDEP
-; V50 tmp45 [V50,T14] ( 3, 1.50) long -> r15 single-def "field V26._dateData (fldOffset=0x0)" P-INDEP
-; V51 tmp46 [V51,T08] ( 4, 2 ) long -> r14 "field V27._ticks (fldOffset=0x0)" P-INDEP
-; V52 tmp47 [V52,T22] ( 2, 1 ) long -> r14 "field V30._ticks (fldOffset=0x0)" P-INDEP
-;* V53 tmp48 [V53 ] ( 0, 0 ) long -> zero-ref single-def "field V32._dateData (fldOffset=0x0)" P-INDEP
-; V54 tmp49 [V54,T26] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V55 PSPSym [V55,T23] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-; V56 cse0 [V56,T01] ( 3, 2.50) long -> rdi "CSE #01: moderate"
+; V22 tmp17 [V22,T20] ( 2, 2 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V23 tmp18 [V23,T05] ( 4, 2 ) ref -> rdi
+;* V24 tmp19 [V24,T48] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
+; V25 tmp20 [V25 ] ( 9, 9 ) struct (16) [rbp-0x38] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "Inlining Arg" <System.DateTimeOffset>
+; V26 tmp21 [V26,T53] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+;* V27 tmp22 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V28 tmp23 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Formats.Asn1.Asn1Tag>
+;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref
+;* V30 tmp25 [V30 ] ( 0, 0 ) struct ( 8) zero-ref <System.Formats.Asn1.Asn1Tag>
+;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
+;* V32 tmp27 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
+;* V33 tmp28 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
+;* V34 tmp29 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
+;* V35 tmp30 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V36 tmp31 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
+;* V37 tmp32 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
+; V38 tmp33 [V38,T26] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp"
+;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V40 tmp35 [V40 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.TimeSpan>
+; V41 tmp36 [V41,T06] ( 4, 2 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+;* V42 tmp37 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
+; V43 tmp38 [V43,T21] ( 2, 2 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V44 tmp39 [V44,T07] ( 4, 2 ) ref -> rdi
+; V45 tmp40 [V45 ] ( 2, 1 ) struct ( 8) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.DateTime>
+; V46 tmp41 [V46 ] ( 2, 1 ) struct ( 8) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.DateTime>
+;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V48 tmp43 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
+;* V49 tmp44 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V51 tmp46 [V51 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
+;* V52 tmp47 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
+;* V53 tmp48 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
+;* V54 tmp49 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
+; V55 tmp50 [V55,T29] ( 2, 1 ) long -> rdi single-def "Inline stloc first use temp"
+;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V57 tmp52 [V57 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.TimeSpan>
+; V58 tmp53 [V58,T08] ( 4, 2 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+;* V59 tmp54 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
+; V60 tmp55 [V60,T22] ( 2, 2 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V61 tmp56 [V61,T09] ( 4, 2 ) ref -> rdi
+;* V62 tmp57 [V62,T49] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
+; V63 tmp58 [V63 ] ( 9, 9 ) struct (16) [rbp-0x58] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "Inlining Arg" <System.DateTimeOffset>
+; V64 tmp59 [V64,T54] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+;* V65 tmp60 [V65 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V66 tmp61 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Formats.Asn1.Asn1Tag>
+;* V67 tmp62 [V67 ] ( 0, 0 ) ref -> zero-ref
+;* V68 tmp63 [V68 ] ( 0, 0 ) struct ( 8) zero-ref <System.Formats.Asn1.Asn1Tag>
+;* V69 tmp64 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
+;* V70 tmp65 [V70 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
+;* V71 tmp66 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
+;* V72 tmp67 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
+;* V73 tmp68 [V73 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V74 tmp69 [V74 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
+;* V75 tmp70 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
+; V76 tmp71 [V76,T27] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp"
+;* V77 tmp72 [V77 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V78 tmp73 [V78 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.TimeSpan>
+; V79 tmp74 [V79,T10] ( 4, 2 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+;* V80 tmp75 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
+; V81 tmp76 [V81,T23] ( 2, 2 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V82 tmp77 [V82,T11] ( 4, 2 ) ref -> rdi
+; V83 tmp78 [V83 ] ( 2, 1 ) struct ( 8) [rbp-0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.DateTime>
+; V84 tmp79 [V84 ] ( 2, 1 ) struct ( 8) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.DateTime>
+;* V85 tmp80 [V85 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V86 tmp81 [V86 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
+;* V87 tmp82 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V88 tmp83 [V88 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V89 tmp84 [V89 ] ( 6, 5 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
+;* V90 tmp85 [V90 ] ( 0, 0 ) short -> zero-ref single-def "field V07._offsetMinutes (fldOffset=0x0)" P-INDEP
+;* V91 tmp86 [V91 ] ( 0, 0 ) long -> zero-ref single-def "field V07._dateTime (fldOffset=0x8)" P-INDEP
+; V92 tmp87 [V92,T12] ( 4, 2 ) long -> r15 "field V08._dateData (fldOffset=0x0)" P-INDEP
+;* V93 tmp88 [V93 ] ( 0, 0 ) short -> zero-ref single-def "field V09._offsetMinutes (fldOffset=0x0)" P-INDEP
+;* V94 tmp89 [V94 ] ( 0, 0 ) long -> zero-ref single-def "field V09._dateTime (fldOffset=0x8)" P-INDEP
+; V95 tmp90 [V95,T30] ( 2, 1 ) short -> r13 single-def "field V14._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V96 tmp91 [V96,T31] ( 2, 1 ) long -> [rbp-0x70] do-not-enreg[F] "field V14._dateTime (fldOffset=0x8)" P-INDEP
+;* V97 tmp92 [V97 ] ( 0, 0 ) long -> zero-ref single-def "field V15._dateData (fldOffset=0x0)" P-INDEP
+; V98 tmp93 [V98,T13] ( 4, 2 ) long -> r14 "field V16._ticks (fldOffset=0x0)" P-INDEP
+; V99 tmp94 [V99,T32] ( 2, 1 ) long -> r14 "field V19._ticks (fldOffset=0x0)" P-INDEP
+;* V100 tmp95 [V100 ] ( 0, 0 ) long -> zero-ref single-def "field V21._dateData (fldOffset=0x0)" P-INDEP
+; V101 tmp96 [V101 ] ( 5, 3.50) short -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V25._offsetMinutes (fldOffset=0x0)" P-DEP
+; V102 tmp97 [V102 ] ( 6, 4 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V25._dateTime (fldOffset=0x8)" P-DEP
+;* V103 tmp98 [V103 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28._controlFlags (fldOffset=0x0)" P-INDEP
+;* V104 tmp99 [V104 ] ( 0, 0 ) int -> zero-ref single-def "field V28.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V105 tmp100 [V105,T33] ( 2, 1 ) ubyte -> rsi "field V30._controlFlags (fldOffset=0x0)" P-INDEP
+; V106 tmp101 [V106,T34] ( 2, 1 ) int -> rdx "field V30.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V107 tmp102 [V107,T35] ( 2, 1 ) short -> r13 single-def "field V31._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V108 tmp103 [V108,T36] ( 2, 1 ) long -> [rbp-0x78] do-not-enreg[F] "field V31._dateTime (fldOffset=0x8)" P-INDEP
+;* V109 tmp104 [V109 ] ( 0, 0 ) long -> zero-ref "field V32._dateData (fldOffset=0x0)" P-INDEP
+; V110 tmp105 [V110,T37] ( 2, 1 ) long -> r15 single-def "field V33._dateData (fldOffset=0x0)" P-INDEP
+; V111 tmp106 [V111,T14] ( 4, 2 ) long -> r15 single-def "field V34._dateData (fldOffset=0x0)" P-INDEP
+;* V112 tmp107 [V112 ] ( 0, 0 ) long -> zero-ref single-def "field V36._dateData (fldOffset=0x0)" P-INDEP
+; V113 tmp108 [V113,T15] ( 4, 2 ) long -> r14 "field V37._ticks (fldOffset=0x0)" P-INDEP
+; V114 tmp109 [V114,T38] ( 2, 1 ) long -> r14 "field V40._ticks (fldOffset=0x0)" P-INDEP
+;* V115 tmp110 [V115 ] ( 0, 0 ) long -> zero-ref single-def "field V42._dateData (fldOffset=0x0)" P-INDEP
+; V116 tmp111 [V116 ] ( 2, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V45._dateData (fldOffset=0x0)" P-DEP
+; V117 tmp112 [V117 ] ( 2, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V46._dateData (fldOffset=0x0)" P-DEP
+;* V118 tmp113 [V118 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V48._controlFlags (fldOffset=0x0)" P-INDEP
+;* V119 tmp114 [V119 ] ( 0, 0 ) int -> zero-ref single-def "field V48.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V120 tmp115 [V120 ] ( 0, 0 ) long -> zero-ref "field V51._dateData (fldOffset=0x0)" P-INDEP
+; V121 tmp116 [V121,T39] ( 2, 1 ) short -> r13 single-def "field V52._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V122 tmp117 [V122,T40] ( 2, 1 ) long -> [rbp-0x80] do-not-enreg[F] "field V52._dateTime (fldOffset=0x8)" P-INDEP
+; V123 tmp118 [V123,T28] ( 3, 1.50) long -> r15 single-def "field V53._dateData (fldOffset=0x0)" P-INDEP
+; V124 tmp119 [V124,T16] ( 4, 2 ) long -> r14 "field V54._ticks (fldOffset=0x0)" P-INDEP
+; V125 tmp120 [V125,T41] ( 2, 1 ) long -> r14 "field V57._ticks (fldOffset=0x0)" P-INDEP
+;* V126 tmp121 [V126 ] ( 0, 0 ) long -> zero-ref single-def "field V59._dateData (fldOffset=0x0)" P-INDEP
+; V127 tmp122 [V127 ] ( 5, 3.50) short -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V63._offsetMinutes (fldOffset=0x0)" P-DEP
+; V128 tmp123 [V128 ] ( 6, 4 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V63._dateTime (fldOffset=0x8)" P-DEP
+;* V129 tmp124 [V129 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V66._controlFlags (fldOffset=0x0)" P-INDEP
+;* V130 tmp125 [V130 ] ( 0, 0 ) int -> zero-ref single-def "field V66.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V131 tmp126 [V131,T42] ( 2, 1 ) ubyte -> rsi "field V68._controlFlags (fldOffset=0x0)" P-INDEP
+; V132 tmp127 [V132,T43] ( 2, 1 ) int -> rdx "field V68.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V133 tmp128 [V133,T44] ( 2, 1 ) short -> r13 single-def "field V69._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V134 tmp129 [V134,T45] ( 2, 1 ) long -> [rbp-0x88] do-not-enreg[F] "field V69._dateTime (fldOffset=0x8)" P-INDEP
+;* V135 tmp130 [V135 ] ( 0, 0 ) long -> zero-ref "field V70._dateData (fldOffset=0x0)" P-INDEP
+; V136 tmp131 [V136,T46] ( 2, 1 ) long -> r15 single-def "field V71._dateData (fldOffset=0x0)" P-INDEP
+; V137 tmp132 [V137,T17] ( 4, 2 ) long -> r15 single-def "field V72._dateData (fldOffset=0x0)" P-INDEP
+;* V138 tmp133 [V138 ] ( 0, 0 ) long -> zero-ref single-def "field V74._dateData (fldOffset=0x0)" P-INDEP
+; V139 tmp134 [V139,T18] ( 4, 2 ) long -> r14 "field V75._ticks (fldOffset=0x0)" P-INDEP
+; V140 tmp135 [V140,T47] ( 2, 1 ) long -> r14 "field V78._ticks (fldOffset=0x0)" P-INDEP
+;* V141 tmp136 [V141 ] ( 0, 0 ) long -> zero-ref single-def "field V80._dateData (fldOffset=0x0)" P-INDEP
+; V142 tmp137 [V142 ] ( 2, 1 ) long -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V83._dateData (fldOffset=0x0)" P-DEP
+; V143 tmp138 [V143 ] ( 2, 1 ) long -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V84._dateData (fldOffset=0x0)" P-DEP
+;* V144 tmp139 [V144 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V86._controlFlags (fldOffset=0x0)" P-INDEP
+;* V145 tmp140 [V145 ] ( 0, 0 ) int -> zero-ref single-def "field V86.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V146 tmp141 [V146 ] ( 0, 0 ) int -> zero-ref single-def "V24.[008..012)"
+;* V147 tmp142 [V147 ] ( 0, 0 ) int -> zero-ref single-def "V62.[008..012)"
+;* V148 tmp143 [V148 ] ( 0, 0 ) int -> zero-ref "V02.[008..012)"
+; V149 tmp144 [V149,T01] ( 6, 6 ) struct ( 8) [rbp-0x90] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
+; V150 tmp145 [V150,T55] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V151 tmp146 [V151,T56] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V152 tmp147 [V152,T57] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V153 PSPSym [V153,T50] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
+; V154 cse0 [V154,T03] ( 3, 2.50) long -> rdi "CSE #03: moderate"
+; V155 cse1 [V155,T02] ( 6, 3 ) long -> r15 multi-def "CSE #02: moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 128
G_M26838_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 32
- lea rbp, [rsp+0x40]
- mov qword ptr [rbp-0x40], rsp
+ sub rsp, 128
+ lea rbp, [rsp+0xA0]
+ xor eax, eax
+ mov qword ptr [rbp-0x68], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x60], ymm8
+ mov qword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0xA0], rsp
mov qword ptr [rbp-0x28], rdi
- ;; size=25 bbWeight=1 PerfScore 7.75
+ ;; size=54 bbWeight=1 PerfScore 12.33
G_M26838_IG02:
mov rdi, 0xD1FFAB1E ; System.Formats.Asn1.AsnWriter
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov dword ptr [rbx+0x20], 2
;; size=25 bbWeight=1 PerfScore 2.50
G_M26838_IG03:
mov rdi, 0xD1FFAB1E
and rdi, qword ptr [rbp-0x28]
mov rax, rdi
test rax, rax
- je G_M26838_IG08
+ je G_M26838_IG13
;; size=26 bbWeight=1 PerfScore 3.75
G_M26838_IG04:
mov r15, qword ptr [rbp-0x28]
mov rax, 0xD1FFAB1E
cmp rdi, rax
jne SHORT G_M26838_IG05
xor r14d, r14d
jmp SHORT G_M26838_IG07
;; size=24 bbWeight=0.50 PerfScore 2.38
G_M26838_IG05:
mov rdi, 0xD1FFAB1E ; data for System.TimeZoneInfo:s_cachedData
mov r14, gword ptr [rdi]
mov rdi, gword ptr [r14+0x08]
test rdi, rdi
jne SHORT G_M26838_IG06
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
call [rax]System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
mov rdi, rax
;; size=40 bbWeight=0.50 PerfScore 4.62
G_M26838_IG06:
mov rsi, r15
mov rcx, r14
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
cmp dword ptr [rdi], edi
call [rax]System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
mov r14, rax
;; size=28 bbWeight=0.50 PerfScore 3.62
G_M26838_IG07:
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
call [rax]System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
movsx r13, ax
mov rdi, r15
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
call [rax]System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
- mov qword ptr [rbp-0x38], rax
- xor r8d, r8d
- xor r9d, r9d
- mov esi, r13d
- mov rdx, qword ptr [rbp-0x38]
- mov rdi, rbx
- mov ecx, 0x801
- mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:WriteUtcTime(System.DateTimeOffset,int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
- call [rax]System.Formats.Asn1.AsnWriter:WriteUtcTime(System.DateTimeOffset,int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
- jmp G_M26838_IG13
- ;; size=79 bbWeight=0.50 PerfScore 8.00
-G_M26838_IG08:
- lea rdi, [rbp-0x28]
- mov rax, 0xD1FFAB1E ; code for System.DateTime:ToLocalTime():System.DateTime:this
- call [rax]System.DateTime:ToLocalTime():System.DateTime:this
- mov r15, rax
+ mov qword ptr [rbp-0x80], rax
+ mov word ptr [rbp-0x58], r13w
+ mov rdi, qword ptr [rbp-0x80]
+ mov qword ptr [rbp-0x50], rdi
+ xor edi, edi
+ xor esi, esi
+ mov edx, 23
+ mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:CheckUniversalTag(System.Nullable`1[System.Formats.Asn1.Asn1Tag],int)
+ call [rax]System.Formats.Asn1.AsnWriter:CheckUniversalTag(System.Nullable`1[System.Formats.Asn1.Asn1Tag],int)
+ mov r15, qword ptr [rbp-0x50]
+ mov r14, 0xD1FFAB1E
+ and r15, r14
+ mov r14, 0xD1FFAB1E
+ or r15, r14
mov rdi, 0xD1FFAB1E
and rdi, r15
- je SHORT G_M26838_IG09
+ je SHORT G_M26838_IG08
mov rax, 0xD1FFAB1E
cmp rdi, rax
- je SHORT G_M26838_IG11
- ;; size=49 bbWeight=0.50 PerfScore 3.50
-G_M26838_IG09:
+ je SHORT G_M26838_IG10
+ ;; size=135 bbWeight=0.50 PerfScore 10.25
+G_M26838_IG08:
mov rdi, 0xD1FFAB1E ; data for System.TimeZoneInfo:s_cachedData
mov r14, gword ptr [rdi]
mov rdi, gword ptr [r14+0x08]
test rdi, rdi
- jne SHORT G_M26838_IG10
+ jne SHORT G_M26838_IG09
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
call [rax]System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
mov rdi, rax
;; size=40 bbWeight=0.50 PerfScore 4.62
-G_M26838_IG10:
+G_M26838_IG09:
mov rsi, r15
mov rcx, r14
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
cmp dword ptr [rdi], edi
call [rax]System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
mov r14, rax
- jmp SHORT G_M26838_IG12
+ jmp SHORT G_M26838_IG11
;; size=30 bbWeight=0.50 PerfScore 4.62
-G_M26838_IG11:
+G_M26838_IG10:
xor r14d, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M26838_IG12:
+G_M26838_IG11:
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
call [rax]System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
movsx r13, ax
mov rdi, r15
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
call [rax]System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
- mov qword ptr [rbp-0x30], rax
- xor r8d, r8d
- xor r9d, r9d
- mov esi, r13d
- mov rdx, qword ptr [rbp-0x30]
+ mov qword ptr [rbp-0x88], rax
+ mov word ptr [rbp-0x58], r13w
+ mov rdi, qword ptr [rbp-0x88]
+ mov qword ptr [rbp-0x50], rdi
+ lea rdi, [rbp-0x58]
+ mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:get_ClockDateTime():System.DateTime:this
+ call [rax]System.DateTimeOffset:get_ClockDateTime():System.DateTime:this
+ mov qword ptr [rbp-0x60], rax
+ lea rdi, [rbp-0x60]
+ mov rax, 0xD1FFAB1E ; code for System.DateTime:get_Year():int:this
+ call [rax]System.DateTime:get_Year():int:this
+ cmp eax, 0x801
+ jg G_M26838_IG25
+ lea rdi, [rbp-0x58]
+ mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:get_ClockDateTime():System.DateTime:this
+ call [rax]System.DateTimeOffset:get_ClockDateTime():System.DateTime:this
+ mov qword ptr [rbp-0x68], rax
+ lea rdi, [rbp-0x68]
+ mov rax, 0xD1FFAB1E ; code for System.DateTime:get_Year():int:this
+ call [rax]System.DateTime:get_Year():int:this
+ cmp eax, 0x79D
+ jle G_M26838_IG25
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M26838_IG24
+ ;; size=173 bbWeight=0.50 PerfScore 17.62
+G_M26838_IG12:
+ mov r15, 0xD1FFAB1E ; data for System.Formats.Asn1.Asn1Tag:UtcTime
+ movzx rsi, byte ptr [r15]
+ mov edx, dword ptr [r15+0x04]
+ mov byte ptr [rbp-0x90], sil
+ mov dword ptr [rbp-0x8C], edx
+ mov rsi, qword ptr [rbp-0x90]
+ movsx rdx, word ptr [rbp-0x58]
+ mov rcx, qword ptr [rbp-0x50]
mov rdi, rbx
- mov ecx, 0x801
- mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:WriteUtcTime(System.DateTimeOffset,int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
- call [rax]System.Formats.Asn1.AsnWriter:WriteUtcTime(System.DateTimeOffset,int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
- ;; size=74 bbWeight=0.50 PerfScore 7.00
+ mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this
+ call [rax]System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this
+ jmp G_M26838_IG23
+ ;; size=67 bbWeight=0.50 PerfScore 8.38
G_M26838_IG13:
+ lea rdi, [rbp-0x28]
+ mov rax, 0xD1FFAB1E ; code for System.DateTime:ToLocalTime():System.DateTime:this
+ call [rax]System.DateTime:ToLocalTime():System.DateTime:this
+ mov r15, rax
+ mov rdi, 0xD1FFAB1E
+ and rdi, r15
+ je SHORT G_M26838_IG14
+ mov rax, 0xD1FFAB1E
+ cmp rdi, rax
+ je SHORT G_M26838_IG16
+ ;; size=49 bbWeight=0.50 PerfScore 3.50
+G_M26838_IG14:
+ mov rdi, 0xD1FFAB1E ; data for System.TimeZoneInfo:s_cachedData
+ mov r14, gword ptr [rdi]
+ mov rdi, gword ptr [r14+0x08]
+ test rdi, rdi
+ jne SHORT G_M26838_IG15
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
+ call [rax]System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
+ mov rdi, rax
+ ;; size=40 bbWeight=0.50 PerfScore 4.62
+G_M26838_IG15:
+ mov rsi, r15
+ mov rcx, r14
+ mov edx, 2
+ mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
+ cmp dword ptr [rdi], edi
+ call [rax]System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
+ mov r14, rax
+ jmp SHORT G_M26838_IG17
+ ;; size=30 bbWeight=0.50 PerfScore 4.62
+G_M26838_IG16:
+ xor r14d, r14d
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M26838_IG17:
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
+ call [rax]System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
+ movsx r13, ax
+ mov rdi, r15
+ mov rsi, r14
+ mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
+ call [rax]System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
+ mov qword ptr [rbp-0x70], rax
+ mov word ptr [rbp-0x38], r13w
+ mov rdi, qword ptr [rbp-0x70]
+ mov qword ptr [rbp-0x30], rdi
+ xor edi, edi
+ xor esi, esi
+ mov edx, 23
+ mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:CheckUniversalTag(System.Nullable`1[System.Formats.Asn1.Asn1Tag],int)
+ call [rax]System.Formats.Asn1.AsnWriter:CheckUniversalTag(System.Nullable`1[System.Formats.Asn1.Asn1Tag],int)
+ mov r15, qword ptr [rbp-0x30]
+ mov r14, 0xD1FFAB1E
+ and r15, r14
+ mov r14, 0xD1FFAB1E
+ or r15, r14
+ mov rdi, 0xD1FFAB1E
+ and rdi, r15
+ je SHORT G_M26838_IG18
+ mov rax, 0xD1FFAB1E
+ cmp rdi, rax
+ je SHORT G_M26838_IG20
+ ;; size=135 bbWeight=0.50 PerfScore 10.25
+G_M26838_IG18:
+ mov rdi, 0xD1FFAB1E ; data for System.TimeZoneInfo:s_cachedData
+ mov r14, gword ptr [rdi]
+ mov rdi, gword ptr [r14+0x08]
+ test rdi, rdi
+ jne SHORT G_M26838_IG19
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
+ call [rax]System.TimeZoneInfo+CachedData:CreateLocal():System.TimeZoneInfo:this
+ mov rdi, rax
+ ;; size=40 bbWeight=0.50 PerfScore 4.62
+G_M26838_IG19:
+ mov rsi, r15
+ mov rcx, r14
+ mov edx, 2
+ mov rax, 0xD1FFAB1E ; code for System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
+ cmp dword ptr [rdi], edi
+ call [rax]System.TimeZoneInfo:GetUtcOffset(System.DateTime,int,System.TimeZoneInfo+CachedData):System.TimeSpan:this
+ mov r14, rax
+ jmp SHORT G_M26838_IG21
+ ;; size=30 bbWeight=0.50 PerfScore 4.62
+G_M26838_IG20:
+ xor r14d, r14d
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M26838_IG21:
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
+ call [rax]System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
+ movsx r13, ax
+ mov rdi, r15
+ mov rsi, r14
+ mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
+ call [rax]System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
+ mov qword ptr [rbp-0x78], rax
+ mov word ptr [rbp-0x38], r13w
+ mov rdi, qword ptr [rbp-0x78]
+ mov qword ptr [rbp-0x30], rdi
+ lea rdi, [rbp-0x38]
+ mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:get_ClockDateTime():System.DateTime:this
+ call [rax]System.DateTimeOffset:get_ClockDateTime():System.DateTime:this
+ mov qword ptr [rbp-0x40], rax
+ lea rdi, [rbp-0x40]
+ mov rax, 0xD1FFAB1E ; code for System.DateTime:get_Year():int:this
+ call [rax]System.DateTime:get_Year():int:this
+ cmp eax, 0x801
+ jg G_M26838_IG27
+ lea rdi, [rbp-0x38]
+ mov rax, 0xD1FFAB1E ; code for System.DateTimeOffset:get_ClockDateTime():System.DateTime:this
+ call [rax]System.DateTimeOffset:get_ClockDateTime():System.DateTime:this
+ mov qword ptr [rbp-0x48], rax
+ lea rdi, [rbp-0x48]
+ mov rax, 0xD1FFAB1E ; code for System.DateTime:get_Year():int:this
+ call [rax]System.DateTime:get_Year():int:this
+ cmp eax, 0x79D
+ jle G_M26838_IG27
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M26838_IG26
+ ;; size=167 bbWeight=0.50 PerfScore 17.62
+G_M26838_IG22:
+ mov r15, 0xD1FFAB1E ; data for System.Formats.Asn1.Asn1Tag:UtcTime
+ movzx rsi, byte ptr [r15]
+ mov edx, dword ptr [r15+0x04]
+ mov byte ptr [rbp-0x90], sil
+ mov dword ptr [rbp-0x8C], edx
+ mov rsi, qword ptr [rbp-0x90]
+ movsx rdx, word ptr [rbp-0x38]
+ mov rcx, qword ptr [rbp-0x30]
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this
+ call [rax]System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this
+ ;; size=62 bbWeight=0.50 PerfScore 7.38
+G_M26838_IG23:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
- nop
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M26838_IG14:
- add rsp, 32
+ jmp G_M26838_IG28
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M26838_IG24:
+ mov rdi, 0xD1FFAB1E ; System.Formats.Asn1.Asn1Tag
+ call CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M26838_IG12
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M26838_IG25:
+ mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException
+ call CORINFO_HELP_NEWSFAST
+ mov r15, rax
+ mov edi, 0xBD8
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rsi, rax
+ mov rdi, r15
+ mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String):this
+ call [rax]System.ArgumentOutOfRangeException:.ctor(System.String):this
+ mov rdi, r15
+ call CORINFO_HELP_THROW
+ int3
+ ;; size=65 bbWeight=0 PerfScore 0.00
+G_M26838_IG26:
+ mov rdi, 0xD1FFAB1E ; System.Formats.Asn1.Asn1Tag
+ call CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M26838_IG22
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M26838_IG27:
+ mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException
+ call CORINFO_HELP_NEWSFAST
+ mov rbx, rax
+ mov edi, 0xBD8
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rsi, rax
+ mov rdi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String):this
+ call [rax]System.ArgumentOutOfRangeException:.ctor(System.String):this
+ mov rdi, rbx
+ call CORINFO_HELP_THROW
+ int3
+ ;; size=65 bbWeight=0 PerfScore 0.00
+G_M26838_IG28:
+ add rsp, 128
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
-G_M26838_IG15:
+ ;; size=16 bbWeight=1 PerfScore 3.75
+G_M26838_IG29:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x40]
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M26838_IG16:
+ lea rbp, [rbp+0xA0]
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M26838_IG30:
mov rbx, rsi
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Exception:get_Message():System.String:this
mov rsi, rax
mov rdi, r15
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, r15
call CORINFO_HELP_THROW
int3
;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 559, prolog size 25, PerfScore 60.00, instruction count 139, allocated bytes for code 559 (MethodHash=a8219729) for method Internal.Cryptography.PkcsHelpers:EncodeUtcTime(System.DateTime):ubyte[] (FullOpts)
+; Total bytes of code 1500, prolog size 54, PerfScore 141.58, instruction count 322, allocated bytes for code 1500 (MethodHash=a8219729) for method Internal.Cryptography.PkcsHelpers:EncodeUtcTime(System.DateTime):ubyte[] (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/cb3faa0a6409d5738b24d6054a92a9d9 |
Top method improvements-73 (-10.11 % of base) - System.Formats.Asn1.AsnWriter:ParseSubIdentifier(byref):System.Numerics.BigInteger ; Assembly listing for method System.Formats.Asn1.AsnWriter:ParseSubIdentifier(byref):System.Numerics.BigInteger (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 15 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 15 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 12, 17 ) byref -> rbx single-def
+; V00 arg0 [V00,T02] ( 12, 17 ) byref -> rbx single-def
; V01 loc0 [V01,T06] ( 8, 9.50) int -> r15
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <System.Numerics.BigInteger>
-;* V03 loc2 [V03,T26] ( 0, 0 ) int -> zero-ref
+;* V03 loc2 [V03,T32] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T27] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V05 tmp1 [V05,T33] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Numerics.BigInteger>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Numerics.BigInteger>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Numerics.BigInteger>
-; V09 tmp5 [V09,T28] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
+; V09 tmp5 [V09,T34] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V15 tmp11 [V15,T23] ( 2, 2 ) int -> r15 "Inline return value spill temp"
+; V15 tmp11 [V15,T27] ( 2, 2 ) int -> r15 "Inline return value spill temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V17 tmp13 [V17 ] ( 3, 12 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Numerics.BigInteger>
-; V18 tmp14 [V18 ] ( 4, 32 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
+;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Inline return value spill temp" <System.Numerics.BigInteger>
-;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[uint]>
+;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[uint]>
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Numerics.BigInteger>
;* V23 tmp19 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V24 tmp20 [V24 ] ( 4, 16 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
+; V24 tmp20 [V24 ] ( 4, 16 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
-;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
;* V29 tmp25 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
-; V31 tmp27 [V31,T03] ( 2, 16 ) int -> rsi "Inlining Arg"
-; V32 tmp28 [V32 ] ( 4, 32 ) struct (16) [rbp-0x68] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
-; V33 tmp29 [V33,T17] ( 4, 4 ) int -> rdx "Inline return value spill temp"
-; V34 tmp30 [V34,T13] ( 3, 6 ) int -> rdx "Inlining Arg"
-; V35 tmp31 [V35,T14] ( 3, 6 ) int -> r15 "Inlining Arg"
+; V31 tmp27 [V31,T01] ( 3, 20 ) int -> rcx "Inlining Arg"
+;* V32 tmp28 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
+; V33 tmp29 [V33,T14] ( 4, 4 ) int -> rdx "Inline return value spill temp"
+; V34 tmp30 [V34,T12] ( 3, 6 ) int -> rdx "Inlining Arg"
+; V35 tmp31 [V35,T13] ( 3, 6 ) int -> r15 "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp33 [V37,T19] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+; V37 tmp33 [V37,T16] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
; V38 tmp34 [V38,T20] ( 2, 4 ) int -> rax "Inlining Arg"
-; V39 tmp35 [V39,T02] ( 7, 16 ) ref -> r14 "field V02._bits (fldOffset=0x0)" P-INDEP
+; V39 tmp35 [V39,T03] ( 7, 16 ) ref -> r14 "field V02._bits (fldOffset=0x0)" P-INDEP
; V40 tmp36 [V40,T04] ( 6, 12 ) int -> r13 "field V02._sign (fldOffset=0x8)" P-INDEP
-; V41 tmp37 [V41,T05] ( 5, 12 ) ref -> rdi "field V06._bits (fldOffset=0x0)" P-INDEP
-; V42 tmp38 [V42,T08] ( 3, 8 ) int -> r9 "field V06._sign (fldOffset=0x8)" P-INDEP
+;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref "field V06._bits (fldOffset=0x0)" P-INDEP
+;* V42 tmp38 [V42,T23] ( 0, 0 ) int -> zero-ref "field V06._sign (fldOffset=0x8)" P-INDEP
;* V43 tmp39 [V43 ] ( 0, 0 ) ref -> zero-ref "field V07._bits (fldOffset=0x0)" P-INDEP
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._sign (fldOffset=0x8)" P-INDEP
;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref "field V08._bits (fldOffset=0x0)" P-DEP
;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "field V08._sign (fldOffset=0x8)" P-DEP
-; V47 tmp43 [V47,T21] ( 2, 2 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V48 tmp44 [V48,T24] ( 2, 2 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
+; V47 tmp43 [V47,T25] ( 2, 2 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp44 [V48,T28] ( 2, 2 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V51 tmp47 [V51 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V53 tmp49 [V53 ] ( 2, 6 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V17._bits (fldOffset=0x0)" P-DEP
; V54 tmp50 [V54 ] ( 2, 6 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V17._sign (fldOffset=0x8)" P-DEP
-; V55 tmp51 [V55 ] ( 3, 20 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V18._bits (fldOffset=0x0)" P-DEP
-; V56 tmp52 [V56 ] ( 3, 20 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V18._sign (fldOffset=0x8)" P-DEP
+;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref "field V18._bits (fldOffset=0x0)" P-INDEP
+;* V56 tmp52 [V56,T24] ( 0, 0 ) int -> zero-ref "field V18._sign (fldOffset=0x8)" P-INDEP
; V57 tmp53 [V57,T07] ( 3, 8 ) ref -> r14 "field V19._bits (fldOffset=0x0)" P-INDEP
; V58 tmp54 [V58,T09] ( 3, 8 ) int -> r13 "field V19._sign (fldOffset=0x8)" P-INDEP
-;* V59 tmp55 [V59 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
+; V59 tmp55 [V59,T17] ( 2, 4 ) byref -> rdi "field V20._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp56 [V60,T21] ( 2, 4 ) int -> rsi "field V20._length (fldOffset=0x8)" P-INDEP
;* V61 tmp57 [V61 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V63 tmp59 [V63 ] ( 0, 0 ) ref -> zero-ref "field V22._bits (fldOffset=0x0)" P-DEP
;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref "field V22._sign (fldOffset=0x8)" P-DEP
-; V65 tmp61 [V65 ] ( 3, 10 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V24._bits (fldOffset=0x0)" P-DEP
-; V66 tmp62 [V66 ] ( 3, 10 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V24._sign (fldOffset=0x8)" P-DEP
-; V67 tmp63 [V67,T10] ( 3, 6 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP
-; V68 tmp64 [V68,T15] ( 3, 6 ) int -> rcx "field V26._length (fldOffset=0x8)" P-INDEP
-; V69 tmp65 [V69,T11] ( 3, 6 ) byref -> r8 "field V29._reference (fldOffset=0x0)" P-INDEP
-; V70 tmp66 [V70,T16] ( 3, 6 ) int -> rdx "field V29._length (fldOffset=0x8)" P-INDEP
-; V71 tmp67 [V71 ] ( 3, 20 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V32._bits (fldOffset=0x0)" P-DEP
-; V72 tmp68 [V72 ] ( 3, 20 ) int -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V32._sign (fldOffset=0x8)" P-DEP
-; V73 tmp69 [V73,T22] ( 2, 2 ) byref -> rcx single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-; V74 tmp70 [V74,T25] ( 2, 2 ) int -> rax "field V36._length (fldOffset=0x8)" P-INDEP
-; V75 tmp71 [V75,T29] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V76 tmp72 [V76,T30] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V77 tmp73 [V77,T12] ( 3, 6 ) ref -> rdi single-def "BlockOp address local"
-; V78 tmp74 [V78,T31] ( 2, 0 ) ref -> r15 "argument with side effect"
-; V79 tmp75 [V79,T32] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V80 cse0 [V80,T18] ( 4, 4 ) int -> rax "CSE #03: moderate"
-; V81 rat0 [V81,T00] ( 7, 25 ) long -> r12 "Widened IV V03"
+; V65 tmp61 [V65 ] ( 3, 10 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V24._bits (fldOffset=0x0)" P-DEP
+; V66 tmp62 [V66 ] ( 3, 10 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V24._sign (fldOffset=0x8)" P-DEP
+; V67 tmp63 [V67,T18] ( 2, 4 ) byref -> rdi "field V26._reference (fldOffset=0x0)" P-INDEP
+; V68 tmp64 [V68,T22] ( 2, 4 ) int -> rsi "field V26._length (fldOffset=0x8)" P-INDEP
+; V69 tmp65 [V69,T19] ( 2, 4 ) byref -> rcx "field V29._reference (fldOffset=0x0)" P-INDEP
+;* V70 tmp66 [V70,T30] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
+; V71 tmp67 [V71,T08] ( 3, 8 ) ref -> rdx "field V32._bits (fldOffset=0x0)" P-INDEP
+; V72 tmp68 [V72,T10] ( 3, 8 ) int -> rcx "field V32._sign (fldOffset=0x8)" P-INDEP
+; V73 tmp69 [V73,T26] ( 2, 2 ) byref -> rcx single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+; V74 tmp70 [V74,T29] ( 2, 2 ) int -> rax "field V36._length (fldOffset=0x8)" P-INDEP
+; V75 tmp71 [V75,T35] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V76 tmp72 [V76,T36] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V77 tmp73 [V77,T11] ( 3, 6 ) ref -> rdi single-def "BlockOp address local"
+; V78 tmp74 [V78,T05] ( 3, 12 ) ref -> rcx "BlockOp address local"
+; V79 tmp75 [V79,T37] ( 2, 0 ) ref -> r15 "argument with side effect"
+; V80 tmp76 [V80,T38] ( 2, 0 ) ref -> rdx "argument with side effect"
+;* V81 cse0 [V81,T31] ( 0, 0 ) byref -> zero-ref "CSE #03: moderate"
+; V82 cse1 [V82,T15] ( 4, 4 ) int -> rax "CSE #05: moderate"
+; V83 rat0 [V83,T00] ( 7, 25 ) long -> r12 "Widened IV V03"
;
-; Lcl frame size = 72
+; Lcl frame size = 40
G_M45937_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 72
- lea rbp, [rsp+0x70]
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x68], rax
+ mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
mov qword ptr [rbp-0x30], rax
mov rbx, rdi
- ;; size=47 bbWeight=1 PerfScore 13.58
+ ;; size=42 bbWeight=1 PerfScore 11.58
G_M45937_IG02:
mov rdi, bword ptr [rbx]
mov edx, dword ptr [rbx+0x08]
mov esi, 46
mov rax, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [rax]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
mov r15d, eax
cmp r15d, -1
je SHORT G_M45937_IG04
;; size=32 bbWeight=1 PerfScore 9.00
G_M45937_IG03:
test r15d, r15d
- je G_M45937_IG19
+ je G_M45937_IG18
mov edi, dword ptr [rbx+0x08]
dec edi
cmp r15d, edi
jne SHORT G_M45937_IG05
- jmp G_M45937_IG19
+ jmp G_M45937_IG18
;; size=24 bbWeight=0.50 PerfScore 3.38
G_M45937_IG04:
mov r15d, dword ptr [rbx+0x08]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M45937_IG05:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M45937_IG20
+ je G_M45937_IG19
;; size=19 bbWeight=1 PerfScore 4.25
G_M45937_IG06:
mov rdi, 0xD1FFAB1E ; box for System.Numerics.BigInteger:s_bnZeroInt
mov rdi, gword ptr [rdi]
mov r14, gword ptr [rdi+0x08]
mov r13d, dword ptr [rdi+0x10]
xor r12d, r12d
test r15d, r15d
- jle G_M45937_IG17
+ jle G_M45937_IG16
;; size=33 bbWeight=1 PerfScore 7.75
G_M45937_IG07:
test r12d, r12d
jle SHORT G_M45937_IG09
;; size=5 bbWeight=4 PerfScore 5.00
G_M45937_IG08:
mov gword ptr [rbp-0x38], r14
mov dword ptr [rbp-0x30], r13d
lea rdi, [rbp-0x38]
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:Equals(long):ubyte:this
call [rax]System.Numerics.BigInteger:Equals(long):ubyte:this
test eax, eax
- jne G_M45937_IG22
+ jne G_M45937_IG21
;; size=34 bbWeight=2 PerfScore 14.50
G_M45937_IG09:
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x48], xmm0
- lea rdi, [rbp-0x48]
- mov esi, 10
- mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:.ctor(int):this
- call [rax]System.Numerics.BigInteger:.ctor(int):this
- mov rdi, gword ptr [rbp-0x48]
- mov r9d, dword ptr [rbp-0x40]
test r14, r14
jne SHORT G_M45937_IG11
- ;; size=43 bbWeight=4 PerfScore 34.33
+ ;; size=5 bbWeight=4 PerfScore 5.00
G_M45937_IG10:
- test rdi, rdi
- jne SHORT G_M45937_IG12
vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x58], xmm0
+ vmovdqu xmmword ptr [rbp-0x48], xmm0
movsxd rsi, r13d
- movsxd rdi, r9d
- imul rsi, rdi
- lea rdi, [rbp-0x58]
+ lea rsi, [rsi+4*rsi]
+ add rsi, rsi
+ lea rdi, [rbp-0x48]
mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:.ctor(long):this
call [rax]System.Numerics.BigInteger:.ctor(long):this
- mov r14, gword ptr [rbp-0x58]
- mov r13d, dword ptr [rbp-0x50]
- jmp SHORT G_M45937_IG16
- ;; size=50 bbWeight=2 PerfScore 25.67
+ mov r14, gword ptr [rbp-0x48]
+ mov r13d, dword ptr [rbp-0x40]
+ jmp SHORT G_M45937_IG12
+ ;; size=45 bbWeight=2 PerfScore 20.17
G_M45937_IG11:
- lea rsi, bword ptr [r14+0x10]
- mov ecx, dword ptr [r14+0x08]
- jmp SHORT G_M45937_IG13
- ;; size=10 bbWeight=2 PerfScore 9.00
-G_M45937_IG12:
- xor rsi, rsi
- xor ecx, ecx
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M45937_IG13:
- test rdi, rdi
- je SHORT G_M45937_IG14
- lea r8, bword ptr [rdi+0x10]
- mov edx, dword ptr [rdi+0x08]
- jmp SHORT G_M45937_IG15
- ;; size=14 bbWeight=2 PerfScore 11.50
-G_M45937_IG14:
- xor r8, r8
- xor edx, edx
- ;; size=5 bbWeight=2 PerfScore 1.00
-G_M45937_IG15:
- mov rdi, rsi
- mov esi, ecx
- mov rcx, r8
- mov r8d, edx
+ lea rdi, bword ptr [r14+0x10]
+ mov esi, dword ptr [r14+0x08]
+ xor rcx, rcx
+ xor r8d, r8d
mov edx, r13d
+ mov r9d, 10
mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:Multiply(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger
call [rax]System.Numerics.BigInteger:Multiply(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger
mov r14, rax
mov r13d, edx
- ;; size=32 bbWeight=2 PerfScore 10.00
-G_M45937_IG16:
+ ;; size=40 bbWeight=2 PerfScore 14.50
+G_M45937_IG12:
cmp r12d, dword ptr [rbx+0x08]
- jae G_M45937_IG23
+ jae G_M45937_IG22
mov rdi, bword ptr [rbx]
movzx rdi, word ptr [rdi+2*r12]
mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:AtoI(ushort):int
call [rax]System.Formats.Asn1.AsnWriter:AtoI(ushort):int
- mov esi, eax
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x68], xmm0
- lea rdi, [rbp-0x68]
- mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:.ctor(int):this
- call [rax]System.Numerics.BigInteger:.ctor(int):this
+ mov ecx, eax
+ cmp ecx, 0xD1FFAB1E
+ je SHORT G_M45937_IG14
+ ;; size=40 bbWeight=4 PerfScore 51.00
+G_M45937_IG13:
+ xor rdx, rdx
+ jmp SHORT G_M45937_IG15
+ ;; size=4 bbWeight=2 PerfScore 4.50
+G_M45937_IG14:
+ mov rdx, 0xD1FFAB1E ; box for System.Numerics.BigInteger:s_bnMinInt
+ mov rcx, gword ptr [rdx]
+ mov rdx, gword ptr [rcx+0x08]
+ mov ecx, dword ptr [rcx+0x10]
+ ;; size=20 bbWeight=2 PerfScore 12.50
+G_M45937_IG15:
mov rdi, r14
mov esi, r13d
- mov rdx, gword ptr [rbp-0x68]
- mov ecx, dword ptr [rbp-0x60]
mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:op_Addition(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
call [rax]System.Numerics.BigInteger:op_Addition(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
mov r14, rax
mov r13d, edx
inc r12d
cmp r12d, r15d
jl G_M45937_IG07
- ;; size=100 bbWeight=4 PerfScore 97.33
-G_M45937_IG17:
+ ;; size=36 bbWeight=4 PerfScore 23.00
+G_M45937_IG16:
mov eax, dword ptr [rbx+0x08]
mov edx, eax
inc r15d
cmp edx, r15d
cmovg edx, r15d
cmp edx, eax
- ja G_M45937_IG21
+ ja G_M45937_IG20
mov rcx, bword ptr [rbx]
mov edi, edx
lea rcx, bword ptr [rcx+2*rdi]
sub eax, edx
mov bword ptr [rbx], rcx
mov dword ptr [rbx+0x08], eax
mov rax, r14
mov rdx, r13
;; size=46 bbWeight=1 PerfScore 9.75
-G_M45937_IG18:
- add rsp, 72
+G_M45937_IG17:
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M45937_IG19:
+G_M45937_IG18:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_InvalidOidValue():System.String
call [rax]System.SR:get_Argument_InvalidOidValue():System.String
mov r15, rax
mov edi, 0xC60
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M45937_IG20:
+G_M45937_IG19:
mov rdi, 0xD1FFAB1E ; System.Numerics.BigInteger
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M45937_IG06
;; size=20 bbWeight=0 PerfScore 0.00
-G_M45937_IG21:
+G_M45937_IG20:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M45937_IG22:
+G_M45937_IG21:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_InvalidOidValue():System.String
call [rax]System.SR:get_Argument_InvalidOidValue():System.String
mov r15, rax
mov edi, 0xC60
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M45937_IG23:
+G_M45937_IG22:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 722, prolog size 44, PerfScore 262.29, instruction count 183, allocated bytes for code 722 (MethodHash=1b0c4c8e) for method System.Formats.Asn1.AsnWriter:ParseSubIdentifier(byref):System.Numerics.BigInteger (FullOpts)
+; Total bytes of code 649, prolog size 39, PerfScore 201.13, instruction count 162, allocated bytes for code 649 (MethodHash=1b0c4c8e) for method System.Formats.Asn1.AsnWriter:ParseSubIdentifier(byref):System.Numerics.BigInteger (FullOpts)
; ============================================================ -55 (-45.08 % of base) - System.Reflection.Metadata.TypeNameParser:.ctor(System.ReadOnlySpan`1[ushort],ubyte,System.Nullable`1[System.Reflection.Metadata.TypeNameParseOptions]):this ; Assembly listing for method System.Reflection.Metadata.TypeNameParser:.ctor(System.ReadOnlySpan`1[ushort],ubyte,System.Nullable`1[System.Reflection.Metadata.TypeNameParseOptions]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 7 ) byref -> rbx this single-def
+; V00 this [V00,T00] ( 7, 7 ) byref -> rdi this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
; V02 arg2 [V02,T02] ( 3, 3 ) ubyte -> rcx single-def
-; V03 arg3 [V03,T01] ( 4, 4 ) struct ( 8) [rbp-0x18] do-not-enreg[SF] single-def <System.Nullable`1[System.Reflection.Metadata.TypeNameParseOptions]>
-; V04 loc0 [V04,T07] ( 2, 1.50) struct ( 8) [rbp-0x20] do-not-enreg[SF] ld-addr-op <System.Nullable`1[System.Reflection.Metadata.TypeNameParseOptions]>
+; V03 arg3 [V03,T01] ( 4, 4 ) struct ( 8) [rbp-0x08] do-not-enreg[SF] single-def <System.Nullable`1[System.Reflection.Metadata.TypeNameParseOptions]>
+; V04 loc0 [V04,T07] ( 2, 1.50) struct ( 8) [rbp-0x10] do-not-enreg[SF] ld-addr-op <System.Nullable`1[System.Reflection.Metadata.TypeNameParseOptions]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref
-;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref single-def
-; V08 tmp3 [V08,T05] ( 3, 2 ) struct ( 8) r15 <System.Reflection.Metadata.TypeNameParseOptions>
-; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp5 [V10,T04] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V11 tmp6 [V11,T06] ( 2, 2 ) ubyte -> rdi "V04.[000..001)"
+;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref single-def
+;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref
+; V08 tmp3 [V08,T05] ( 3, 2 ) struct ( 8) rax <System.Reflection.Metadata.TypeNameParseOptions>
+;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field empty struct" <System.Reflection.Metadata.TypeNameParseOptions>
+; V10 tmp5 [V10,T03] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V11 tmp6 [V11,T04] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T06] ( 2, 2 ) ubyte -> rax "V04.[000..001)"
;
; Lcl frame size = 16
G_M43736_IG01:
push rbp
- push r15
- push rbx
sub rsp, 16
- lea rbp, [rsp+0x20]
- mov dword ptr [rbp-0x18], r8d
- mov rbx, rdi
- ;; size=20 bbWeight=1 PerfScore 5.00
+ lea rbp, [rsp+0x10]
+ mov dword ptr [rbp-0x08], r8d
+ ;; size=14 bbWeight=1 PerfScore 2.75
G_M43736_IG02:
- xor edi, edi
- mov qword ptr [rbx], rdi
- mov qword ptr [rbx+0x08], rdi
- mov qword ptr [rbx+0x10], rdi
- mov bword ptr [rbx+0x08], rsi
- mov dword ptr [rbx+0x10], edx
- mov byte ptr [rbx], cl
- movzx rdi, byte ptr [rbp-0x18]
- movzx rax, byte ptr [rbp-0x17]
- mov byte ptr [rbp-0x1F], al
- test edi, edi
+ xor eax, eax
+ mov qword ptr [rdi], rax
+ mov qword ptr [rdi+0x08], rax
+ mov qword ptr [rdi+0x10], rax
+ mov bword ptr [rdi+0x08], rsi
+ mov dword ptr [rdi+0x10], edx
+ mov byte ptr [rdi], cl
+ movzx rax, byte ptr [rbp-0x08]
+ movzx rcx, byte ptr [rbp-0x07]
+ mov byte ptr [rbp-0x0F], cl
+ test eax, eax
je SHORT G_M43736_IG04
- ;; size=38 bbWeight=1 PerfScore 10.50
+ ;; size=37 bbWeight=1 PerfScore 10.50
G_M43736_IG03:
- mov r15b, byte ptr [rbp-0x1F]
- jmp SHORT G_M43736_IG06
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ mov al, byte ptr [rbp-0x0F]
+ jmp SHORT G_M43736_IG05
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
G_M43736_IG04:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je SHORT G_M43736_IG08
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M43736_IG05:
- mov rax, 0xD1FFAB1E ; data for System.Reflection.Metadata.TypeNameParser:s_defaults
- mov r15b, byte ptr [rax]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ mov byte ptr [rdi+0x01], al
+ ;; size=3 bbWeight=1 PerfScore 1.00
G_M43736_IG06:
- mov byte ptr [rbx+0x01], r15b
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M43736_IG07:
add rsp, 16
- pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M43736_IG08:
- mov rdi, 0xD1FFAB1E ; System.Reflection.Metadata.TypeNameParser
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M43736_IG05
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 122, prolog size 13, PerfScore 24.00, instruction count 35, allocated bytes for code 122 (MethodHash=fc395527) for method System.Reflection.Metadata.TypeNameParser:.ctor(System.ReadOnlySpan`1[ushort],ubyte,System.Nullable`1[System.Reflection.Metadata.TypeNameParseOptions]):this (FullOpts)
+; Total bytes of code 67, prolog size 10, PerfScore 17.62, instruction count 23, allocated bytes for code 67 (MethodHash=fc395527) for method System.Reflection.Metadata.TypeNameParser:.ctor(System.ReadOnlySpan`1[ushort],ubyte,System.Nullable`1[System.Reflection.Metadata.TypeNameParseOptions]):this (FullOpts)
; ============================================================ -35 (-6.39 % of base) - System.Formats.Asn1.AsnWriter:EncodeSubIdentifier(System.Span`1[ubyte],byref):int ; Assembly listing for method System.Formats.Asn1.AsnWriter:EncodeSubIdentifier(System.Span`1[ubyte],byref):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 22 single block inlinees; 11 inlinees without PGO data
+; 0 inlinees with PGO data; 22 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V01 arg1 [V01,T04] ( 7, 12 ) byref -> rbx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret <System.Numerics.BigInteger>
-; V03 loc1 [V03,T26] ( 5, 2.50) int -> rbx
+; V03 loc1 [V03,T28] ( 5, 2.50) int -> rbx
; V04 loc2 [V04,T06] ( 4, 12 ) ubyte -> [rbp-0x2C]
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Numerics.BigInteger>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.Numerics.BigInteger>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Numerics.BigInteger>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Numerics.BigInteger>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V11 tmp6 [V11 ] ( 4, 32 ) struct (16) [rbp-0x40] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
+;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Numerics.BigInteger>
; V13 tmp8 [V13,T25] ( 2, 4 ) ubyte -> r8 "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
; V21 tmp16 [V21,T23] ( 3, 6 ) ubyte -> r8 "Inline return value spill temp"
;* V22 tmp17 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V27 tmp22 [V27 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V28 tmp23 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V29 tmp24 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Numerics.BigInteger>
; V33 tmp28 [V33,T15] ( 2, 8 ) ubyte -> r8 "Inline return value spill temp"
;* V34 tmp29 [V34 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]>
;* V35 tmp30 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V36 tmp31 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
;* V38 tmp33 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
;* V39 tmp34 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
;* V40 tmp35 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
; V41 tmp36 [V41,T12] ( 3, 8 ) ubyte -> r8 "Inline return value spill temp"
;* V42 tmp37 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V44 tmp39 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V46 tmp41 [V46 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V47 tmp42 [V47 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V48 tmp43 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V49 tmp44 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
;* V50 tmp45 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V51 tmp46 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
;* V52 tmp47 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V53 tmp48 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V54 tmp49 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V55 tmp50 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V56 tmp51 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp52 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V58 tmp53 [V58,T09] ( 4, 6 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V59 tmp54 [V59,T10] ( 4, 6 ) int -> r14 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V60 tmp55 [V60,T00] ( 10, 26.50) ref -> r13 single-def "field V02._bits (fldOffset=0x0)" P-INDEP
; V61 tmp56 [V61,T02] ( 6, 20.50) int -> r12 "field V02._sign (fldOffset=0x8)" P-INDEP
;* V62 tmp57 [V62 ] ( 0, 0 ) ref -> zero-ref "field V06._bits (fldOffset=0x0)" P-INDEP
;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref "field V06._sign (fldOffset=0x8)" P-INDEP
; V64 tmp59 [V64,T14] ( 2, 8 ) ref -> rdi "field V07._bits (fldOffset=0x0)" P-INDEP
; V65 tmp60 [V65,T16] ( 2, 8 ) int -> rsi "field V07._sign (fldOffset=0x8)" P-INDEP
;* V66 tmp61 [V66 ] ( 0, 0 ) ref -> zero-ref "field V08._bits (fldOffset=0x0)" P-DEP
;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref "field V08._sign (fldOffset=0x8)" P-DEP
; V68 tmp63 [V68,T05] ( 4, 12 ) ref -> rdi "field V09._bits (fldOffset=0x0)" P-INDEP
; V69 tmp64 [V69,T17] ( 2, 8 ) int -> rdx "field V09._sign (fldOffset=0x8)" P-INDEP
;* V70 tmp65 [V70 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V71 tmp66 [V71 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V72 tmp67 [V72 ] ( 3, 20 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._bits (fldOffset=0x0)" P-DEP
-; V73 tmp68 [V73 ] ( 3, 20 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._sign (fldOffset=0x8)" P-DEP
+;* V72 tmp67 [V72,T26] ( 0, 0 ) ref -> zero-ref "field V11._bits (fldOffset=0x0)" P-INDEP
+;* V73 tmp68 [V73,T27] ( 0, 0 ) int -> zero-ref "field V11._sign (fldOffset=0x8)" P-INDEP
; V74 tmp69 [V74,T07] ( 4, 10 ) ref -> rdx "field V12._bits (fldOffset=0x0)" P-INDEP
; V75 tmp70 [V75,T18] ( 2, 8 ) int -> rdi "field V12._sign (fldOffset=0x8)" P-INDEP
;* V76 tmp71 [V76 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V77 tmp72 [V77 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V78 tmp73 [V78 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp74 [V79 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V80 tmp75 [V80,T19] ( 3, 6 ) byref -> rdi "field V17._reference (fldOffset=0x0)" P-INDEP
; V81 tmp76 [V81,T24] ( 3, 6 ) int -> rdx "field V17._length (fldOffset=0x8)" P-INDEP
; V82 tmp77 [V82,T20] ( 3, 6 ) byref -> rsi "field V19._reference (fldOffset=0x0)" P-INDEP
; V83 tmp78 [V83,T11] ( 4, 8 ) int -> rcx "field V19._length (fldOffset=0x8)" P-INDEP
;* V84 tmp79 [V84 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V85 tmp80 [V85 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V86 tmp81 [V86 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V87 tmp82 [V87 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V88 tmp83 [V88 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp84 [V89 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V90 tmp85 [V90 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V91 tmp86 [V91 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V92 tmp87 [V92 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp88 [V93 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
;* V94 tmp89 [V94 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp90 [V95 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V96 tmp91 [V96 ] ( 0, 0 ) ref -> zero-ref "field V32._bits (fldOffset=0x0)" P-INDEP
;* V97 tmp92 [V97 ] ( 0, 0 ) int -> zero-ref "field V32._sign (fldOffset=0x8)" P-INDEP
;* V98 tmp93 [V98 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V99 tmp94 [V99 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V100 tmp95 [V100 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
;* V101 tmp96 [V101 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
; V102 tmp97 [V102,T21] ( 3, 6 ) byref -> rsi "field V37._reference (fldOffset=0x0)" P-INDEP
; V103 tmp98 [V103,T13] ( 3, 8 ) int -> rdx "field V37._length (fldOffset=0x8)" P-INDEP
; V104 tmp99 [V104,T22] ( 3, 6 ) byref -> rcx "field V39._reference (fldOffset=0x0)" P-INDEP
; V105 tmp100 [V105,T08] ( 4, 10 ) int -> rdi "field V39._length (fldOffset=0x8)" P-INDEP
;* V106 tmp101 [V106 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp102 [V107 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V108 tmp103 [V108 ] ( 0, 0 ) byref -> zero-ref "field V44._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp104 [V109 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
;* V110 tmp105 [V110 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp106 [V111 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V112 tmp107 [V112 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V113 tmp108 [V113 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V114 tmp109 [V114 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
;* V115 tmp110 [V115 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
;* V116 tmp111 [V116 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP
;* V117 tmp112 [V117 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
;* V118 tmp113 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
;* V119 tmp114 [V119 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
;* V120 tmp115 [V120 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V121 tmp116 [V121 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V122 tmp117 [V122 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
;* V123 tmp118 [V123 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
; V124 tmp119 [V124,T01] ( 3, 24 ) ref -> rdx "BlockOp address local"
-; V125 rat0 [V125,T03] ( 6, 17 ) long -> [rbp-0x48] "Widened IV V03"
+; V125 rat0 [V125,T03] ( 6, 17 ) long -> [rbp-0x38] "Widened IV V03"
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M53445_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
- xor eax, eax
- mov qword ptr [rbp-0x40], rax
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
mov r15, rdi
mov r14d, esi
mov rbx, rdx
- ;; size=34 bbWeight=1 PerfScore 8.75
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M53445_IG02:
cmp dword ptr [rbx+0x08], 0
je G_M53445_IG27
;; size=10 bbWeight=1 PerfScore 4.00
G_M53445_IG03:
mov r13, gword ptr [rbx]
mov r12d, dword ptr [rbx+0x08]
xor eax, eax
- mov qword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0x38], rax
;; size=13 bbWeight=0.50 PerfScore 2.62
G_M53445_IG04:
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x40], xmm0
- lea rdi, [rbp-0x40]
- mov esi, 127
- mov rcx, 0xD1FFAB1E ; code for System.Numerics.BigInteger:.ctor(int):this
- call [rcx]System.Numerics.BigInteger:.ctor(int):this
mov rdi, r13
mov esi, r12d
- mov rdx, gword ptr [rbp-0x40]
- mov ecx, dword ptr [rbp-0x38]
- mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:op_BitwiseAnd(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
- call [rax]System.Numerics.BigInteger:op_BitwiseAnd(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
+ xor rdx, rdx
+ mov ecx, 127
+ mov r8, 0xD1FFAB1E ; code for System.Numerics.BigInteger:op_BitwiseAnd(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
+ call [r8]System.Numerics.BigInteger:op_BitwiseAnd(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
mov rdi, rax
mov esi, edx
mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:op_Explicit(System.Numerics.BigInteger):int
call [rax]System.Numerics.BigInteger:op_Explicit(System.Numerics.BigInteger):int
cmp eax, 255
ja G_M53445_IG32
mov dword ptr [rbp-0x2C], eax
mov rdx, gword ptr [rbx]
mov edi, dword ptr [rbx+0x08]
cmp edi, r12d
jne SHORT G_M53445_IG12
- ;; size=97 bbWeight=4 PerfScore 89.33
+ ;; size=68 bbWeight=4 PerfScore 62.00
G_M53445_IG05:
test rdx, rdx
je SHORT G_M53445_IG06
lea rdi, bword ptr [rdx+0x10]
mov edx, dword ptr [rdx+0x08]
jmp SHORT G_M53445_IG07
;; size=14 bbWeight=2 PerfScore 11.50
G_M53445_IG06:
xor rdi, rdi
xor edx, edx
;; size=4 bbWeight=2 PerfScore 1.00
G_M53445_IG07:
test r13, r13
je SHORT G_M53445_IG08
lea rsi, bword ptr [r13+0x10]
mov ecx, dword ptr [r13+0x08]
jmp SHORT G_M53445_IG09
;; size=15 bbWeight=2 PerfScore 11.50
G_M53445_IG08:
xor rsi, rsi
xor ecx, ecx
;; size=4 bbWeight=2 PerfScore 1.00
G_M53445_IG09:
cmp edx, ecx
je SHORT G_M53445_IG10
xor r8d, r8d
jmp SHORT G_M53445_IG11
;; size=9 bbWeight=2 PerfScore 7.00
G_M53445_IG10:
mov edx, ecx
shl rdx, 2
mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rcx]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
mov r8d, eax
;; size=21 bbWeight=2 PerfScore 8.50
G_M53445_IG11:
test r8d, r8d
jne SHORT G_M53445_IG13
;; size=5 bbWeight=2 PerfScore 2.50
G_M53445_IG12:
mov eax, dword ptr [rbp-0x2C]
or eax, 128
movzx rax, al
mov dword ptr [rbp-0x2C], eax
;; size=14 bbWeight=2 PerfScore 5.00
G_M53445_IG13:
mov rdi, r13
mov esi, r12d
mov edx, 7
mov rcx, 0xD1FFAB1E ; code for System.Numerics.BigInteger:op_RightShift(System.Numerics.BigInteger,int):System.Numerics.BigInteger
call [rcx]System.Numerics.BigInteger:op_RightShift(System.Numerics.BigInteger,int):System.Numerics.BigInteger
mov r13, rax
mov r12d, edx
- mov rdi, qword ptr [rbp-0x48]
+ mov rdi, qword ptr [rbp-0x38]
cmp edi, r14d
jae G_M53445_IG31
mov eax, dword ptr [rbp-0x2C]
mov byte ptr [r15+rdi], al
inc edi
- mov qword ptr [rbp-0x48], rdi
+ mov qword ptr [rbp-0x38], rdi
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M53445_IG29
;; size=74 bbWeight=4 PerfScore 57.00
G_M53445_IG14:
mov rdx, 0xD1FFAB1E ; box for System.Numerics.BigInteger:s_bnZeroInt
mov rdx, gword ptr [rdx]
mov rdi, gword ptr [rdx+0x08]
mov edx, dword ptr [rdx+0x10]
cmp r12d, edx
jne G_M53445_IG04
test r13, r13
jne SHORT G_M53445_IG16
;; size=34 bbWeight=4 PerfScore 35.00
G_M53445_IG15:
xor rsi, rsi
xor edx, edx
jmp SHORT G_M53445_IG17
;; size=6 bbWeight=2 PerfScore 5.00
G_M53445_IG16:
lea rsi, bword ptr [r13+0x10]
mov edx, dword ptr [r13+0x08]
;; size=8 bbWeight=2 PerfScore 5.00
G_M53445_IG17:
test rdi, rdi
je SHORT G_M53445_IG19
;; size=5 bbWeight=4 PerfScore 5.00
G_M53445_IG18:
lea rcx, bword ptr [rdi+0x10]
mov edi, dword ptr [rdi+0x08]
jmp SHORT G_M53445_IG20
;; size=9 bbWeight=2 PerfScore 9.00
G_M53445_IG19:
xor rcx, rcx
xor edi, edi
;; size=4 bbWeight=2 PerfScore 1.00
G_M53445_IG20:
cmp edx, edi
je SHORT G_M53445_IG22
;; size=4 bbWeight=4 PerfScore 5.00
G_M53445_IG21:
xor r8d, r8d
jmp SHORT G_M53445_IG23
;; size=5 bbWeight=2 PerfScore 4.50
G_M53445_IG22:
mov edx, edi
shl rdx, 2
mov rdi, rsi
mov rsi, rcx
mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rcx]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
mov r8d, eax
;; size=27 bbWeight=2 PerfScore 9.50
G_M53445_IG23:
test r8d, r8d
je G_M53445_IG04
;; size=9 bbWeight=4 PerfScore 5.00
G_M53445_IG24:
- mov rbx, qword ptr [rbp-0x48]
+ mov rbx, qword ptr [rbp-0x38]
cmp ebx, r14d
ja SHORT G_M53445_IG30
cmp ebx, 1
jle SHORT G_M53445_IG25
movsxd rsi, ebx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Reverse(byref,ulong)
call [rax]System.SpanHelpers:Reverse(byref,ulong)
;; size=32 bbWeight=0.50 PerfScore 3.62
G_M53445_IG25:
mov eax, ebx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M53445_IG26:
- add rsp, 40
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M53445_IG27:
test r14d, r14d
je SHORT G_M53445_IG31
mov byte ptr [r15], 0
mov eax, 1
;; size=14 bbWeight=0.50 PerfScore 1.25
G_M53445_IG28:
- add rsp, 40
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M53445_IG29:
mov rdi, 0xD1FFAB1E ; System.Numerics.BigInteger
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M53445_IG14
;; size=20 bbWeight=0 PerfScore 0.00
G_M53445_IG30:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M53445_IG31:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M53445_IG32:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 548, prolog size 25, PerfScore 302.96, instruction count 161, allocated bytes for code 548 (MethodHash=6b552f3a) for method System.Formats.Asn1.AsnWriter:EncodeSubIdentifier(System.Span`1[ubyte],byref):int (FullOpts)
+; Total bytes of code 513, prolog size 19, PerfScore 274.38, instruction count 153, allocated bytes for code 513 (MethodHash=6b552f3a) for method System.Formats.Asn1.AsnWriter:EncodeSubIdentifier(System.Span`1[ubyte],byref):int (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/f346d702d3aeefd1cff64bb23d05701b |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 19 minutes 42 seconds.
https://github.com/MichalPetryka/runtime/tree/patch-45
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: