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] Remove unsafe bool
casts
#854
Comments
Top method regressions71 (10.22 % of base) - System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) ; Assembly listing for method System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (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; 28 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Int128>
-; V02 arg2 [V02,T11] ( 5, 3.50) byref -> rbx single-def
-; V03 loc0 [V03,T35] ( 2, 1.50) ref -> rdi class-hnd exact single-def <System.Globalization.CultureInfo>
+; V02 arg2 [V02,T13] ( 5, 3.50) byref -> rbx single-def
+; V03 loc0 [V03,T36] ( 2, 1.50) ref -> rdi class-hnd exact single-def <System.Globalization.CultureInfo>
;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Int128>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp7 [V12,T25] ( 4, 2 ) ref -> [rbp-0x40] class-hnd spill-single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V12 tmp7 [V12,T26] ( 4, 2 ) ref -> [rbp-0x70] class-hnd spill-single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
-; V14 tmp9 [V14,T27] ( 2, 2 ) ref -> rcx class-hnd single-def "dup spill" <ubyte[]>
-; V15 tmp10 [V15,T21] ( 6, 3 ) ref -> rcx
-; V16 tmp11 [V16,T22] ( 3, 3 ) ref -> [rbp-0x48] class-hnd spill-single-def "dup spill" <ubyte[]>
+; V14 tmp9 [V14,T28] ( 2, 2 ) ref -> rcx class-hnd single-def "dup spill" <ubyte[]>
+; V15 tmp10 [V15,T22] ( 6, 3 ) ref -> rcx
+; V16 tmp11 [V16,T23] ( 3, 3 ) ref -> [rbp-0x78] class-hnd spill-single-def "dup spill" <ubyte[]>
;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ubyte[]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.UInt128>
;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V25 tmp20 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V26 tmp21 [V26 ] ( 3, 1.50) byref -> [rbp-0x30] must-init pinned "Inline stloc first use temp"
-; V27 tmp22 [V27,T30] ( 3, 1.50) long -> r13 "Inline stloc first use temp"
+; V27 tmp22 [V27,T31] ( 3, 1.50) long -> r13 "Inline stloc first use temp"
;* V28 tmp23 [V28 ] ( 0, 0 ) long -> zero-ref
-; V29 tmp24 [V29,T23] ( 5, 2.50) int -> rsi "Inline return value spill temp"
+; V29 tmp24 [V29,T24] ( 5, 2.50) int -> rsi "Inline return value spill temp"
;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" <System.UInt128>
;* V31 tmp26 [V31 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V32 tmp27 [V32,T24] ( 5, 2.50) int -> rdi "Inline stloc first use temp"
+; V32 tmp27 [V32,T25] ( 5, 2.50) int -> rdi "Inline stloc first use temp"
;* V33 tmp28 [V33 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.UInt128>
;* V34 tmp29 [V34 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128>
;* V35 tmp30 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.UInt128>
;* V36 tmp31 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V37 tmp32 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V39 tmp34 [V39,T31] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V39 tmp34 [V39,T32] ( 3, 1.50) long -> rsi "Inline stloc first use temp"
;* V40 tmp35 [V40 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
;* V41 tmp36 [V41 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V42 tmp37 [V42 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline stloc first use temp"
-;* V43 tmp38 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V45 tmp40 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V46 tmp41 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
-;* V47 tmp42 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V48 tmp43 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V49 tmp44 [V49 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V50 tmp45 [V50,T32] ( 3, 1.50) int -> rdi "Inline stloc first use temp"
-;* V51 tmp46 [V51 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
-;* V52 tmp47 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V53 tmp48 [V53 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline stloc first use temp"
-;* V54 tmp49 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V56 tmp51 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V57 tmp52 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
-; V58 tmp53 [V58,T26] ( 4, 2 ) int -> rdx "Inline return value spill temp"
-;* V59 tmp54 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V60 tmp55 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.UInt128>
-; V61 tmp56 [V61,T00] ( 4, 18 ) long -> r13 "Inlining Arg"
-;* V62 tmp57 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
-;* V63 tmp58 [V63 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "Inline stloc first use temp" <System.ValueTuple`2[System.UInt128,System.UInt128]>
-;* V64 tmp59 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.UInt128>
-;* V65 tmp60 [V65 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.UInt128>
-;* V66 tmp61 [V66 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.UInt128>
-;* V67 tmp62 [V67 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.UInt128>
-;* V68 tmp63 [V68 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline stloc first use temp" <System.UInt128>
+;* V42 tmp37 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V44 tmp39 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V45 tmp40 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V46 tmp41 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V47 tmp42 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+; V49 tmp44 [V49,T33] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
+;* V50 tmp45 [V50 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
+;* V51 tmp46 [V51 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V52 tmp47 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V53 tmp48 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V54 tmp49 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp50 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+; V56 tmp51 [V56,T27] ( 4, 2 ) int -> rdx "Inline return value spill temp"
+;* V57 tmp52 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V58 tmp53 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.UInt128>
+; V59 tmp54 [V59,T00] ( 4, 18 ) long -> r13 "Inlining Arg"
+;* V60 tmp55 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
+;* V61 tmp56 [V61 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "Inline stloc first use temp" <System.ValueTuple`2[System.UInt128,System.UInt128]>
+;* V62 tmp57 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.UInt128>
+;* V63 tmp58 [V63 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.UInt128>
+;* V64 tmp59 [V64 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.UInt128>
+;* V65 tmp60 [V65 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.UInt128>
+;* V66 tmp61 [V66 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Inline stloc first use temp" <System.UInt128>
+;* V67 tmp62 [V67 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128>
+; V68 tmp63 [V68 ] ( 5, 40 ) struct (32) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.UInt128,System.UInt128]>
;* V69 tmp64 [V69 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128>
-;* V70 tmp65 [V70 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.UInt128,System.UInt128]>
-;* V71 tmp66 [V71 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.UInt128>
-; V72 tmp67 [V72,T07] ( 2, 8 ) long -> rdx ld-addr-op "Inline ldloca(s) first use temp"
-;* V73 tmp68 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.UInt128>
-;* V74 tmp69 [V74 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-;* V75 tmp70 [V75 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V76 tmp71 [V76 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V77 tmp72 [V77 ] ( 2, 8 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V78 tmp73 [V78,T02] ( 2, 16 ) long -> rdi "impAppendStmt"
-;* V79 tmp74 [V79 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V80 tmp75 [V80,T03] ( 2, 16 ) long -> rcx "Inlining Arg"
-; V81 tmp76 [V81,T13] ( 4, 2.50) byref -> r14 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V82 tmp77 [V82,T14] ( 3, 2 ) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V83 tmp78 [V83,T15] ( 3, 2 ) long -> r12 single-def "field V01._lower (fldOffset=0x0)" P-INDEP
-; V84 tmp79 [V84,T12] ( 4, 3 ) long -> r15 single-def "field V01._upper (fldOffset=0x8)" P-INDEP
-;* V85 tmp80 [V85 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-;* V86 tmp81 [V86 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-;* V87 tmp82 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V88 tmp83 [V88 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V89 tmp84 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V90 tmp85 [V90 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V91 tmp86 [V91 ] ( 0, 0 ) long -> zero-ref "field V09._lower (fldOffset=0x0)" P-INDEP
-;* V92 tmp87 [V92 ] ( 0, 0 ) long -> zero-ref "field V09._upper (fldOffset=0x8)" P-INDEP
-;* V93 tmp88 [V93 ] ( 0, 0 ) long -> zero-ref "field V10._lower (fldOffset=0x0)" P-INDEP
-;* V94 tmp89 [V94 ] ( 0, 0 ) long -> zero-ref "field V10._upper (fldOffset=0x8)" P-INDEP
-;* V95 tmp90 [V95 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V96 tmp91 [V96 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V97 tmp92 [V97 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V98 tmp93 [V98 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V99 tmp94 [V99,T29] ( 3, 1.50) byref -> r8 "field V18._reference (fldOffset=0x0)" P-INDEP
-; V100 tmp95 [V100,T33] ( 3, 1.50) int -> r9 "field V18._length (fldOffset=0x8)" P-INDEP
-; V101 tmp96 [V101,T19] ( 7, 3.50) long -> r12 "field V19._lower (fldOffset=0x0)" P-INDEP
-; V102 tmp97 [V102,T20] ( 7, 3.50) long -> r15 "field V19._upper (fldOffset=0x8)" P-INDEP
-;* V103 tmp98 [V103 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
-;* V104 tmp99 [V104 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V105 tmp100 [V105,T34] ( 3, 1.50) long -> rax "field V30._lower (fldOffset=0x0)" P-INDEP
-; V106 tmp101 [V106,T36] ( 1, 0.50) long -> rdx "field V30._upper (fldOffset=0x8)" P-INDEP
-;* V107 tmp102 [V107,T37] ( 0, 0 ) long -> zero-ref "field V33._lower (fldOffset=0x0)" P-INDEP
-;* V108 tmp103 [V108,T38] ( 0, 0 ) long -> zero-ref "field V33._upper (fldOffset=0x8)" P-INDEP
-;* V109 tmp104 [V109 ] ( 0, 0 ) long -> zero-ref "field V34._lower (fldOffset=0x0)" P-INDEP
-;* V110 tmp105 [V110 ] ( 0, 0 ) long -> zero-ref "field V34._upper (fldOffset=0x8)" P-INDEP
-;* V111 tmp106 [V111 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-DEP
-;* V112 tmp107 [V112 ] ( 0, 0 ) long -> zero-ref "field V35._upper (fldOffset=0x8)" P-DEP
-;* V113 tmp108 [V113 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V114 tmp109 [V114 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
-;* V115 tmp110 [V115 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
-;* V116 tmp111 [V116 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
-;* V117 tmp112 [V117 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V118 tmp113 [V118 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-;* V119 tmp114 [V119 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP
-;* V120 tmp115 [V120 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-;* V121 tmp116 [V121 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
-;* V122 tmp117 [V122 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
-;* V123 tmp118 [V123 ] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP
-;* V124 tmp119 [V124 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
-;* V125 tmp120 [V125 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
-;* V126 tmp121 [V126 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
-;* V127 tmp122 [V127 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP
-;* V128 tmp123 [V128 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
-;* V129 tmp124 [V129 ] ( 0, 0 ) byref -> zero-ref single-def "field V59._reference (fldOffset=0x0)" P-INDEP
-;* V130 tmp125 [V130 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP
-; V131 tmp126 [V131,T04] ( 5, 13 ) long -> r12 "field V60._lower (fldOffset=0x0)" P-INDEP
-; V132 tmp127 [V132,T01] ( 6, 17 ) long -> r15 "field V60._upper (fldOffset=0x8)" P-INDEP
-;* V133 tmp128 [V133,T16] ( 0, 0 ) long -> zero-ref "field V62._lower (fldOffset=0x0)" P-INDEP
-;* V134 tmp129 [V134,T17] ( 0, 0 ) long -> zero-ref "field V62._upper (fldOffset=0x8)" P-INDEP
-;* V135 tmp130 [V135 ] ( 0, 0 ) long -> zero-ref "field V64._lower (fldOffset=0x0)" P-INDEP
-;* V136 tmp131 [V136 ] ( 0, 0 ) long -> zero-ref "field V64._upper (fldOffset=0x8)" P-INDEP
-;* V137 tmp132 [V137 ] ( 0, 0 ) long -> zero-ref "field V65._lower (fldOffset=0x0)" P-INDEP
-;* V138 tmp133 [V138 ] ( 0, 0 ) long -> zero-ref "field V65._upper (fldOffset=0x8)" P-INDEP
-;* V139 tmp134 [V139 ] ( 0, 0 ) long -> zero-ref "field V66._lower (fldOffset=0x0)" P-INDEP
-;* V140 tmp135 [V140 ] ( 0, 0 ) long -> zero-ref "field V66._upper (fldOffset=0x8)" P-INDEP
-;* V141 tmp136 [V141 ] ( 0, 0 ) long -> zero-ref "field V67._lower (fldOffset=0x0)" P-DEP
-;* V142 tmp137 [V142 ] ( 0, 0 ) long -> zero-ref "field V67._upper (fldOffset=0x8)" P-DEP
-; V143 tmp138 [V143,T05] ( 3, 12 ) long -> rbx "field V68._lower (fldOffset=0x0)" P-INDEP
-; V144 tmp139 [V144,T06] ( 3, 12 ) long -> r14 "field V68._upper (fldOffset=0x8)" P-INDEP
-;* V145 tmp140 [V145 ] ( 0, 0 ) long -> zero-ref "field V69._lower (fldOffset=0x0)" P-INDEP
-;* V146 tmp141 [V146 ] ( 0, 0 ) long -> zero-ref "field V69._upper (fldOffset=0x8)" P-INDEP
-; V147 tmp142 [V147,T08] ( 2, 8 ) long -> rsi "field V71._lower (fldOffset=0x0)" P-INDEP
-; V148 tmp143 [V148,T18] ( 1, 4 ) long -> rdx "field V71._upper (fldOffset=0x8)" P-INDEP
-; V149 tmp144 [V149,T09] ( 2, 8 ) long -> rdx "field V73._lower (fldOffset=0x0)" P-INDEP
-; V150 tmp145 [V150,T10] ( 2, 8 ) long -> rcx "field V73._upper (fldOffset=0x8)" P-INDEP
-;* V151 tmp146 [V151 ] ( 0, 0 ) long -> zero-ref "V63.[000..008)"
-;* V152 tmp147 [V152 ] ( 0, 0 ) long -> zero-ref "V63.[008..016)"
-;* V153 tmp148 [V153 ] ( 0, 0 ) long -> zero-ref "V63.[016..024)"
-;* V154 tmp149 [V154 ] ( 0, 0 ) long -> zero-ref "V63.[024..032)"
-;* V155 tmp150 [V155 ] ( 0, 0 ) long -> zero-ref "V70.[000..008)"
-;* V156 tmp151 [V156 ] ( 0, 0 ) long -> zero-ref "V70.[008..016)"
-;* V157 tmp152 [V157 ] ( 0, 0 ) long -> zero-ref "V70.[016..024)"
-;* V158 tmp153 [V158 ] ( 0, 0 ) long -> zero-ref "V70.[024..032)"
-; V159 tmp154 [V159,T28] ( 2, 2 ) long -> r14 "Cast away GC"
+; V70 tmp65 [V70,T08] ( 2, 8 ) long -> rdi ld-addr-op "Inline ldloca(s) first use temp"
+;* V71 tmp66 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128>
+;* V72 tmp67 [V72 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+;* V73 tmp68 [V73 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V74 tmp69 [V74 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V75 tmp70 [V75 ] ( 2, 8 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V76 tmp71 [V76,T03] ( 2, 16 ) long -> rsi "impAppendStmt"
+;* V77 tmp72 [V77 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V78 tmp73 [V78,T04] ( 2, 16 ) long -> rsi "Inlining Arg"
+; V79 tmp74 [V79,T05] ( 3, 12 ) long -> rdx "Inline stloc first use temp"
+; V80 tmp75 [V80,T09] ( 2, 8 ) long -> rdi "Inline stloc first use temp"
+; V81 tmp76 [V81 ] ( 4, 32 ) struct (16) [rbp-0x68] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.UInt128>
+; V82 tmp77 [V82,T15] ( 4, 2.50) byref -> r14 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V83 tmp78 [V83,T16] ( 3, 2 ) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V84 tmp79 [V84,T17] ( 3, 2 ) long -> r12 single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+; V85 tmp80 [V85,T14] ( 4, 3 ) long -> r15 single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+;* V86 tmp81 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+;* V87 tmp82 [V87 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
+;* V88 tmp83 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V89 tmp84 [V89 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+;* V90 tmp85 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V91 tmp86 [V91 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+;* V92 tmp87 [V92 ] ( 0, 0 ) long -> zero-ref "field V09._lower (fldOffset=0x0)" P-INDEP
+;* V93 tmp88 [V93 ] ( 0, 0 ) long -> zero-ref "field V09._upper (fldOffset=0x8)" P-INDEP
+;* V94 tmp89 [V94 ] ( 0, 0 ) long -> zero-ref "field V10._lower (fldOffset=0x0)" P-INDEP
+;* V95 tmp90 [V95 ] ( 0, 0 ) long -> zero-ref "field V10._upper (fldOffset=0x8)" P-INDEP
+;* V96 tmp91 [V96 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
+;* V97 tmp92 [V97 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+;* V98 tmp93 [V98 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
+;* V99 tmp94 [V99 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
+; V100 tmp95 [V100,T30] ( 3, 1.50) byref -> r8 "field V18._reference (fldOffset=0x0)" P-INDEP
+; V101 tmp96 [V101,T34] ( 3, 1.50) int -> r9 "field V18._length (fldOffset=0x8)" P-INDEP
+; V102 tmp97 [V102,T20] ( 7, 3.50) long -> r12 "field V19._lower (fldOffset=0x0)" P-INDEP
+; V103 tmp98 [V103,T21] ( 7, 3.50) long -> r15 "field V19._upper (fldOffset=0x8)" P-INDEP
+;* V104 tmp99 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V105 tmp100 [V105 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
+; V106 tmp101 [V106,T35] ( 3, 1.50) long -> rax "field V30._lower (fldOffset=0x0)" P-INDEP
+; V107 tmp102 [V107,T37] ( 1, 0.50) long -> rdx "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V108 tmp103 [V108,T38] ( 0, 0 ) long -> zero-ref "field V33._lower (fldOffset=0x0)" P-INDEP
+;* V109 tmp104 [V109,T39] ( 0, 0 ) long -> zero-ref "field V33._upper (fldOffset=0x8)" P-INDEP
+;* V110 tmp105 [V110 ] ( 0, 0 ) long -> zero-ref "field V34._lower (fldOffset=0x0)" P-INDEP
+;* V111 tmp106 [V111 ] ( 0, 0 ) long -> zero-ref "field V34._upper (fldOffset=0x8)" P-INDEP
+;* V112 tmp107 [V112 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-DEP
+;* V113 tmp108 [V113 ] ( 0, 0 ) long -> zero-ref "field V35._upper (fldOffset=0x8)" P-DEP
+;* V114 tmp109 [V114 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V115 tmp110 [V115 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
+;* V116 tmp111 [V116 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V117 tmp112 [V117 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
+;* V118 tmp113 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V119 tmp114 [V119 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+;* V120 tmp115 [V120 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V121 tmp116 [V121 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
+;* V122 tmp117 [V122 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V123 tmp118 [V123 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
+;* V124 tmp119 [V124 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP
+;* V125 tmp120 [V125 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
+;* V126 tmp121 [V126 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+;* V127 tmp122 [V127 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
+;* V128 tmp123 [V128 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V129 tmp124 [V129 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
+;* V130 tmp125 [V130 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP
+;* V131 tmp126 [V131 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
+; V132 tmp127 [V132,T01] ( 6, 17 ) long -> r12 "field V58._lower (fldOffset=0x0)" P-INDEP
+; V133 tmp128 [V133,T02] ( 6, 17 ) long -> r15 "field V58._upper (fldOffset=0x8)" P-INDEP
+;* V134 tmp129 [V134,T18] ( 0, 0 ) long -> zero-ref "field V60._lower (fldOffset=0x0)" P-INDEP
+;* V135 tmp130 [V135,T19] ( 0, 0 ) long -> zero-ref "field V60._upper (fldOffset=0x8)" P-INDEP
+;* V136 tmp131 [V136 ] ( 0, 0 ) long -> zero-ref "field V62._lower (fldOffset=0x0)" P-INDEP
+;* V137 tmp132 [V137 ] ( 0, 0 ) long -> zero-ref "field V62._upper (fldOffset=0x8)" P-INDEP
+;* V138 tmp133 [V138 ] ( 0, 0 ) long -> zero-ref "field V63._lower (fldOffset=0x0)" P-INDEP
+;* V139 tmp134 [V139 ] ( 0, 0 ) long -> zero-ref "field V63._upper (fldOffset=0x8)" P-INDEP
+;* V140 tmp135 [V140 ] ( 0, 0 ) long -> zero-ref "field V64._lower (fldOffset=0x0)" P-INDEP
+;* V141 tmp136 [V141 ] ( 0, 0 ) long -> zero-ref "field V64._upper (fldOffset=0x8)" P-INDEP
+;* V142 tmp137 [V142 ] ( 0, 0 ) long -> zero-ref "field V65._lower (fldOffset=0x0)" P-DEP
+;* V143 tmp138 [V143 ] ( 0, 0 ) long -> zero-ref "field V65._upper (fldOffset=0x8)" P-DEP
+; V144 tmp139 [V144,T06] ( 3, 12 ) long -> rbx "field V66._lower (fldOffset=0x0)" P-INDEP
+; V145 tmp140 [V145,T07] ( 3, 12 ) long -> r14 "field V66._upper (fldOffset=0x8)" P-INDEP
+;* V146 tmp141 [V146 ] ( 0, 0 ) long -> zero-ref "field V67._lower (fldOffset=0x0)" P-INDEP
+;* V147 tmp142 [V147 ] ( 0, 0 ) long -> zero-ref "field V67._upper (fldOffset=0x8)" P-INDEP
+;* V148 tmp143 [V148 ] ( 0, 0 ) long -> zero-ref "field V69._lower (fldOffset=0x0)" P-INDEP
+;* V149 tmp144 [V149 ] ( 0, 0 ) long -> zero-ref "field V69._upper (fldOffset=0x8)" P-INDEP
+;* V150 tmp145 [V150 ] ( 0, 0 ) long -> zero-ref "field V71._lower (fldOffset=0x0)" P-INDEP
+;* V151 tmp146 [V151 ] ( 0, 0 ) long -> zero-ref "field V71._upper (fldOffset=0x8)" P-INDEP
+; V152 tmp147 [V152 ] ( 3, 20 ) long -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V81._lower (fldOffset=0x0)" P-DEP
+; V153 tmp148 [V153 ] ( 3, 20 ) long -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V81._upper (fldOffset=0x8)" P-DEP
+; V154 tmp149 [V154,T10] ( 2, 8 ) long -> r12 "V61.[000..008)"
+; V155 tmp150 [V155,T11] ( 2, 8 ) long -> r15 "V61.[008..016)"
+; V156 tmp151 [V156,T12] ( 2, 8 ) long -> rsi "V61.[016..024)"
+;* V157 tmp152 [V157 ] ( 0, 0 ) long -> zero-ref "V61.[024..032)"
+; V158 tmp153 [V158,T29] ( 2, 2 ) long -> r14 "Cast away GC"
;
-; Lcl frame size = 56
+; Lcl frame size = 104
G_M8095_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x60]
+ sub rsp, 104
+ lea rbp, [rsp+0x90]
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov r14, rdi
mov r13d, esi
mov r12, rdx
mov r15, rcx
mov rbx, r8
- ;; size=40 bbWeight=1 PerfScore 9.25
+ ;; size=43 bbWeight=1 PerfScore 9.25
G_M8095_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
test r15, r15
jl G_M8095_IG14
;; size=22 bbWeight=1 PerfScore 3.50
G_M8095_IG03:
test r15, r15
je G_M8095_IG06
mov edi, 20
cmp r15, 5
ja SHORT G_M8095_IG04
cmp r15, 5
jne SHORT G_M8095_IG05
mov rsi, 0xD1FFAB1E
mov edx, 21
cmp r12, rsi
cmovae edi, edx
jmp SHORT G_M8095_IG05
;; size=49 bbWeight=0.50 PerfScore 3.50
G_M8095_IG04:
mov rdi, r12
mov rsi, r15
mov rdx, 0xD1FFAB1E
mov ecx, 5
mov rax, 0xD1FFAB1E ; code for System.UInt128:op_Division(System.UInt128,System.UInt128):System.UInt128
call [rax]System.UInt128:op_Division(System.UInt128,System.UInt128):System.UInt128
mov rsi, rax
or rsi, 1
lzcnt rsi, rsi
xor esi, 63
movsxd rsi, esi
mov rdx, 0xD1FFAB1E ; static handle
movzx rdi, byte ptr [rsi+rdx]
- mov esi, edi
- mov rdx, 0xD1FFAB1E ; static handle
- cmp rax, qword ptr [rdx+8*rsi]
+ mov rsi, 0xD1FFAB1E ; static handle
+ cmp rax, qword ptr [rsi+8*rdi]
setb sil
movzx rsi, sil
sub edi, esi
add edi, 20
- ;; size=95 bbWeight=0.50 PerfScore 7.38
+ ;; size=93 bbWeight=0.50 PerfScore 7.25
G_M8095_IG05:
mov esi, edi
jmp SHORT G_M8095_IG07
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M8095_IG06:
mov rsi, r12
or rsi, 1
lzcnt rsi, rsi
xor esi, 63
movsxd rsi, esi
mov rdx, 0xD1FFAB1E ; static handle
movzx rsi, byte ptr [rsi+rdx]
- mov edx, esi
- mov rdi, 0xD1FFAB1E ; static handle
- cmp r12, qword ptr [rdi+8*rdx]
+ mov rdx, 0xD1FFAB1E ; static handle
+ cmp r12, qword ptr [rdx+8*rsi]
setb dl
movzx rdx, dl
sub esi, edx
- ;; size=57 bbWeight=0.50 PerfScore 5.12
+ ;; size=55 bbWeight=0.50 PerfScore 5.00
G_M8095_IG07:
mov edx, -1
test esi, esi
cmovge edx, esi
cmp edx, r13d
jle SHORT G_M8095_IG08
xor edx, edx
mov dword ptr [rbx], edx
jmp G_M8095_IG13
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M8095_IG08:
mov dword ptr [rbx], edx
mov bword ptr [rbp-0x30], r14
movsxd rdi, edx
add rdi, r14
mov r13, rdi
cmp esi, -1
jge SHORT G_M8095_IG09
mov rsi, r12
mov rdx, r15
mov rdi, r13
mov ecx, -1
mov rax, 0xD1FFAB1E ; code for System.Number:UInt128ToDecChars[ubyte](ulong,System.UInt128,int):ulong
call [rax]System.Number:UInt128ToDecChars[ubyte](ulong,System.UInt128,int):ulong
jmp G_M8095_IG12
;; size=51 bbWeight=0.50 PerfScore 5.12
G_M8095_IG09:
test r15, r15
je G_M8095_IG11
;; size=9 bbWeight=0.50 PerfScore 0.62
G_M8095_IG10:
mov rdi, r12
mov rsi, r15
mov rdx, 0xD1FFAB1E
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.UInt128:op_Division(System.UInt128,System.UInt128):System.UInt128
call [rax]System.UInt128:op_Division(System.UInt128,System.UInt128):System.UInt128
mov rbx, rax
mov r14, rdx
- mov rdi, 0xD1FFAB1E
- lea rsi, [rbp-0x38]
+ mov rsi, 0xD1FFAB1E
+ lea rdi, [rbp-0x58]
mov rdx, rbx
- mulx rdi, rcx, rdi
- mov qword ptr [rsi], rcx
- mov rsi, qword ptr [rbp-0x38]
- mov rdx, rsi
- mov rcx, 0xD1FFAB1E
- imul rcx, r14
- add rcx, rdi
- mov rdi, r12
+ mulx rsi, rax, rsi
+ mov qword ptr [rdi], rax
+ mov rdi, qword ptr [rbp-0x58]
+ mov rdx, 0xD1FFAB1E
+ imul rdx, r14
+ add rsi, rdx
+ mov rdx, r12
+ sub rdx, rdi
+ cmp rdx, r12
+ seta dil
+ movzx rdi, dil
+ vxorps xmm0, xmm0, xmm0
+ vmovups xmmword ptr [rbp-0x68], xmm0
+ sub r15, rsi
mov rsi, r15
- mov rax, 0xD1FFAB1E ; code for System.UInt128:op_Subtraction(System.UInt128,System.UInt128):System.UInt128
- call [rax]System.UInt128:op_Subtraction(System.UInt128,System.UInt128):System.UInt128
- mov rsi, rax
- mov r12, rbx
- mov r15, r14
+ sub rsi, rdi
+ lea rdi, [rbp-0x68]
+ mov rax, 0xD1FFAB1E ; code for System.UInt128:.ctor(ulong,ulong):this
+ call [rax]System.UInt128:.ctor(ulong,ulong):this
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0x50], ymm0
+ mov rsi, rbx
+ mov rdx, r14
+ mov rcx, qword ptr [rbp-0x68]
+ mov r8, qword ptr [rbp-0x60]
+ lea rdi, [rbp-0x50]
+ mov rax, 0xD1FFAB1E ; code for System.ValueTuple`2[System.UInt128,System.UInt128]:.ctor(System.UInt128,System.UInt128):this
+ call [rax]System.ValueTuple`2[System.UInt128,System.UInt128]:.ctor(System.UInt128,System.UInt128):this
+ mov r12, qword ptr [rbp-0x50]
+ mov r15, qword ptr [rbp-0x48]
+ mov rsi, qword ptr [rbp-0x40]
mov rdi, r13
mov edx, 19
mov rax, 0xD1FFAB1E ; code for System.Number:UInt64ToDecChars[ubyte](ulong,ulong,int):ulong
call [rax]System.Number:UInt64ToDecChars[ubyte](ulong,ulong,int):ulong
mov r13, rax
test r15, r15
jne G_M8095_IG10
- ;; size=144 bbWeight=4 PerfScore 93.00
+ ;; size=216 bbWeight=4 PerfScore 147.67
G_M8095_IG11:
mov rdi, r13
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Number:UInt64ToDecChars[ubyte](ulong,ulong):ulong
call [rax]System.Number:UInt64ToDecChars[ubyte](ulong,ulong):ulong
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M8095_IG12:
xor edi, edi
mov bword ptr [rbp-0x30], rdi
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M8095_IG13:
xor rdi, rdi
mov bword ptr [rbp-0x30], rdi
jmp G_M8095_IG18
;; size=11 bbWeight=0.50 PerfScore 1.62
G_M8095_IG14:
mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
call [rax]System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
- mov gword ptr [rbp-0x40], rax
+ mov gword ptr [rbp-0x70], rax
mov rcx, gword ptr [rax+0x98]
test rcx, rcx
jne SHORT G_M8095_IG15
mov rsi, gword ptr [rax+0x28]
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov rcx, 0xD1FFAB1E ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:GetBytes(System.String):ubyte[]:this
call [rcx]System.Text.UTF8Encoding+UTF8EncodingSealed:GetBytes(System.String):ubyte[]:this
mov rcx, rax
- mov gword ptr [rbp-0x48], rcx
- mov rdi, gword ptr [rbp-0x40]
+ mov gword ptr [rbp-0x78], rcx
+ mov rdi, gword ptr [rbp-0x70]
lea rdi, bword ptr [rdi+0x98]
mov rsi, rcx
call CORINFO_HELP_ASSIGN_REF
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x78]
;; size=87 bbWeight=0.50 PerfScore 10.00
G_M8095_IG15:
test rcx, rcx
je SHORT G_M8095_IG16
lea r8, bword ptr [rcx+0x10]
mov r9d, dword ptr [rcx+0x08]
jmp SHORT G_M8095_IG17
;; size=15 bbWeight=0.50 PerfScore 2.88
G_M8095_IG16:
xor r8, r8
xor r9d, r9d
;; size=6 bbWeight=0.50 PerfScore 0.25
G_M8095_IG17:
mov bword ptr [rsp], r14
mov dword ptr [rsp+0x08], r13d
mov rdi, r12
mov rsi, r15
mov rcx, r8
mov r8d, r9d
mov r9, rbx
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Number:TryNegativeInt128ToDecStr[ubyte](System.Int128,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
call [rax]System.Number:TryNegativeInt128ToDecStr[ubyte](System.Int128,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
;; size=41 bbWeight=0.50 PerfScore 3.38
G_M8095_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M8095_IG19:
- add rsp, 56
+ add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 695, prolog size 25, PerfScore 156.38, instruction count 175, allocated bytes for code 695 (MethodHash=adbbe060) for method System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts)
+; Total bytes of code 766, prolog size 28, PerfScore 210.79, instruction count 190, allocated bytes for code 766 (MethodHash=adbbe060) for method System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts)
; ============================================================ 2 (1.60 % of base) - System.Half:op_Explicit(float):System.Half ; Assembly listing for method System.Half:op_Explicit(float):System.Half (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T05] ( 11, 11 ) float -> mm0
; V01 loc0 [V01,T03] ( 2, 2 ) int -> rax
-; V02 loc1 [V02,T01] ( 3, 3 ) int -> rcx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc3 [V04,T02] ( 3, 3 ) int -> rdx
+; V04 loc3 [V04,T01] ( 3, 3 ) int -> rdx
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc5 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T00] ( 3, 6 ) int -> rdi "dup spill"
-;* V09 tmp2 [V09 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Half>
-;* V11 tmp4 [V11 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V12 tmp5 [V12,T04] ( 2, 2 ) ushort -> rax "field V10._value (fldOffset=0x0)" P-INDEP
+; V08 tmp1 [V08,T02] ( 3, 3 ) int -> rcx
+; V09 tmp2 [V09,T00] ( 3, 6 ) int -> rdi "dup spill"
+;* V10 tmp3 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
+;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Half>
+;* V12 tmp5 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
+; V13 tmp6 [V13,T04] ( 2, 2 ) ushort -> rax "field V11._value (fldOffset=0x0)" P-INDEP
;
; Lcl frame size = 0
G_M62525_IG01:
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
G_M62525_IG02:
vmovd eax, xmm0
and eax, 0xD1FFAB1E
shr eax, 16
+ xor ecx, ecx
+ mov edx, -1
vucomiss xmm0, xmm0
- setp cl
- movzx rcx, cl
- dec ecx
+ cmovnp ecx, edx
vandps xmm0, xmm0, xmmword ptr [reloc @RWD00]
vmovups xmm1, xmmword ptr [reloc @RWD16]
vminss xmm0, xmm1, xmm0
vmovups xmm1, xmmword ptr [reloc @RWD32]
vmaxss xmm1, xmm1, xmm0
vmovd edx, xmm1
and edx, 0xD1FFAB1E
add edx, 0xD1FFAB1E
vmovd xmm1, edx
vaddss xmm0, xmm0, xmm1
mov edx, 0x7C00
andn edx, ecx, edx
vmovd edi, xmm0
add edi, 0xD1FFAB1E
and ecx, edi
shr edi, 13
add ecx, edi
andn ecx, edx, ecx
or ecx, edx
or eax, ecx
movzx rax, ax
- ;; size=119 bbWeight=1 PerfScore 33.00
+ ;; size=121 bbWeight=1 PerfScore 32.25
G_M62525_IG03:
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
RWD00 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
RWD16 dq 00000000477FF000h, 0000000000000000h
RWD32 dq 0000000038800000h, 0000000000000000h
-; Total bytes of code 125, prolog size 4, PerfScore 35.75, instruction count 32, allocated bytes for code 125 (MethodHash=e1080bc2) for method System.Half:op_Explicit(float):System.Half (FullOpts)
+; Total bytes of code 127, prolog size 4, PerfScore 35.00, instruction count 32, allocated bytes for code 127 (MethodHash=e1080bc2) for method System.Half:op_Explicit(float):System.Half (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/c08b1f05ba84f6b1fbf660af5ee237d8 |
Top method improvements-822 (-68.16 % of base) - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this ; Assembly listing for method System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):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; 26 single block inlinees; 24 inlinees without PGO data
+; 0 inlinees with PGO data; 31 single block inlinees; 24 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T22] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
-; V01 arg1 [V01,T23] ( 3, 3 ) long -> rsi single-def
+; V00 this [V00,T06] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
+; V01 arg1 [V01,T07] ( 3, 3 ) long -> rsi single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
-; V03 loc1 [V03 ] ( 9, 5 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op ptr
+; V03 loc1 [V03 ] ( 4, 2.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op ptr
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Buffers.StandardFormat>
; V05 OutArgs [V05 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [rbp-0x48] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp7 [V12 ] ( 7, 10 ) struct ( 8) [rbp-0x58] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Buffers.StandardFormat>
-; V13 tmp8 [V13,T25] ( 7, 3.50) int -> r12 "Inline stloc first use temp"
-;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V15 tmp10 [V15,T35] ( 2, 2 ) int -> rsi "impAppendStmt"
-; V16 tmp11 [V16,T36] ( 2, 2 ) int -> rsi "impAppendStmt"
+;* V12 tmp7 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Buffers.StandardFormat>
+;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V18 tmp13 [V18,T37] ( 2, 2 ) int -> rsi "impAppendStmt"
+;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp15 [V20,T29] ( 4, 2 ) int -> rax "Inline stloc first use temp"
+; V20 tmp15 [V20,T10] ( 4, 2 ) int -> rax "Inline stloc first use temp"
;* V21 tmp16 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V22 tmp17 [V22 ] ( 3, 1.50) byref -> [rbp-0x60] must-init pinned ptr "Inline stloc first use temp"
+; V22 tmp17 [V22 ] ( 3, 1.50) byref -> [rbp-0x40] must-init pinned ptr "Inline stloc first use temp"
;* V23 tmp18 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V25 tmp20 [V25,T44] ( 3, 1.50) int -> rax "Inline stloc first use temp"
+; V25 tmp20 [V25,T17] ( 3, 1.50) long -> rax "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V28 tmp23 [V28 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline stloc first use temp"
-;* V29 tmp24 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V31 tmp26 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
-;* V33 tmp28 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V34 tmp29 [V34 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-; V35 tmp30 [V35,T04] ( 9, 37 ) long -> registers ptr "Inlining Arg"
-; V36 tmp31 [V36,T08] ( 8, 29 ) long -> r8 "Inlining Arg"
-; V37 tmp32 [V37,T38] ( 2, 2 ) long -> r8 "dup spill"
-;* V38 tmp33 [V38 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]>
-; V39 tmp34 [V39,T10] ( 3, 12 ) long -> rdx "Inline stloc first use temp"
-;* V40 tmp35 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
-;* V41 tmp36 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V42 tmp37 [V42 ] ( 0, 0 ) long -> zero-ref
-;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref ptr
-; V44 tmp39 [V44,T13] ( 2, 8 ) ref -> rcx
-;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V46 tmp41 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V47 tmp42 [V47 ] ( 0, 0 ) long -> zero-ref
-;* V48 tmp43 [V48 ] ( 0, 0 ) long -> zero-ref ptr
-; V49 tmp44 [V49,T47] ( 2, 1 ) ref -> rdx single-def
-;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V51 tmp46 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V52 tmp47 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V53 tmp48 [V53,T28] ( 5, 2.50) ubyte -> r13 "Inline return value spill temp"
-;* V54 tmp49 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V55 tmp50 [V55,T30] ( 4, 2 ) int -> rax "Inline stloc first use temp"
-;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp"
-;* V57 tmp52 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V58 tmp53 [V58 ] ( 3, 1.50) byref -> [rbp-0x68] must-init pinned ptr "Inline stloc first use temp"
-; V59 tmp54 [V59,T45] ( 3, 1.50) long -> r12 "Inline stloc first use temp"
-;* V60 tmp55 [V60 ] ( 0, 0 ) long -> zero-ref
-;* V61 tmp56 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V62 tmp57 [V62 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V63 tmp58 [V63,T46] ( 3, 1.50) int -> rax "Inline stloc first use temp"
-;* V64 tmp59 [V64 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
-;* V65 tmp60 [V65 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V66 tmp61 [V66 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline stloc first use temp"
-;* V67 tmp62 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V68 tmp63 [V68 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V69 tmp64 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V70 tmp65 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
-; V71 tmp66 [V71,T31] ( 4, 2 ) int -> rdx "Inline return value spill temp"
-;* V72 tmp67 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V73 tmp68 [V73 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-; V74 tmp69 [V74,T05] ( 9, 37 ) long -> registers ptr "Inlining Arg"
-; V75 tmp70 [V75,T09] ( 6, 27 ) long -> r8 "Inlining Arg"
-;* V76 tmp71 [V76 ] ( 0, 0 ) long -> zero-ref "dup spill"
-;* V77 tmp72 [V77 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]>
-; V78 tmp73 [V78,T11] ( 3, 12 ) long -> rdx "Inline stloc first use temp"
-;* V79 tmp74 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
-;* V80 tmp75 [V80 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V81 tmp76 [V81 ] ( 0, 0 ) long -> zero-ref
-;* V82 tmp77 [V82 ] ( 0, 0 ) long -> zero-ref ptr
-; V83 tmp78 [V83,T14] ( 2, 8 ) ref -> rcx
-;* V84 tmp79 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V85 tmp80 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V86 tmp81 [V86 ] ( 0, 0 ) long -> zero-ref
-; V87 tmp82 [V87,T51] ( 2, 1 ) long -> r8
-; V88 tmp83 [V88,T48] ( 2, 1 ) ref -> rdx single-def
-;* V89 tmp84 [V89 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V90 tmp85 [V90 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V91 tmp86 [V91 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V92 tmp87 [V92,T01] ( 9,106 ) long -> registers ptr "Inlining Arg"
-; V93 tmp88 [V93,T00] ( 7,121 ) long -> r12 "Inlining Arg"
-; V94 tmp89 [V94,T02] ( 6, 89 ) int -> r13 "Inlining Arg"
+;* V28 tmp23 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V30 tmp25 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V33 tmp28 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+; V34 tmp29 [V34,T00] ( 9, 37 ) long -> registers ptr "Inlining Arg"
+; V35 tmp30 [V35,T01] ( 8, 29 ) long -> r8 "Inlining Arg"
+; V36 tmp31 [V36,T14] ( 2, 2 ) long -> r8 "dup spill"
+;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]>
+; V38 tmp33 [V38,T02] ( 3, 12 ) long -> rdx "Inline stloc first use temp"
+;* V39 tmp34 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
+;* V40 tmp35 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V41 tmp36 [V41 ] ( 0, 0 ) long -> zero-ref
+;* V42 tmp37 [V42 ] ( 0, 0 ) long -> zero-ref ptr
+; V43 tmp38 [V43,T03] ( 2, 8 ) ref -> rdx
+;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp40 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V46 tmp41 [V46 ] ( 0, 0 ) long -> zero-ref
+;* V47 tmp42 [V47 ] ( 0, 0 ) long -> zero-ref ptr
+; V48 tmp43 [V48,T18] ( 2, 1 ) ref -> r9 single-def
+;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V50 tmp45 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V51 tmp46 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V52 tmp47 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V53 tmp48 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V56 tmp51 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V57 tmp52 [V57 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+;* V58 tmp53 [V58 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V59 tmp54 [V59 ] ( 0, 0 ) long -> zero-ref
+;* V60 tmp55 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V61 tmp56 [V61 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V62 tmp57 [V62 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V63 tmp58 [V63 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
+;* V64 tmp59 [V64 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V65 tmp60 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V67 tmp62 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V68 tmp63 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V69 tmp64 [V69 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V70 tmp65 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V71 tmp66 [V71 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+;* V72 tmp67 [V72 ] ( 0, 0 ) long -> zero-ref ptr "Inlining Arg"
+;* V73 tmp68 [V73 ] ( 0, 0 ) long -> zero-ref ptr "Inlining Arg"
+;* V74 tmp69 [V74 ] ( 0, 0 ) long -> zero-ref "dup spill"
+;* V75 tmp70 [V75 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]>
+;* V76 tmp71 [V76 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp"
+;* V77 tmp72 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
+;* V78 tmp73 [V78 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V79 tmp74 [V79 ] ( 0, 0 ) long -> zero-ref
+;* V80 tmp75 [V80 ] ( 0, 0 ) long -> zero-ref ptr
+;* V81 tmp76 [V81 ] ( 0, 0 ) ref -> zero-ref ptr
+;* V82 tmp77 [V82 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V83 tmp78 [V83 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V84 tmp79 [V84 ] ( 0, 0 ) long -> zero-ref
+;* V85 tmp80 [V85 ] ( 0, 0 ) long -> zero-ref ptr
+;* V86 tmp81 [V86 ] ( 0, 0 ) ref -> zero-ref ptr
+;* V87 tmp82 [V87 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V88 tmp83 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V89 tmp84 [V89 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V90 tmp85 [V90 ] ( 0, 0 ) long -> zero-ref ptr "Inlining Arg"
+;* V91 tmp86 [V91 ] ( 0, 0 ) long -> zero-ref ptr "Inlining Arg"
+;* V92 tmp87 [V92 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V93 tmp88 [V93 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]>
+;* V94 tmp89 [V94 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp"
;* V95 tmp90 [V95 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]>
-;* V96 tmp91 [V96 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp"
-;* V97 tmp92 [V97 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "dup spill" <System.ValueTuple`2[ulong,ulong]>
-; V98 tmp93 [V98,T03] ( 2, 64 ) long -> r12 "dup spill"
-; V99 tmp94 [V99,T12] ( 3, 12 ) long -> rdx "Inline stloc first use temp"
-;* V100 tmp95 [V100 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
-;* V101 tmp96 [V101 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V102 tmp97 [V102 ] ( 0, 0 ) long -> zero-ref
-;* V103 tmp98 [V103 ] ( 0, 0 ) long -> zero-ref ptr
-; V104 tmp99 [V104,T15] ( 2, 8 ) ref -> rsi
-;* V105 tmp100 [V105 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V106 tmp101 [V106 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V96 tmp91 [V96 ] ( 0, 0 ) long -> zero-ref ptr "dup spill"
+;* V97 tmp92 [V97 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp"
+;* V98 tmp93 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
+;* V99 tmp94 [V99 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V100 tmp95 [V100 ] ( 0, 0 ) long -> zero-ref
+;* V101 tmp96 [V101 ] ( 0, 0 ) long -> zero-ref ptr
+;* V102 tmp97 [V102 ] ( 0, 0 ) ref -> zero-ref ptr
+;* V103 tmp98 [V103 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V104 tmp99 [V104 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V105 tmp100 [V105 ] ( 0, 0 ) long -> zero-ref ptr "Inline stloc first use temp"
+;* V106 tmp101 [V106 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
;* V107 tmp102 [V107 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V108 tmp103 [V108,T39] ( 2, 2 ) ushort -> r13 "Inlining Arg"
-; V109 tmp104 [V109,T52] ( 2, 1 ) ubyte -> rdx "Inline return value spill temp"
-; V110 tmp105 [V110,T21] ( 3, 6 ) int -> rdx "Inlining Arg"
-; V111 tmp106 [V111 ] ( 4, 8 ) struct (16) [rbp-0x78] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V112 tmp107 [V112,T20] ( 10, 6 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V113 tmp108 [V113,T53] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V114 tmp109 [V114 ] ( 0, 0 ) ubyte -> zero-ref "field V04._format (fldOffset=0x0)" P-INDEP
-;* V115 tmp110 [V115 ] ( 0, 0 ) ubyte -> zero-ref "field V04._precision (fldOffset=0x1)" P-INDEP
-; V116 tmp111 [V116,T32] ( 2, 2 ) byref -> r14 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V117 tmp112 [V117,T54] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-;* V118 tmp113 [V118 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V119 tmp114 [V119 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V120 tmp115 [V120 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V121 tmp116 [V121 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V122 tmp117 [V122,T33] ( 2, 2 ) byref -> rsi "field V10._reference (fldOffset=0x0)" P-INDEP
-; V123 tmp118 [V123,T40] ( 2, 2 ) int -> rdx "field V10._length (fldOffset=0x8)" P-INDEP
-; V124 tmp119 [V124 ] ( 4, 5 ) ubyte -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V12._format (fldOffset=0x0)" P-DEP
-; V125 tmp120 [V125 ] ( 6, 6 ) ubyte -> [rbp-0x57] do-not-enreg[X] addr-exposed ptr "field V12._precision (fldOffset=0x1)" P-DEP
-; V126 tmp121 [V126,T49] ( 2, 1 ) byref -> rdx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp122 [V127,T55] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V128 tmp123 [V128,T50] ( 2, 1 ) byref -> rdx single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V129 tmp124 [V129,T56] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-;* V130 tmp125 [V130 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V21._reference (fldOffset=0x0)" P-INDEP
-;* V131 tmp126 [V131 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-;* V132 tmp127 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-;* V133 tmp128 [V133 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-;* V134 tmp129 [V134 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
-;* V135 tmp130 [V135 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
-;* V136 tmp131 [V136 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-;* V137 tmp132 [V137 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
-;* V138 tmp133 [V138 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
-;* V139 tmp134 [V139 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
-;* V140 tmp135 [V140 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V33._reference (fldOffset=0x0)" P-INDEP
-;* V141 tmp136 [V141 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
-;* V142 tmp137 [V142 ] ( 0, 0 ) long -> zero-ref ptr "field V38.Item1 (fldOffset=0x0)" P-INDEP
-;* V143 tmp138 [V143 ] ( 0, 0 ) long -> zero-ref ptr "field V38.Item2 (fldOffset=0x8)" P-INDEP
-;* V144 tmp139 [V144 ] ( 0, 0 ) long -> zero-ref ptr "field V40.Item1 (fldOffset=0x0)" P-INDEP
-; V145 tmp140 [V145,T16] ( 2, 8 ) long -> r9 "field V40.Item2 (fldOffset=0x8)" P-INDEP
-;* V146 tmp141 [V146 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V57._reference (fldOffset=0x0)" P-INDEP
-;* V147 tmp142 [V147 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
-;* V148 tmp143 [V148 ] ( 0, 0 ) byref -> zero-ref single-def "field V61._reference (fldOffset=0x0)" P-INDEP
-;* V149 tmp144 [V149 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
-;* V150 tmp145 [V150 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
-;* V151 tmp146 [V151 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
-;* V152 tmp147 [V152 ] ( 0, 0 ) byref -> zero-ref single-def "field V67._reference (fldOffset=0x0)" P-INDEP
-;* V153 tmp148 [V153 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
-;* V154 tmp149 [V154 ] ( 0, 0 ) byref -> zero-ref single-def "field V70._reference (fldOffset=0x0)" P-INDEP
-;* V155 tmp150 [V155 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP
-;* V156 tmp151 [V156 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V72._reference (fldOffset=0x0)" P-INDEP
-;* V157 tmp152 [V157 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
-;* V158 tmp153 [V158 ] ( 0, 0 ) long -> zero-ref ptr "field V77.Item1 (fldOffset=0x0)" P-INDEP
-;* V159 tmp154 [V159 ] ( 0, 0 ) long -> zero-ref ptr "field V77.Item2 (fldOffset=0x8)" P-INDEP
-;* V160 tmp155 [V160 ] ( 0, 0 ) long -> zero-ref ptr "field V79.Item1 (fldOffset=0x0)" P-INDEP
-; V161 tmp156 [V161,T17] ( 2, 8 ) long -> r9 "field V79.Item2 (fldOffset=0x8)" P-INDEP
-;* V162 tmp157 [V162 ] ( 0, 0 ) long -> zero-ref ptr "field V95.Item1 (fldOffset=0x0)" P-INDEP
-;* V163 tmp158 [V163 ] ( 0, 0 ) long -> zero-ref ptr "field V95.Item2 (fldOffset=0x8)" P-INDEP
-; V164 tmp159 [V164,T06] ( 2, 32 ) long -> rax "field V97.Item1 (fldOffset=0x0)" P-INDEP
-; V165 tmp160 [V165,T07] ( 2, 32 ) long -> rdx "field V97.Item2 (fldOffset=0x8)" P-INDEP
-;* V166 tmp161 [V166 ] ( 0, 0 ) long -> zero-ref ptr "field V100.Item1 (fldOffset=0x0)" P-INDEP
-; V167 tmp162 [V167,T18] ( 2, 8 ) long -> rdi "field V100.Item2 (fldOffset=0x8)" P-INDEP
-; V168 tmp163 [V168 ] ( 3, 5 ) byref -> [rbp-0x78] do-not-enreg[X] addr-exposed "field V111._reference (fldOffset=0x0)" P-DEP
-; V169 tmp164 [V169 ] ( 3, 5 ) int -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V111._length (fldOffset=0x8)" P-DEP
-; V170 tmp165 [V170,T41] ( 2, 2 ) struct ( 8) [rbp-0x80] do-not-enreg[S] "by-value struct argument" <System.Buffers.StandardFormat>
-; V171 tmp166 [V171,T42] ( 2, 2 ) long -> r12 "Cast away GC"
-; V172 tmp167 [V172,T43] ( 2, 2 ) long -> r8 "Cast away GC"
-; V173 GsCookie [V173 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V174 tmp169 [V174,T34] ( 2, 2 ) ref -> r15 single-def "shadowVar"
-; V175 tmp170 [V175,T19] ( 14, 7.50) long -> rbx "shadowVar"
-; V176 cse0 [V176,T24] ( 6, 4 ) int -> rdx "CSE #01: conservative"
-; V177 cse1 [V177,T27] ( 4, 3 ) int -> r13 "CSE #04: conservative"
-; V178 cse2 [V178,T26] ( 6, 3 ) int -> r13 multi-def "CSE #05: conservative"
+;* V108 tmp103 [V108 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
+;* V109 tmp104 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V110 tmp105 [V110,T05] ( 3, 6 ) int -> rdx "Inlining Arg"
+;* V111 tmp106 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V112 tmp107 [V112 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V113 tmp108 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V114 tmp109 [V114 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V115 tmp110 [V115 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
+;* V116 tmp111 [V116 ] ( 0, 0 ) int -> zero-ref ptr "Inlining Arg"
+; V117 tmp112 [V117,T09] ( 5, 3.50) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V118 tmp113 [V118,T20] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
+;* V119 tmp114 [V119 ] ( 0, 0 ) ubyte -> zero-ref "field V04._format (fldOffset=0x0)" P-INDEP
+;* V120 tmp115 [V120 ] ( 0, 0 ) ubyte -> zero-ref "field V04._precision (fldOffset=0x1)" P-INDEP
+; V121 tmp116 [V121,T11] ( 2, 2 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V122 tmp117 [V122,T21] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+;* V123 tmp118 [V123 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V124 tmp119 [V124 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+;* V125 tmp120 [V125 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V126 tmp121 [V126 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+;* V127 tmp122 [V127 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V128 tmp123 [V128 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
+;* V129 tmp124 [V129 ] ( 0, 0 ) ubyte -> zero-ref "field V12._format (fldOffset=0x0)" P-INDEP
+;* V130 tmp125 [V130 ] ( 0, 0 ) ubyte -> zero-ref "field V12._precision (fldOffset=0x1)" P-INDEP
+;* V131 tmp126 [V131 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
+;* V132 tmp127 [V132 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
+; V133 tmp128 [V133,T19] ( 2, 1 ) byref -> rdx single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+;* V134 tmp129 [V134,T22] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
+;* V135 tmp130 [V135 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V136 tmp131 [V136 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
+;* V137 tmp132 [V137 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+;* V138 tmp133 [V138 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
+;* V139 tmp134 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V140 tmp135 [V140 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
+;* V141 tmp136 [V141 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V142 tmp137 [V142 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+;* V143 tmp138 [V143 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V144 tmp139 [V144 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
+;* V145 tmp140 [V145 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V32._reference (fldOffset=0x0)" P-INDEP
+;* V146 tmp141 [V146 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
+;* V147 tmp142 [V147 ] ( 0, 0 ) long -> zero-ref ptr "field V37.Item1 (fldOffset=0x0)" P-INDEP
+;* V148 tmp143 [V148 ] ( 0, 0 ) long -> zero-ref ptr "field V37.Item2 (fldOffset=0x8)" P-INDEP
+;* V149 tmp144 [V149 ] ( 0, 0 ) long -> zero-ref ptr "field V39.Item1 (fldOffset=0x0)" P-INDEP
+; V150 tmp145 [V150,T04] ( 2, 8 ) long -> rsi "field V39.Item2 (fldOffset=0x8)" P-INDEP
+;* V151 tmp146 [V151 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
+;* V152 tmp147 [V152 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
+;* V153 tmp148 [V153 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP
+;* V154 tmp149 [V154 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP
+;* V155 tmp150 [V155 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP
+;* V156 tmp151 [V156 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
+;* V157 tmp152 [V157 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP
+;* V158 tmp153 [V158 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
+;* V159 tmp154 [V159 ] ( 0, 0 ) byref -> zero-ref "field V68._reference (fldOffset=0x0)" P-INDEP
+;* V160 tmp155 [V160 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP
+;* V161 tmp156 [V161 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP
+;* V162 tmp157 [V162 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP
+;* V163 tmp158 [V163 ] ( 0, 0 ) long -> zero-ref ptr "field V75.Item1 (fldOffset=0x0)" P-INDEP
+;* V164 tmp159 [V164 ] ( 0, 0 ) long -> zero-ref ptr "field V75.Item2 (fldOffset=0x8)" P-INDEP
+;* V165 tmp160 [V165 ] ( 0, 0 ) long -> zero-ref ptr "field V77.Item1 (fldOffset=0x0)" P-INDEP
+;* V166 tmp161 [V166 ] ( 0, 0 ) long -> zero-ref ptr "field V77.Item2 (fldOffset=0x8)" P-INDEP
+;* V167 tmp162 [V167 ] ( 0, 0 ) long -> zero-ref ptr "field V93.Item1 (fldOffset=0x0)" P-INDEP
+;* V168 tmp163 [V168 ] ( 0, 0 ) long -> zero-ref ptr "field V93.Item2 (fldOffset=0x8)" P-INDEP
+;* V169 tmp164 [V169 ] ( 0, 0 ) long -> zero-ref ptr "field V95.Item1 (fldOffset=0x0)" P-INDEP
+;* V170 tmp165 [V170 ] ( 0, 0 ) long -> zero-ref ptr "field V95.Item2 (fldOffset=0x8)" P-INDEP
+;* V171 tmp166 [V171 ] ( 0, 0 ) long -> zero-ref ptr "field V98.Item1 (fldOffset=0x0)" P-INDEP
+;* V172 tmp167 [V172 ] ( 0, 0 ) long -> zero-ref ptr "field V98.Item2 (fldOffset=0x8)" P-INDEP
+;* V173 tmp168 [V173 ] ( 0, 0 ) long -> zero-ref do-not-enreg[X] addr-exposed ptr "field V106.Item1 (fldOffset=0x0)" P-DEP
+;* V174 tmp169 [V174 ] ( 0, 0 ) long -> zero-ref do-not-enreg[X] addr-exposed ptr "field V106.Item2 (fldOffset=0x8)" P-DEP
+;* V175 tmp170 [V175 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V111._reference (fldOffset=0x0)" P-INDEP
+;* V176 tmp171 [V176 ] ( 0, 0 ) int -> zero-ref ptr "field V111._length (fldOffset=0x8)" P-INDEP
+;* V177 tmp172 [V177 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V113._reference (fldOffset=0x0)" P-INDEP
+;* V178 tmp173 [V178 ] ( 0, 0 ) int -> zero-ref ptr "field V113._length (fldOffset=0x8)" P-INDEP
+; V179 tmp174 [V179,T12] ( 2, 2 ) byref -> rsi single-def "field V114._reference (fldOffset=0x0)" P-INDEP
+; V180 tmp175 [V180,T15] ( 2, 2 ) int -> rdx "field V114._length (fldOffset=0x8)" P-INDEP
+; V181 tmp176 [V181,T16] ( 2, 2 ) long -> r8 "Cast away GC"
+; V182 GsCookie [V182 ] ( 1, 1 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V183 tmp178 [V183,T13] ( 2, 2 ) ref -> rbx single-def "shadowVar"
+; V184 tmp179 [V184,T08] ( 6, 4 ) long -> rsi "shadowVar"
;
-; Lcl frame size = 104
+; Lcl frame size = 64
G_M40771_IG01:
push rbp
push r15
- push r14
- push r13
- push r12
push rbx
- sub rsp, 104
- lea rbp, [rsp+0x90]
+ sub rsp, 64
+ lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x78], rax
- vxorps xmm8, xmm8, xmm8
- vmovdqa xmmword ptr [rbp-0x70], xmm8
- mov qword ptr [rbp-0x60], rax
- mov qword ptr [rbp-0x30], 0xD1FFAB1E
- ;; size=50 bbWeight=1 PerfScore 12.33
+ mov qword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0x18], 0xD1FFAB1E
+ ;; size=27 bbWeight=1 PerfScore 6.00
G_M40771_IG02:
- mov rbx, rsi
- mov r15, rdi
- lea r14, [rbp-0x48]
- mov word ptr [rbp-0x58], 0
- movzx r13, byte ptr [rbp-0x58]
- movzx rdx, byte ptr [rbp-0x57]
- mov r8d, r13d
- or r8d, edx
- je G_M40771_IG23
- ;; size=37 bbWeight=1 PerfScore 5.50
+ mov rbx, rdi
+ lea r15, [rbp-0x30]
+ test rsi, rsi
+ jl G_M40771_IG12
+ ;; size=16 bbWeight=1 PerfScore 2.00
G_M40771_IG03:
- mov r12d, r13d
- or r12d, 32
- cmp r12d, 103
- jle SHORT G_M40771_IG05
- cmp r12d, 110
- jne SHORT G_M40771_IG04
- movzx r8, word ptr [rbp-0x58]
- mov word ptr [rbp-0x80], r8w
- movzx r8, word ptr [rbp-0x80]
- mov rsi, r14
- mov edx, 20
- lea rcx, [rbp-0x50]
- mov rdi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.FormattingHelpers:TryFormat[long](long,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte
- call [rax]System.Buffers.Text.FormattingHelpers:TryFormat[long](long,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte
- jmp G_M40771_IG33
- ;; size=66 bbWeight=0.50 PerfScore 6.25
-G_M40771_IG04:
- cmp r12d, 114
- je SHORT G_M40771_IG06
- cmp r12d, 120
- jne G_M40771_IG38
- add r13d, -33
- movzx rsi, r13w
- xor ecx, ecx
- cmp edx, 255
- cmove edx, ecx
- mov rcx, r14
- mov r8d, 20
- lea r9, [rbp-0x50]
- mov rdi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Number:TryInt64ToHexStr[ubyte](long,ushort,int,System.Span`1[ubyte],byref):ubyte
- call [rax]System.Number:TryInt64ToHexStr[ubyte](long,ushort,int,System.Span`1[ubyte],byref):ubyte
- jmp G_M40771_IG33
- ;; size=68 bbWeight=0.50 PerfScore 5.12
-G_M40771_IG05:
- cmp r12d, 100
- je SHORT G_M40771_IG07
- cmp r12d, 103
- jne G_M40771_IG38
- ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M40771_IG06:
- lea rdi, [rbp-0x58]
- mov rax, 0xD1FFAB1E ; code for System.Buffers.StandardFormat:get_HasPrecision():ubyte:this
- call [rax]System.Buffers.StandardFormat:get_HasPrecision():ubyte:this
- test eax, eax
- jne G_M40771_IG37
- ;; size=24 bbWeight=0.50 PerfScore 2.50
-G_M40771_IG07:
- test rbx, rbx
- jl G_M40771_IG22
- movzx r13, byte ptr [rbp-0x57]
- xor eax, eax
- cmp r13d, 255
- cmove r13d, eax
- mov rax, rbx
+ mov rax, rsi
or rax, 1
lzcnt rax, rax
xor eax, 63
cdqe
mov rdx, 0xD1FFAB1E ; static handle
movzx rax, byte ptr [rax+rdx]
- mov edx, eax
- mov rdi, 0xD1FFAB1E ; static handle
- cmp rbx, qword ptr [rdi+8*rdx]
- setb dl
- movzx rdx, dl
- sub eax, edx
- cmp r13d, eax
- mov edx, eax
- cmovge edx, r13d
- cmp edx, 20
- jle SHORT G_M40771_IG08
- xor edx, edx
- mov dword ptr [rbp-0x50], edx
- jmp SHORT G_M40771_IG13
- ;; size=103 bbWeight=0.50 PerfScore 9.25
-G_M40771_IG08:
- mov dword ptr [rbp-0x50], edx
- mov bword ptr [rbp-0x68], r14
- mov r12, r14
- movsxd rdx, edx
- add r12, rdx
- cmp r13d, eax
- jle G_M40771_IG16
- mov rdi, rbx
- cmp rdi, 100
- jae SHORT G_M40771_IG15
- ;; size=34 bbWeight=0.50 PerfScore 2.75
-G_M40771_IG09:
- mov rax, rdi
- jmp SHORT G_M40771_IG11
- align [0 bytes for IG17]
- ;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M40771_IG10:
- dec r13d
- mov rdi, rax
- mov esi, 10
- mov rax, 0xD1FFAB1E ; code for System.Math:DivRem(ulong,ulong):System.ValueTuple`2[ulong,ulong]
- call [rax]System.Math:DivRem(ulong,ulong):System.ValueTuple`2[ulong,ulong]
- mov rdi, rax
- dec r12
- add edx, 48
- mov byte ptr [r12], dl
- mov rax, rdi
- ;; size=39 bbWeight=16 PerfScore 96.00
-G_M40771_IG11:
- test rax, rax
- jne SHORT G_M40771_IG10
- test r13d, r13d
- jg SHORT G_M40771_IG10
- ;; size=10 bbWeight=4 PerfScore 10.00
-G_M40771_IG12:
- xor r8d, r8d
- mov bword ptr [rbp-0x68], r8
- ;; size=7 bbWeight=0.50 PerfScore 0.62
-G_M40771_IG13:
- xor r8, r8
- mov bword ptr [rbp-0x68], r8
- jmp G_M40771_IG33
- ;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M40771_IG14:
- mov rdi, rax
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M40771_IG15:
- add r12, -2
- add r13d, -2
- mov rdx, 0xD1FFAB1E
- mov rax, rdi
- shr rax, 2
- mul rdx:rax, rdx
- shr rdx, 2
- imul rsi, rdx, 100
- sub rdi, rsi
- mov rax, rdx
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rsi]
- add edi, edi
- mov di, word ptr [rsi+rdi+0x10]
- mov word ptr [r12], di
- cmp rax, 100
- jae SHORT G_M40771_IG14
- jmp SHORT G_M40771_IG11
- ;; size=75 bbWeight=4 PerfScore 65.00
-G_M40771_IG16:
- mov r8, r12
- mov r9, rbx
- cmp r9, 10
- jb SHORT G_M40771_IG20
- jmp SHORT G_M40771_IG18
- ;; size=14 bbWeight=0.50 PerfScore 1.88
-G_M40771_IG17:
- add r8, -2
- mov rdx, 0xD1FFAB1E
- mov rax, r9
- shr rax, 2
- mul rdx:rax, rdx
- shr rdx, 2
- imul rcx, rdx, 100
- sub r9, rcx
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rcx]
- add r9d, r9d
- mov r9w, word ptr [rcx+r9+0x10]
- mov word ptr [r8], r9w
- mov r9, rdx
- ;; size=64 bbWeight=4 PerfScore 51.00
-G_M40771_IG18:
- cmp r9, 100
- jae SHORT G_M40771_IG17
- ;; size=6 bbWeight=4 PerfScore 5.00
-G_M40771_IG19:
- cmp r9, 10
- jae SHORT G_M40771_IG21
- ;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M40771_IG20:
- add r9d, 48
- mov byte ptr [r8-0x01], r9b
- jmp G_M40771_IG12
- align [0 bytes for IG25]
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M40771_IG21:
- add r8, -2
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rdx, gword ptr [rdx]
- add r9d, r9d
- mov r9w, word ptr [rdx+r9+0x10]
- mov word ptr [r8], r9w
- jmp G_M40771_IG12
- ;; size=35 bbWeight=0.50 PerfScore 3.88
-G_M40771_IG22:
- movzx r13, byte ptr [rbp-0x57]
- xor r8d, r8d
- cmp r13d, 255
- mov esi, r8d
- cmovne esi, r13d
mov rdx, 0xD1FFAB1E ; static handle
- lea r8, [rbp-0x50]
- mov qword ptr [rsp], r8
- mov r8, r14
- mov r9d, 20
- mov ecx, 1
- mov rdi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
- call [rax]System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
- jmp G_M40771_IG33
- ;; size=74 bbWeight=0.50 PerfScore 5.00
-G_M40771_IG23:
- test rbx, rbx
- jl G_M40771_IG32
- mov rax, rbx
- or rax, 1
- lzcnt rax, rax
- xor eax, 63
- cdqe
- mov rdx, 0xD1FFAB1E ; static handle
- movzx rax, byte ptr [rax+rdx]
- mov edx, eax
- mov r8, 0xD1FFAB1E ; static handle
- cmp rbx, qword ptr [r8+8*rdx]
+ cmp rsi, qword ptr [rdx+8*rax]
setb dl
movzx rdx, dl
sub eax, edx
cmp eax, 20
- jle SHORT G_M40771_IG24
+ jle SHORT G_M40771_IG04
xor eax, eax
- mov dword ptr [rbp-0x50], eax
- jmp G_M40771_IG31
- ;; size=79 bbWeight=0.50 PerfScore 8.00
-G_M40771_IG24:
- mov dword ptr [rbp-0x50], eax
- mov bword ptr [rbp-0x60], r14
- mov r8, r14
+ mov dword ptr [rbp-0x38], eax
+ jmp G_M40771_IG11
+ align [0 bytes for IG05]
+ ;; size=68 bbWeight=0.50 PerfScore 7.25
+G_M40771_IG04:
+ mov dword ptr [rbp-0x38], eax
+ mov bword ptr [rbp-0x40], r15
+ mov r8, r15
movsxd r9, eax
add r8, r9
- mov r9, rbx
- cmp r9, 10
- jb SHORT G_M40771_IG28
- jmp SHORT G_M40771_IG26
- ;; size=27 bbWeight=0.50 PerfScore 3.12
-G_M40771_IG25:
+ cmp rsi, 10
+ jb SHORT G_M40771_IG08
+ jmp SHORT G_M40771_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M40771_IG05:
add r8, -2
mov rdx, 0xD1FFAB1E
- mov rax, r9
+ mov rax, rsi
shr rax, 2
mul rdx:rax, rdx
shr rdx, 2
- imul rcx, rdx, 100
- sub r9, rcx
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rcx]
- add r9d, r9d
- mov r9w, word ptr [rcx+r9+0x10]
- mov word ptr [r8], r9w
+ imul r9, rdx, 100
+ sub rsi, r9
mov r9, rdx
- ;; size=64 bbWeight=4 PerfScore 51.00
-G_M40771_IG26:
- cmp r9, 100
- jae SHORT G_M40771_IG25
- ;; size=6 bbWeight=4 PerfScore 5.00
-G_M40771_IG27:
- cmp r9, 10
- jae SHORT G_M40771_IG29
- ;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M40771_IG28:
- dec r8
- add r9d, 48
- mov byte ptr [r8], r9b
- jmp SHORT G_M40771_IG30
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M40771_IG29:
- add r8, -2
mov rdx, 0xD1FFAB1E ; const ptr
mov rdx, gword ptr [rdx]
- add r9d, r9d
- mov r9w, word ptr [rdx+r9+0x10]
+ add esi, esi
+ mov ecx, esi
+ mov dx, word ptr [rdx+rcx+0x10]
+ mov word ptr [r8], dx
+ mov rsi, r9
+ ;; size=67 bbWeight=4 PerfScore 53.00
+G_M40771_IG06:
+ cmp rsi, 100
+ jae SHORT G_M40771_IG05
+ ;; size=6 bbWeight=4 PerfScore 5.00
+G_M40771_IG07:
+ cmp rsi, 10
+ jae SHORT G_M40771_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 0.62
+G_M40771_IG08:
+ dec r8
+ add esi, 48
+ mov byte ptr [r8], sil
+ jmp SHORT G_M40771_IG10
+ ;; size=11 bbWeight=0.50 PerfScore 1.75
+G_M40771_IG09:
+ add r8, -2
+ mov r9, 0xD1FFAB1E ; const ptr
+ mov r9, gword ptr [r9]
+ lea edx, [rsi+rsi]
+ mov r9w, word ptr [r9+rdx+0x10]
mov word ptr [r8], r9w
- ;; size=30 bbWeight=0.50 PerfScore 2.88
-G_M40771_IG30:
+ ;; size=30 bbWeight=0.50 PerfScore 3.00
+G_M40771_IG10:
xor r8d, r8d
- mov bword ptr [rbp-0x60], r8
+ mov bword ptr [rbp-0x40], r8
;; size=7 bbWeight=0.50 PerfScore 0.62
-G_M40771_IG31:
+G_M40771_IG11:
xor r8, r8
- mov bword ptr [rbp-0x60], r8
- jmp SHORT G_M40771_IG33
+ mov bword ptr [rbp-0x40], r8
+ jmp SHORT G_M40771_IG13
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M40771_IG32:
- xor r8d, r8d
- cmp edx, 255
- mov esi, r8d
- cmovne esi, edx
+G_M40771_IG12:
mov rdx, 0xD1FFAB1E ; static handle
- lea r8, [rbp-0x50]
+ lea r8, [rbp-0x38]
mov qword ptr [rsp], r8
- mov r8, r14
+ mov r8, r15
mov r9d, 20
mov ecx, 1
- mov rdi, rbx
+ mov rdi, rsi
+ xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
call [rax]System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
- ;; size=62 bbWeight=0.50 PerfScore 3.50
-G_M40771_IG33:
- mov edx, dword ptr [rbp-0x50]
+ ;; size=49 bbWeight=0.50 PerfScore 3.12
+G_M40771_IG13:
+ mov edx, dword ptr [rbp-0x38]
cmp edx, 20
- ja SHORT G_M40771_IG39
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x78], xmm0
- lea rdi, [rbp-0x78]
- mov rsi, r14
- mov rax, 0xD1FFAB1E ; code for System.Span`1[ubyte]:.ctor(byref,int):this
- call [rax]System.Span`1[ubyte]:.ctor(byref,int):this
- mov rdi, bword ptr [rbp-0x78]
- mov esi, dword ptr [rbp-0x70]
- mov rax, 0xD1FFAB1E ; code for System.Span`1[ubyte]:op_Implicit(System.Span`1[ubyte]):System.ReadOnlySpan`1[ubyte]
- call [rax]System.Span`1[ubyte]:op_Implicit(System.Span`1[ubyte]):System.ReadOnlySpan`1[ubyte]
- mov rsi, rax
- mov rdi, r15
+ ja SHORT G_M40771_IG17
+ mov rsi, r15
+ mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonWriter:WriteNumberValueAsStringUnescaped(System.ReadOnlySpan`1[ubyte]):this
call [rax]System.Text.Json.Utf8JsonWriter:WriteNumberValueAsStringUnescaped(System.ReadOnlySpan`1[ubyte]):this
- ;; size=73 bbWeight=1 PerfScore 16.58
-G_M40771_IG34:
- cmp qword ptr [rbp-0x30], 0xD1FFAB1E
- je SHORT G_M40771_IG35
+ ;; size=26 bbWeight=1 PerfScore 6.00
+G_M40771_IG14:
+ cmp qword ptr [rbp-0x18], 0xD1FFAB1E
+ je SHORT G_M40771_IG15
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
-G_M40771_IG35:
+G_M40771_IG15:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M40771_IG36:
- add rsp, 104
+G_M40771_IG16:
+ add rsp, 64
pop rbx
- pop r12
- pop r13
- pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M40771_IG37:
- mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Utf8Formatter:ThrowGWithPrecisionNotSupported()
- call [rax]System.Buffers.Text.Utf8Formatter:ThrowGWithPrecisionNotSupported()
- int3
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M40771_IG38:
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowFormatException_BadFormatSpecifier()
- call [rax]System.ThrowHelper:ThrowFormatException_BadFormatSpecifier()
- int3
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M40771_IG39:
+ ;; size=9 bbWeight=1 PerfScore 2.75
+G_M40771_IG17:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1206, prolog size 50, PerfScore 391.48, instruction count 304, allocated bytes for code 1206 (MethodHash=8f8360bc) for method System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
+; Total bytes of code 384, prolog size 27, PerfScore 100.00, instruction count 102, allocated bytes for code 384 (MethodHash=8f8360bc) for method System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/c61b133ab2b179cf6f0cf8e038133a4a |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 19 minutes 36 seconds.
dotnet/runtime#111024
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: