forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[X64] [xtqqczze] BinaryWriter perf improvements #345
Comments
Top method regressions154 (18.03 % of base) - System.IO.Compression.ZipArchiveEntry:WriteCrcAndSizesInLocalHeader(ubyte):this ; Assembly listing for method System.IO.Compression.ZipArchiveEntry:WriteCrcAndSizesInLocalHeader(ubyte):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; 12 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 77 single block inlinees; 31 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 30, 19.50) ref -> rbx this class-hnd single-def <System.IO.Compression.ZipArchiveEntry>
; V01 arg1 [V01,T07] ( 4, 3.50) ubyte -> r15 single-def
-; V02 loc0 [V02,T17] ( 2, 2 ) long -> r14
+; V02 loc0 [V02,T30] ( 2, 2 ) long -> r14
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.IO.BinaryWriter>
;* V04 loc2 [V04 ] ( 0, 0 ) ubyte -> zero-ref
; V05 loc3 [V05,T08] ( 4, 4 ) ubyte -> r13
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T00] ( 18, 23 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.IO.BinaryWriter>
-; V10 tmp2 [V10,T14] ( 3, 2 ) int -> rsi
-; V11 tmp3 [V11,T18] ( 3, 1.50) int -> [rbp-0x2C]
-; V12 tmp4 [V12,T15] ( 3, 2 ) int -> [rbp-0x30]
+; V10 tmp2 [V10,T27] ( 3, 2 ) int -> rsi
+; V11 tmp3 [V11,T39] ( 3, 1.50) int -> [rbp-0x2C]
+; V12 tmp4 [V12,T28] ( 3, 2 ) int -> [rbp-0x30]
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchive>
; V14 tmp6 [V14,T09] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.IO.Compression.ZipArchive>
; V15 tmp7 [V15,T02] ( 5, 10 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.IO.Stream>
-; V16 tmp8 [V16,T03] ( 4, 7 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "Inlining Arg" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V16 tmp8 [V16,T03] ( 4, 7 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "Inlining Arg" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref
;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-; V19 tmp11 [V19,T16] ( 3, 2 ) int -> rdi
-; V20 tmp12 [V20,T19] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V19 tmp11 [V19,T29] ( 3, 2 ) int -> rdi
+; V20 tmp12 [V20,T79] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
; V21 tmp13 [V21,T10] ( 4, 3 ) ubyte -> rdi "Inline return value spill temp"
;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchive>
-;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchive>
-;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchive>
-;* V25 tmp17 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchive>
-; V26 tmp18 [V26,T04] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V27 tmp19 [V27,T11] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V28 tmp20 [V28,T12] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V29 tmp21 [V29,T05] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V30 tmp22 [V30,T13] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V31 tmp23 [V31,T06] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V32 tmp24 [V32,T20] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref single-def
+; V24 tmp16 [V24,T31] ( 2, 2 ) ushort -> rsi "Inlining Arg"
+; V25 tmp17 [V25 ] ( 2, 2 ) ushort -> [rbp-0x34] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V26 tmp18 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V27 tmp19 [V27,T11] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V29 tmp21 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V30 tmp22 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V31 tmp23 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V32 tmp24 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V33 tmp25 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V34 tmp26 [V34 ] ( 0, 0 ) ref -> zero-ref single-def
+; V35 tmp27 [V35,T32] ( 2, 2 ) ushort -> rsi "Inlining Arg"
+; V36 tmp28 [V36 ] ( 2, 2 ) ushort -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V37 tmp29 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V38 tmp30 [V38,T12] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V39 tmp31 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V40 tmp32 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V41 tmp33 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V42 tmp34 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V43 tmp35 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V44 tmp36 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp37 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchive>
+;* V46 tmp38 [V46 ] ( 0, 0 ) ref -> zero-ref single-def
+; V47 tmp39 [V47,T33] ( 2, 2 ) int -> rsi "Inlining Arg"
+; V48 tmp40 [V48 ] ( 2, 2 ) int -> [rbp-0x3C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V49 tmp41 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V50 tmp42 [V50,T13] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V51 tmp43 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V52 tmp44 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V53 tmp45 [V53 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V54 tmp46 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V56 tmp48 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V57 tmp49 [V57 ] ( 0, 0 ) ref -> zero-ref single-def
+; V58 tmp50 [V58 ] ( 2, 2 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V59 tmp51 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V60 tmp52 [V60,T14] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V61 tmp53 [V61 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V62 tmp54 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V63 tmp55 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V64 tmp56 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V65 tmp57 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V66 tmp58 [V66 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V67 tmp59 [V67 ] ( 0, 0 ) ref -> zero-ref single-def
+; V68 tmp60 [V68 ] ( 2, 2 ) int -> [rbp-0x44] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V69 tmp61 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V70 tmp62 [V70,T15] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V71 tmp63 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V72 tmp64 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V73 tmp65 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V74 tmp66 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V75 tmp67 [V75 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V76 tmp68 [V76 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V77 tmp69 [V77 ] ( 0, 0 ) ref -> zero-ref single-def
+; V78 tmp70 [V78 ] ( 2, 2 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V79 tmp71 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V80 tmp72 [V80,T16] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V81 tmp73 [V81 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V82 tmp74 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V83 tmp75 [V83 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V84 tmp76 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V85 tmp77 [V85 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V86 tmp78 [V86 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V87 tmp79 [V87 ] ( 0, 0 ) ref -> zero-ref single-def
+; V88 tmp80 [V88 ] ( 2, 2 ) int -> [rbp-0x4C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V89 tmp81 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V90 tmp82 [V90,T17] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V91 tmp83 [V91 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V92 tmp84 [V92 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V93 tmp85 [V93 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V94 tmp86 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V95 tmp87 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V96 tmp88 [V96 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V97 tmp89 [V97 ] ( 0, 0 ) ref -> zero-ref single-def
+; V98 tmp90 [V98 ] ( 2, 2 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V99 tmp91 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V100 tmp92 [V100,T18] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V101 tmp93 [V101 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V102 tmp94 [V102 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V103 tmp95 [V103 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V104 tmp96 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V105 tmp97 [V105 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V106 tmp98 [V106 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V107 tmp99 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchive>
+;* V108 tmp100 [V108 ] ( 0, 0 ) ref -> zero-ref single-def
+; V109 tmp101 [V109,T34] ( 2, 2 ) long -> rsi "Inlining Arg"
+; V110 tmp102 [V110 ] ( 2, 2 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V111 tmp103 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ulong]>
+; V112 tmp104 [V112,T19] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V113 tmp105 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V114 tmp106 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V115 tmp107 [V115 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V116 tmp108 [V116 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V119 tmp111 [V119 ] ( 0, 0 ) ref -> zero-ref single-def
+; V120 tmp112 [V120,T35] ( 2, 2 ) long -> rsi "Inlining Arg"
+; V121 tmp113 [V121 ] ( 2, 2 ) long -> [rbp-0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V122 tmp114 [V122 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ulong]>
+; V123 tmp115 [V123,T20] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V124 tmp116 [V124 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V125 tmp117 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V126 tmp118 [V126 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V127 tmp119 [V127 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V128 tmp120 [V128 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V129 tmp121 [V129 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V130 tmp122 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchive>
+;* V131 tmp123 [V131 ] ( 0, 0 ) ref -> zero-ref single-def
+; V132 tmp124 [V132,T36] ( 2, 2 ) int -> rsi "Inlining Arg"
+; V133 tmp125 [V133 ] ( 2, 2 ) int -> [rbp-0x64] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V134 tmp126 [V134 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V135 tmp127 [V135,T21] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V136 tmp128 [V136 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V137 tmp129 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V138 tmp130 [V138 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V139 tmp131 [V139 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V140 tmp132 [V140 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V141 tmp133 [V141 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V142 tmp134 [V142 ] ( 0, 0 ) ref -> zero-ref single-def
+; V143 tmp135 [V143,T37] ( 2, 2 ) long -> rsi "Inlining Arg"
+; V144 tmp136 [V144 ] ( 2, 2 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V145 tmp137 [V145 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ulong]>
+; V146 tmp138 [V146,T22] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V147 tmp139 [V147 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V148 tmp140 [V148 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V149 tmp141 [V149 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V150 tmp142 [V150 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V151 tmp143 [V151 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V152 tmp144 [V152 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V153 tmp145 [V153 ] ( 0, 0 ) ref -> zero-ref single-def
+; V154 tmp146 [V154,T38] ( 2, 2 ) long -> rsi "Inlining Arg"
+; V155 tmp147 [V155 ] ( 2, 2 ) long -> [rbp-0x78] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V156 tmp148 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ulong]>
+; V157 tmp149 [V157,T23] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V158 tmp150 [V158 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V159 tmp151 [V159 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V160 tmp152 [V160 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V161 tmp153 [V161 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V162 tmp154 [V162 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V163 tmp155 [V163 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V164 tmp156 [V164,T40] ( 2, 1 ) byref -> rsi single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V165 tmp157 [V165 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
+;* V166 tmp158 [V166 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V167 tmp159 [V167 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+;* V168 tmp160 [V168 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+;* V169 tmp161 [V169 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
+; V170 tmp162 [V170,T41] ( 2, 1 ) byref -> rsi single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+;* V171 tmp163 [V171,T66] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
+;* V172 tmp164 [V172 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V173 tmp165 [V173 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
+; V174 tmp166 [V174,T42] ( 2, 1 ) byref -> rsi single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+;* V175 tmp167 [V175 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
+;* V176 tmp168 [V176 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V177 tmp169 [V177 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
+;* V178 tmp170 [V178 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V179 tmp171 [V179 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
+; V180 tmp172 [V180,T43] ( 2, 1 ) byref -> rsi single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V181 tmp173 [V181,T67] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
+;* V182 tmp174 [V182 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V183 tmp175 [V183 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+; V184 tmp176 [V184,T44] ( 2, 1 ) byref -> rsi single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+;* V185 tmp177 [V185 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
+;* V186 tmp178 [V186 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP
+;* V187 tmp179 [V187 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
+;* V188 tmp180 [V188 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+;* V189 tmp181 [V189 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
+; V190 tmp182 [V190,T45] ( 2, 1 ) byref -> rsi single-def "field V53._reference (fldOffset=0x0)" P-INDEP
+;* V191 tmp183 [V191,T68] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
+;* V192 tmp184 [V192 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+;* V193 tmp185 [V193 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
+; V194 tmp186 [V194,T46] ( 2, 1 ) byref -> rsi single-def "field V59._reference (fldOffset=0x0)" P-INDEP
+;* V195 tmp187 [V195 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP
+;* V196 tmp188 [V196 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
+;* V197 tmp189 [V197 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
+;* V198 tmp190 [V198 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V199 tmp191 [V199 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
+; V200 tmp192 [V200,T47] ( 2, 1 ) byref -> rsi single-def "field V63._reference (fldOffset=0x0)" P-INDEP
+;* V201 tmp193 [V201,T69] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
+;* V202 tmp194 [V202 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
+;* V203 tmp195 [V203 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
+; V204 tmp196 [V204,T48] ( 2, 1 ) byref -> rsi single-def "field V69._reference (fldOffset=0x0)" P-INDEP
+;* V205 tmp197 [V205 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP
+;* V206 tmp198 [V206 ] ( 0, 0 ) byref -> zero-ref "field V71._reference (fldOffset=0x0)" P-INDEP
+;* V207 tmp199 [V207 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP
+;* V208 tmp200 [V208 ] ( 0, 0 ) byref -> zero-ref single-def "field V72._reference (fldOffset=0x0)" P-INDEP
+;* V209 tmp201 [V209 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
+; V210 tmp202 [V210,T49] ( 2, 1 ) byref -> rsi single-def "field V73._reference (fldOffset=0x0)" P-INDEP
+;* V211 tmp203 [V211,T70] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
+;* V212 tmp204 [V212 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP
+;* V213 tmp205 [V213 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
+; V214 tmp206 [V214,T50] ( 2, 1 ) byref -> rsi single-def "field V79._reference (fldOffset=0x0)" P-INDEP
+;* V215 tmp207 [V215 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
+;* V216 tmp208 [V216 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP
+;* V217 tmp209 [V217 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-INDEP
+;* V218 tmp210 [V218 ] ( 0, 0 ) byref -> zero-ref single-def "field V82._reference (fldOffset=0x0)" P-INDEP
+;* V219 tmp211 [V219 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
+; V220 tmp212 [V220,T51] ( 2, 1 ) byref -> rsi single-def "field V83._reference (fldOffset=0x0)" P-INDEP
+;* V221 tmp213 [V221,T71] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP
+;* V222 tmp214 [V222 ] ( 0, 0 ) byref -> zero-ref single-def "field V84._reference (fldOffset=0x0)" P-INDEP
+;* V223 tmp215 [V223 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
+; V224 tmp216 [V224,T52] ( 2, 1 ) byref -> rsi single-def "field V89._reference (fldOffset=0x0)" P-INDEP
+;* V225 tmp217 [V225 ] ( 0, 0 ) int -> zero-ref "field V89._length (fldOffset=0x8)" P-INDEP
+;* V226 tmp218 [V226 ] ( 0, 0 ) byref -> zero-ref "field V91._reference (fldOffset=0x0)" P-INDEP
+;* V227 tmp219 [V227 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
+;* V228 tmp220 [V228 ] ( 0, 0 ) byref -> zero-ref single-def "field V92._reference (fldOffset=0x0)" P-INDEP
+;* V229 tmp221 [V229 ] ( 0, 0 ) int -> zero-ref "field V92._length (fldOffset=0x8)" P-INDEP
+; V230 tmp222 [V230,T53] ( 2, 1 ) byref -> rsi single-def "field V93._reference (fldOffset=0x0)" P-INDEP
+;* V231 tmp223 [V231,T72] ( 0, 0 ) int -> zero-ref "field V93._length (fldOffset=0x8)" P-INDEP
+;* V232 tmp224 [V232 ] ( 0, 0 ) byref -> zero-ref single-def "field V94._reference (fldOffset=0x0)" P-INDEP
+;* V233 tmp225 [V233 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP
+; V234 tmp226 [V234,T54] ( 2, 1 ) byref -> rsi single-def "field V99._reference (fldOffset=0x0)" P-INDEP
+;* V235 tmp227 [V235 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP
+;* V236 tmp228 [V236 ] ( 0, 0 ) byref -> zero-ref "field V101._reference (fldOffset=0x0)" P-INDEP
+;* V237 tmp229 [V237 ] ( 0, 0 ) int -> zero-ref "field V101._length (fldOffset=0x8)" P-INDEP
+;* V238 tmp230 [V238 ] ( 0, 0 ) byref -> zero-ref single-def "field V102._reference (fldOffset=0x0)" P-INDEP
+;* V239 tmp231 [V239 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP
+; V240 tmp232 [V240,T55] ( 2, 1 ) byref -> rsi single-def "field V103._reference (fldOffset=0x0)" P-INDEP
+;* V241 tmp233 [V241,T73] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP
+;* V242 tmp234 [V242 ] ( 0, 0 ) byref -> zero-ref single-def "field V104._reference (fldOffset=0x0)" P-INDEP
+;* V243 tmp235 [V243 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP
+; V244 tmp236 [V244,T56] ( 2, 1 ) byref -> rsi single-def "field V111._reference (fldOffset=0x0)" P-INDEP
+;* V245 tmp237 [V245 ] ( 0, 0 ) int -> zero-ref "field V111._length (fldOffset=0x8)" P-INDEP
+;* V246 tmp238 [V246 ] ( 0, 0 ) byref -> zero-ref "field V113._reference (fldOffset=0x0)" P-INDEP
+;* V247 tmp239 [V247 ] ( 0, 0 ) int -> zero-ref "field V113._length (fldOffset=0x8)" P-INDEP
+;* V248 tmp240 [V248 ] ( 0, 0 ) byref -> zero-ref single-def "field V114._reference (fldOffset=0x0)" P-INDEP
+;* V249 tmp241 [V249 ] ( 0, 0 ) int -> zero-ref "field V114._length (fldOffset=0x8)" P-INDEP
+; V250 tmp242 [V250,T57] ( 2, 1 ) byref -> rsi single-def "field V115._reference (fldOffset=0x0)" P-INDEP
+;* V251 tmp243 [V251,T74] ( 0, 0 ) int -> zero-ref "field V115._length (fldOffset=0x8)" P-INDEP
+;* V252 tmp244 [V252 ] ( 0, 0 ) byref -> zero-ref single-def "field V116._reference (fldOffset=0x0)" P-INDEP
+;* V253 tmp245 [V253 ] ( 0, 0 ) int -> zero-ref "field V116._length (fldOffset=0x8)" P-INDEP
+; V254 tmp246 [V254,T58] ( 2, 1 ) byref -> rsi single-def "field V122._reference (fldOffset=0x0)" P-INDEP
+;* V255 tmp247 [V255 ] ( 0, 0 ) int -> zero-ref "field V122._length (fldOffset=0x8)" P-INDEP
+;* V256 tmp248 [V256 ] ( 0, 0 ) byref -> zero-ref "field V124._reference (fldOffset=0x0)" P-INDEP
+;* V257 tmp249 [V257 ] ( 0, 0 ) int -> zero-ref "field V124._length (fldOffset=0x8)" P-INDEP
+;* V258 tmp250 [V258 ] ( 0, 0 ) byref -> zero-ref single-def "field V125._reference (fldOffset=0x0)" P-INDEP
+;* V259 tmp251 [V259 ] ( 0, 0 ) int -> zero-ref "field V125._length (fldOffset=0x8)" P-INDEP
+; V260 tmp252 [V260,T59] ( 2, 1 ) byref -> rsi single-def "field V126._reference (fldOffset=0x0)" P-INDEP
+;* V261 tmp253 [V261,T75] ( 0, 0 ) int -> zero-ref "field V126._length (fldOffset=0x8)" P-INDEP
+;* V262 tmp254 [V262 ] ( 0, 0 ) byref -> zero-ref single-def "field V127._reference (fldOffset=0x0)" P-INDEP
+;* V263 tmp255 [V263 ] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0x8)" P-INDEP
+; V264 tmp256 [V264,T60] ( 2, 1 ) byref -> rsi single-def "field V134._reference (fldOffset=0x0)" P-INDEP
+;* V265 tmp257 [V265 ] ( 0, 0 ) int -> zero-ref "field V134._length (fldOffset=0x8)" P-INDEP
+;* V266 tmp258 [V266 ] ( 0, 0 ) byref -> zero-ref "field V136._reference (fldOffset=0x0)" P-INDEP
+;* V267 tmp259 [V267 ] ( 0, 0 ) int -> zero-ref "field V136._length (fldOffset=0x8)" P-INDEP
+;* V268 tmp260 [V268 ] ( 0, 0 ) byref -> zero-ref single-def "field V137._reference (fldOffset=0x0)" P-INDEP
+;* V269 tmp261 [V269 ] ( 0, 0 ) int -> zero-ref "field V137._length (fldOffset=0x8)" P-INDEP
+; V270 tmp262 [V270,T61] ( 2, 1 ) byref -> rsi single-def "field V138._reference (fldOffset=0x0)" P-INDEP
+;* V271 tmp263 [V271,T76] ( 0, 0 ) int -> zero-ref "field V138._length (fldOffset=0x8)" P-INDEP
+;* V272 tmp264 [V272 ] ( 0, 0 ) byref -> zero-ref single-def "field V139._reference (fldOffset=0x0)" P-INDEP
+;* V273 tmp265 [V273 ] ( 0, 0 ) int -> zero-ref "field V139._length (fldOffset=0x8)" P-INDEP
+; V274 tmp266 [V274,T62] ( 2, 1 ) byref -> rsi single-def "field V145._reference (fldOffset=0x0)" P-INDEP
+;* V275 tmp267 [V275 ] ( 0, 0 ) int -> zero-ref "field V145._length (fldOffset=0x8)" P-INDEP
+;* V276 tmp268 [V276 ] ( 0, 0 ) byref -> zero-ref "field V147._reference (fldOffset=0x0)" P-INDEP
+;* V277 tmp269 [V277 ] ( 0, 0 ) int -> zero-ref "field V147._length (fldOffset=0x8)" P-INDEP
+;* V278 tmp270 [V278 ] ( 0, 0 ) byref -> zero-ref single-def "field V148._reference (fldOffset=0x0)" P-INDEP
+;* V279 tmp271 [V279 ] ( 0, 0 ) int -> zero-ref "field V148._length (fldOffset=0x8)" P-INDEP
+; V280 tmp272 [V280,T63] ( 2, 1 ) byref -> rsi single-def "field V149._reference (fldOffset=0x0)" P-INDEP
+;* V281 tmp273 [V281,T77] ( 0, 0 ) int -> zero-ref "field V149._length (fldOffset=0x8)" P-INDEP
+;* V282 tmp274 [V282 ] ( 0, 0 ) byref -> zero-ref single-def "field V150._reference (fldOffset=0x0)" P-INDEP
+;* V283 tmp275 [V283 ] ( 0, 0 ) int -> zero-ref "field V150._length (fldOffset=0x8)" P-INDEP
+; V284 tmp276 [V284,T64] ( 2, 1 ) byref -> rsi single-def "field V156._reference (fldOffset=0x0)" P-INDEP
+;* V285 tmp277 [V285 ] ( 0, 0 ) int -> zero-ref "field V156._length (fldOffset=0x8)" P-INDEP
+;* V286 tmp278 [V286 ] ( 0, 0 ) byref -> zero-ref "field V158._reference (fldOffset=0x0)" P-INDEP
+;* V287 tmp279 [V287 ] ( 0, 0 ) int -> zero-ref "field V158._length (fldOffset=0x8)" P-INDEP
+;* V288 tmp280 [V288 ] ( 0, 0 ) byref -> zero-ref single-def "field V159._reference (fldOffset=0x0)" P-INDEP
+;* V289 tmp281 [V289 ] ( 0, 0 ) int -> zero-ref "field V159._length (fldOffset=0x8)" P-INDEP
+; V290 tmp282 [V290,T65] ( 2, 1 ) byref -> rsi single-def "field V160._reference (fldOffset=0x0)" P-INDEP
+;* V291 tmp283 [V291,T78] ( 0, 0 ) int -> zero-ref "field V160._length (fldOffset=0x8)" P-INDEP
+;* V292 tmp284 [V292 ] ( 0, 0 ) byref -> zero-ref single-def "field V161._reference (fldOffset=0x0)" P-INDEP
+;* V293 tmp285 [V293 ] ( 0, 0 ) int -> zero-ref "field V161._length (fldOffset=0x8)" P-INDEP
+; V294 tmp286 [V294,T04] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V295 tmp287 [V295,T24] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V296 tmp288 [V296,T25] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V297 tmp289 [V297,T05] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V298 tmp290 [V298,T26] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V299 tmp291 [V299,T06] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V300 tmp292 [V300,T80] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 24
+; Lcl frame size = 88
G_M24499_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ sub rsp, 88
+ lea rbp, [rsp+0x80]
mov rbx, rdi
mov r15d, esi
- ;; size=25 bbWeight=1 PerfScore 7.25
+ ;; size=28 bbWeight=1 PerfScore 7.25
G_M24499_IG02:
mov rdi, gword ptr [rbx+0x08]
mov rdi, gword ptr [rdi+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x10]System.IO.Stream:get_Position():long:this
mov r14, rax
mov r13, gword ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; System.IO.BinaryWriter
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov r13, gword ptr [r13+0x08]
mov rdi, 0xD1FFAB1E ; const ptr
mov rax, gword ptr [rdi]
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x80], rax
test r13, r13
je G_M24499_IG31
mov rdi, r13
mov rcx, qword ptr [r13]
mov rcx, qword ptr [rcx+0x40]
call [rcx+0x30]System.IO.Stream:get_CanWrite():ubyte:this
test eax, eax
je G_M24499_IG32
lea rdi, bword ptr [r12+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x10]
- mov rsi, gword ptr [rbp-0x38]
+ mov rsi, gword ptr [rbp-0x80]
call CORINFO_HELP_ASSIGN_REF
mov byte ptr [r12+0x18], 0
- mov r13, gword ptr [rbp-0x38]
+ mov r13, gword ptr [rbp-0x80]
cmp dword ptr [r13+0x20], 0xFDE9
jne SHORT G_M24499_IG04
;; size=142 bbWeight=1 PerfScore 40.00
G_M24499_IG03:
mov rdi, gword ptr [r13+0x10]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
xor edi, edi
cmp eax, 1
setle dil
jmp SHORT G_M24499_IG05
;; size=25 bbWeight=0.50 PerfScore 6.25
G_M24499_IG04:
xor edi, edi
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M24499_IG05:
mov byte ptr [r12+0x19], dil
mov edi, 0xD1FFAB1E
cmp qword ptr [rbx+0x50], rdi
jg SHORT G_M24499_IG07
;; size=16 bbWeight=1 PerfScore 5.25
G_M24499_IG06:
mov edi, 0xD1FFAB1E
cmp qword ptr [rbx+0x58], rdi
setg dil
movzx rdi, dil
jmp SHORT G_M24499_IG08
;; size=19 bbWeight=0.50 PerfScore 3.25
G_M24499_IG07:
mov edi, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M24499_IG08:
test edi, edi
je SHORT G_M24499_IG10
;; size=4 bbWeight=1 PerfScore 1.25
G_M24499_IG09:
xor esi, esi
test r15b, r15b
sete sil
jmp SHORT G_M24499_IG11
;; size=11 bbWeight=0.50 PerfScore 1.75
G_M24499_IG10:
xor esi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M24499_IG11:
movzx r13, sil
test edi, edi
jne SHORT G_M24499_IG13
;; size=8 bbWeight=1 PerfScore 1.50
G_M24499_IG12:
mov eax, dword ptr [rbx+0x50]
jmp SHORT G_M24499_IG14
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M24499_IG13:
mov dword ptr [rbp-0x2C], -1
jmp SHORT G_M24499_IG15
;; size=9 bbWeight=0.50 PerfScore 1.50
G_M24499_IG14:
mov ecx, dword ptr [rbx+0x58]
jmp SHORT G_M24499_IG16
;; size=5 bbWeight=1 PerfScore 4.00
G_M24499_IG15:
mov dword ptr [rbp-0x30], -1
mov eax, dword ptr [rbp-0x2C]
mov ecx, dword ptr [rbp-0x30]
;; size=13 bbWeight=0.50 PerfScore 1.50
G_M24499_IG16:
test r13d, r13d
je G_M24499_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M24499_IG17:
cmp word ptr [rbx+0x76], 45
jae SHORT G_M24499_IG18
mov word ptr [rbx+0x76], 45
;; size=13 bbWeight=0.50 PerfScore 2.50
G_M24499_IG18:
cmp word ptr [rbx+0x74], 45
jae G_M24499_IG22
mov word ptr [rbx+0x74], 45
mov dword ptr [rbp-0x30], ecx
mov dword ptr [rbp-0x2C], eax
;; size=23 bbWeight=0.50 PerfScore 3.50
G_M24499_IG19:
or word ptr [rbx+0x78], 8
mov rdi, gword ptr [rbx+0x08]
mov rdi, gword ptr [rdi+0x08]
mov rsi, qword ptr [rbx+0x60]
add rsi, 4
xor edx, edx
mov r8, qword ptr [rdi]
mov r8, qword ptr [r8+0x60]
call [r8+0x08]System.IO.Stream:Seek(long,int):long:this
movzx rsi, word ptr [rbx+0x76]
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(ushort):this
- call [rax]System.IO.BinaryWriter:Write(ushort):this
+ mov word ptr [rbp-0x34], si
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x34]
+ mov edx, 2
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
movzx rsi, word ptr [rbx+0x78]
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(ushort):this
- call [rax]System.IO.BinaryWriter:Write(ushort):this
- ;; size=72 bbWeight=0.50 PerfScore 13.75
+ mov word ptr [rbp-0x38], si
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x38]
+ mov edx, 2
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
+ ;; size=98 bbWeight=0.50 PerfScore 21.00
G_M24499_IG20:
mov rdi, gword ptr [rbx+0x08]
mov rdi, gword ptr [rdi+0x08]
mov rsi, qword ptr [rbx+0x60]
add rsi, 14
xor edx, edx
mov r8, qword ptr [rdi]
mov r8, qword ptr [r8+0x60]
call [r8+0x08]System.IO.Stream:Seek(long,int):long:this
test r13d, r13d
jne SHORT G_M24499_IG24
;; size=34 bbWeight=1 PerfScore 14.75
G_M24499_IG21:
mov esi, dword ptr [rbx+0x6C]
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this
- call [rax]System.IO.BinaryWriter:Write(uint):this
- mov rdi, r12
+ mov dword ptr [rbp-0x3C], esi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x3C]
+ mov edx, 4
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
mov esi, dword ptr [rbp-0x2C]
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this
- call [rax]System.IO.BinaryWriter:Write(uint):this
- mov rdi, r12
+ mov dword ptr [rbp-0x40], esi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x40]
+ mov edx, 4
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
mov esi, dword ptr [rbp-0x30]
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this
- call [rax]System.IO.BinaryWriter:Write(uint):this
+ mov dword ptr [rbp-0x44], esi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x44]
+ mov edx, 4
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
jmp SHORT G_M24499_IG25
- ;; size=56 bbWeight=0.50 PerfScore 8.25
+ ;; size=92 bbWeight=0.50 PerfScore 19.12
G_M24499_IG22:
mov dword ptr [rbp-0x30], ecx
mov dword ptr [rbp-0x2C], eax
jmp G_M24499_IG19
;; size=11 bbWeight=0.25 PerfScore 1.00
G_M24499_IG23:
mov dword ptr [rbp-0x30], ecx
mov dword ptr [rbp-0x2C], eax
- jmp SHORT G_M24499_IG20
- ;; size=8 bbWeight=0.50 PerfScore 2.00
+ jmp G_M24499_IG20
+ ;; size=11 bbWeight=0.50 PerfScore 2.00
G_M24499_IG24:
- mov rdi, r12
xor esi, esi
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this
- call [rax]System.IO.BinaryWriter:Write(uint):this
- mov rdi, r12
+ mov dword ptr [rbp-0x48], esi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x48]
+ mov edx, 4
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
xor esi, esi
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this
- call [rax]System.IO.BinaryWriter:Write(uint):this
- mov rdi, r12
+ mov dword ptr [rbp-0x4C], esi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x4C]
+ mov edx, 4
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
xor esi, esi
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this
- call [rax]System.IO.BinaryWriter:Write(uint):this
- ;; size=51 bbWeight=0.50 PerfScore 5.62
+ mov dword ptr [rbp-0x50], esi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x50]
+ mov edx, 4
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
+ ;; size=87 bbWeight=0.50 PerfScore 16.50
G_M24499_IG25:
test r15b, r15b
je SHORT G_M24499_IG27
;; size=5 bbWeight=1 PerfScore 1.25
G_M24499_IG26:
mov rdi, gword ptr [rbx+0x08]
mov rdi, gword ptr [rdi+0x08]
mov rsi, qword ptr [rbx+0x60]
mov rdx, gword ptr [rbx+0x30]
mov edx, dword ptr [rdx+0x08]
lea rsi, [rsi+rdx+0x22]
xor edx, edx
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.IO.Stream:Seek(long,int):long:this
mov rsi, qword ptr [rbx+0x58]
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(long):this
- call [rax]System.IO.BinaryWriter:Write(long):this
+ mov qword ptr [rbp-0x58], rsi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x58]
+ mov edx, 8
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
mov rsi, qword ptr [rbx+0x50]
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(long):this
- call [rax]System.IO.BinaryWriter:Write(long):this
- ;; size=74 bbWeight=0.50 PerfScore 14.62
+ mov qword ptr [rbp-0x60], rsi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x60]
+ mov edx, 8
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
+ ;; size=100 bbWeight=0.50 PerfScore 21.88
G_M24499_IG27:
mov rdi, gword ptr [rbx+0x08]
mov rdi, gword ptr [rdi+0x08]
mov rsi, r14
xor edx, edx
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.IO.Stream:Seek(long,int):long:this
test r13d, r13d
- je SHORT G_M24499_IG30
+ je SHORT G_M24499_IG29
;; size=28 bbWeight=1 PerfScore 12.75
G_M24499_IG28:
mov esi, dword ptr [rbx+0x6C]
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this
- call [rax]System.IO.BinaryWriter:Write(uint):this
+ mov dword ptr [rbp-0x64], esi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x64]
+ mov edx, 4
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
mov rsi, qword ptr [rbx+0x50]
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(long):this
- call [rax]System.IO.BinaryWriter:Write(long):this
+ mov qword ptr [rbp-0x70], rsi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x70]
+ mov edx, 8
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
mov rsi, qword ptr [rbx+0x58]
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(long):this
- ;; size=54 bbWeight=0.50 PerfScore 6.75
+ mov qword ptr [rbp-0x78], rsi
+ mov rdi, gword ptr [r12+0x08]
+ lea rsi, bword ptr [rbp-0x78]
+ mov edx, 8
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x60]
+ call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
+ ;; size=94 bbWeight=0.50 PerfScore 19.12
G_M24499_IG29:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- tail.jmp [rax]System.IO.BinaryWriter:Write(long):this
- ;; size=17 bbWeight=0.50 PerfScore 2.62
+ nop
+ ;; size=1 bbWeight=1 PerfScore 0.25
G_M24499_IG30:
- add rsp, 24
+ add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=15 bbWeight=1 PerfScore 4.25
G_M24499_IG31:
mov edi, 0x1451C
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M24499_IG32:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_StreamNotWritable():System.String
call [rax]System.SR:get_Argument_StreamNotWritable():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this
call [rax]System.ArgumentException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
-; Total bytes of code 854, prolog size 19, PerfScore 168.62, instruction count 223, allocated bytes for code 854 (MethodHash=9116a04c) for method System.IO.Compression.ZipArchiveEntry:WriteCrcAndSizesInLocalHeader(ubyte):this (FullOpts)
+; Total bytes of code 1008, prolog size 22, PerfScore 217.00, instruction count 269, allocated bytes for code 1008 (MethodHash=9116a04c) for method System.IO.Compression.ZipArchiveEntry:WriteCrcAndSizesInLocalHeader(ubyte):this (FullOpts) Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/abf443125332afa310225fae2001857c |
Top method improvements-29 (-39.73 % of base) - System.IO.BinaryWriter:Write(short):this ; Assembly listing for method System.IO.BinaryWriter:Write(short):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; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.BinaryWriter>
; V01 arg1 [V01,T02] ( 3, 3 ) short -> rsi single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V07 tmp3 [V07,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
-;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V09 tmp5 [V09,T03] ( 2, 4 ) short -> rsi ld-addr-op "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V20 tmp16 [V20,T04] ( 3, 3 ) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V30 tmp26 [V30,T05] ( 2, 2 ) byref -> rsi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp27 [V31,T07] ( 0, 0 ) int -> zero-ref ptr "field V13._length (fldOffset=0x8)" P-INDEP
-; V32 GsCookie [V32 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V33 tmp29 [V33,T06] ( 2, 2 ) ref -> rdi single-def "shadowVar"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
+; V04 tmp2 [V04 ] ( 2, 4 ) ushort -> [rbp-0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V06 tmp4 [V06,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V13 tmp11 [V13,T03] ( 2, 2 ) byref -> rsi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V15 tmp13 [V15 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V19 tmp17 [V19,T04] ( 2, 2 ) byref -> rsi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V20 tmp18 [V20,T05] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M12625_IG01:
push rbp
sub rsp, 16
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], 0xD1FFAB1E
- ;; size=18 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M12625_IG02:
- lea rdx, [rbp-0x10]
- movsx rsi, si
- mov word ptr [rdx], si
+ mov word ptr [rbp-0x04], si
mov rdi, gword ptr [rdi+0x08]
- mov rsi, rdx
+ lea rsi, bword ptr [rbp-0x04]
mov edx, 2
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
- cmp qword ptr [rbp-0x08], 0xD1FFAB1E
- je SHORT G_M12625_IG03
- call CORINFO_HELP_FAIL_FAST
- ;; size=48 bbWeight=1 PerfScore 15.25
-G_M12625_IG03:
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M12625_IG04:
+ ;; size=28 bbWeight=1 PerfScore 11.00
+G_M12625_IG03:
add rsp, 16
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 73, prolog size 18, PerfScore 20.00, instruction count 20, allocated bytes for code 73 (MethodHash=ac0aceae) for method System.IO.BinaryWriter:Write(short):this (FullOpts)
+; Total bytes of code 44, prolog size 10, PerfScore 14.50, instruction count 14, allocated bytes for code 44 (MethodHash=ac0aceae) for method System.IO.BinaryWriter:Write(short):this (FullOpts) -29 (-39.73 % of base) - System.IO.BinaryWriter:Write(System.Half):this ; Assembly listing for method System.IO.BinaryWriter:Write(System.Half):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; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.BinaryWriter>
-; V01 arg1 [V01,T02] ( 3, 3 ) struct ( 8) [rbp-0x18] do-not-enreg[SF] single-def <System.Half>
-;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V07 tmp3 [V07,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
-;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Half>
-;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V20 tmp16 [V20,T03] ( 3, 3 ) byref -> rsi single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) ushort -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP
-;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T04] ( 2, 2 ) byref -> rsi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp28 [V32,T06] ( 0, 0 ) int -> zero-ref ptr "field V13._length (fldOffset=0x8)" P-INDEP
-; V33 GsCookie [V33 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V34 tmp30 [V34,T05] ( 2, 2 ) ref -> rdi single-def "shadowVar"
+;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Half>
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03 ] ( 2, 4 ) struct ( 8) [rbp-0x08] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Half>
+;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Half]>
+; V05 tmp3 [V05,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Half]>
+;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Half]>
+;* V10 tmp8 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V12 tmp10 [V12,T02] ( 2, 2 ) ushort -> rsi single-def "field V01._value (fldOffset=0x0)" P-INDEP
+; V13 tmp11 [V13 ] ( 2, 3 ) ushort -> [rbp-0x08] do-not-enreg[X] addr-exposed "field V03._value (fldOffset=0x0)" P-DEP
+; V14 tmp12 [V14,T03] ( 2, 2 ) byref -> rsi single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+;* V15 tmp13 [V15 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp14 [V16 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+;* V18 tmp16 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V20 tmp18 [V20,T04] ( 2, 2 ) byref -> rsi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V21 tmp19 [V21,T05] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M38475_IG01:
push rbp
- sub rsp, 32
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x08], 0xD1FFAB1E
- mov dword ptr [rbp-0x18], esi
- ;; size=21 bbWeight=1 PerfScore 3.75
+ sub rsp, 16
+ lea rbp, [rsp+0x10]
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M38475_IG02:
- lea rsi, [rbp-0x10]
- movzx rdx, word ptr [rbp-0x18]
- mov word ptr [rsi], dx
+ mov word ptr [rbp-0x08], si
mov rdi, gword ptr [rdi+0x08]
+ lea rsi, bword ptr [rbp-0x08]
mov edx, 2
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
- cmp qword ptr [rbp-0x08], 0xD1FFAB1E
- je SHORT G_M38475_IG03
- call CORINFO_HELP_FAIL_FAST
- ;; size=45 bbWeight=1 PerfScore 15.75
-G_M38475_IG03:
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M38475_IG04:
- add rsp, 32
+ ;; size=28 bbWeight=1 PerfScore 11.00
+G_M38475_IG03:
+ add rsp, 16
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 73, prolog size 18, PerfScore 21.50, instruction count 20, allocated bytes for code 73 (MethodHash=65c269b4) for method System.IO.BinaryWriter:Write(System.Half):this (FullOpts)
+; Total bytes of code 44, prolog size 10, PerfScore 14.50, instruction count 14, allocated bytes for code 44 (MethodHash=65c269b4) for method System.IO.BinaryWriter:Write(System.Half):this (FullOpts) -25 (-36.76 % of base) - System.IO.BinaryWriter:Write(int):this ; Assembly listing for method System.IO.BinaryWriter:Write(int):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; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.BinaryWriter>
; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V07 tmp3 [V07,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
-;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V20 tmp16 [V20,T03] ( 3, 3 ) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V30 tmp26 [V30,T04] ( 2, 2 ) byref -> rsi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp27 [V31,T06] ( 0, 0 ) int -> zero-ref ptr "field V13._length (fldOffset=0x8)" P-INDEP
-; V32 GsCookie [V32 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V33 tmp29 [V33,T05] ( 2, 2 ) ref -> rdi single-def "shadowVar"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
+; V04 tmp2 [V04 ] ( 2, 4 ) int -> [rbp-0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V06 tmp4 [V06,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V13 tmp11 [V13,T03] ( 2, 2 ) byref -> rsi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V15 tmp13 [V15 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V19 tmp17 [V19,T04] ( 2, 2 ) byref -> rsi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V20 tmp18 [V20,T05] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M57296_IG01:
push rbp
sub rsp, 16
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], 0xD1FFAB1E
- ;; size=18 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M57296_IG02:
- lea rdx, [rbp-0x10]
- mov dword ptr [rdx], esi
+ mov dword ptr [rbp-0x04], esi
mov rdi, gword ptr [rdi+0x08]
- mov rsi, rdx
+ lea rsi, bword ptr [rbp-0x04]
mov edx, 4
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
- cmp qword ptr [rbp-0x08], 0xD1FFAB1E
- je SHORT G_M57296_IG03
- call CORINFO_HELP_FAIL_FAST
- ;; size=43 bbWeight=1 PerfScore 15.00
-G_M57296_IG03:
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M57296_IG04:
+ ;; size=27 bbWeight=1 PerfScore 11.00
+G_M57296_IG03:
add rsp, 16
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 68, prolog size 18, PerfScore 19.75, instruction count 19, allocated bytes for code 68 (MethodHash=35fb202f) for method System.IO.BinaryWriter:Write(int):this (FullOpts)
+; Total bytes of code 43, prolog size 10, PerfScore 14.50, instruction count 14, allocated bytes for code 43 (MethodHash=35fb202f) for method System.IO.BinaryWriter:Write(int):this (FullOpts) -25 (-36.23 % of base) - System.IO.BinaryWriter:Write(long):this ; Assembly listing for method System.IO.BinaryWriter:Write(long):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; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.BinaryWriter>
; V01 arg1 [V01,T02] ( 3, 3 ) long -> rsi single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V07 tmp3 [V07,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
-;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V20 tmp16 [V20,T03] ( 3, 3 ) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V30 tmp26 [V30,T04] ( 2, 2 ) byref -> rsi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp27 [V31,T06] ( 0, 0 ) int -> zero-ref ptr "field V13._length (fldOffset=0x8)" P-INDEP
-; V32 GsCookie [V32 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V33 tmp29 [V33,T05] ( 2, 2 ) ref -> rdi single-def "shadowVar"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
+; V04 tmp2 [V04 ] ( 2, 4 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ulong]>
+; V06 tmp4 [V06,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V13 tmp11 [V13,T03] ( 2, 2 ) byref -> rsi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V15 tmp13 [V15 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V19 tmp17 [V19,T04] ( 2, 2 ) byref -> rsi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V20 tmp18 [V20,T05] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M16457_IG01:
push rbp
sub rsp, 16
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], 0xD1FFAB1E
- ;; size=18 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M16457_IG02:
- lea rdx, [rbp-0x10]
- mov qword ptr [rdx], rsi
+ mov qword ptr [rbp-0x08], rsi
mov rdi, gword ptr [rdi+0x08]
- mov rsi, rdx
+ lea rsi, bword ptr [rbp-0x08]
mov edx, 8
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
- cmp qword ptr [rbp-0x08], 0xD1FFAB1E
- je SHORT G_M16457_IG03
- call CORINFO_HELP_FAIL_FAST
- ;; size=44 bbWeight=1 PerfScore 15.00
-G_M16457_IG03:
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M16457_IG04:
+ ;; size=28 bbWeight=1 PerfScore 11.00
+G_M16457_IG03:
add rsp, 16
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 69, prolog size 18, PerfScore 19.75, instruction count 19, allocated bytes for code 69 (MethodHash=47c9bfb6) for method System.IO.BinaryWriter:Write(long):this (FullOpts)
+; Total bytes of code 44, prolog size 10, PerfScore 14.50, instruction count 14, allocated bytes for code 44 (MethodHash=47c9bfb6) for method System.IO.BinaryWriter:Write(long):this (FullOpts) -25 (-36.76 % of base) - System.IO.BinaryWriter:Write(uint):this ; Assembly listing for method System.IO.BinaryWriter:Write(uint):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; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.BinaryWriter>
; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V07 tmp3 [V07,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
-;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V20 tmp16 [V20,T03] ( 3, 3 ) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V30 tmp26 [V30,T04] ( 2, 2 ) byref -> rsi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp27 [V31,T06] ( 0, 0 ) int -> zero-ref ptr "field V13._length (fldOffset=0x8)" P-INDEP
-; V32 GsCookie [V32 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V33 tmp29 [V33,T05] ( 2, 2 ) ref -> rdi single-def "shadowVar"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
+; V04 tmp2 [V04 ] ( 2, 4 ) int -> [rbp-0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+; V06 tmp4 [V06,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V13 tmp11 [V13,T03] ( 2, 2 ) byref -> rsi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V15 tmp13 [V15 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V19 tmp17 [V19,T04] ( 2, 2 ) byref -> rsi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V20 tmp18 [V20,T05] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M29605_IG01:
push rbp
sub rsp, 16
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], 0xD1FFAB1E
- ;; size=18 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M29605_IG02:
- lea rdx, [rbp-0x10]
- mov dword ptr [rdx], esi
+ mov dword ptr [rbp-0x04], esi
mov rdi, gword ptr [rdi+0x08]
- mov rsi, rdx
+ lea rsi, bword ptr [rbp-0x04]
mov edx, 4
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
- cmp qword ptr [rbp-0x08], 0xD1FFAB1E
- je SHORT G_M29605_IG03
- call CORINFO_HELP_FAIL_FAST
- ;; size=43 bbWeight=1 PerfScore 15.00
-G_M29605_IG03:
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M29605_IG04:
+ ;; size=27 bbWeight=1 PerfScore 11.00
+G_M29605_IG03:
add rsp, 16
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 68, prolog size 18, PerfScore 19.75, instruction count 19, allocated bytes for code 68 (MethodHash=1f5b8c5a) for method System.IO.BinaryWriter:Write(uint):this (FullOpts)
+; Total bytes of code 43, prolog size 10, PerfScore 14.50, instruction count 14, allocated bytes for code 43 (MethodHash=1f5b8c5a) for method System.IO.BinaryWriter:Write(uint):this (FullOpts) -25 (-36.23 % of base) - System.IO.BinaryWriter:Write(ulong):this ; Assembly listing for method System.IO.BinaryWriter:Write(ulong):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; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.BinaryWriter>
; V01 arg1 [V01,T02] ( 3, 3 ) long -> rsi single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V07 tmp3 [V07,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
-;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V20 tmp16 [V20,T03] ( 3, 3 ) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V30 tmp26 [V30,T04] ( 2, 2 ) byref -> rsi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp27 [V31,T06] ( 0, 0 ) int -> zero-ref ptr "field V13._length (fldOffset=0x8)" P-INDEP
-; V32 GsCookie [V32 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V33 tmp29 [V33,T05] ( 2, 2 ) ref -> rdi single-def "shadowVar"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
+; V04 tmp2 [V04 ] ( 2, 4 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ulong]>
+; V06 tmp4 [V06,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V13 tmp11 [V13,T03] ( 2, 2 ) byref -> rsi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V15 tmp13 [V15 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V19 tmp17 [V19,T04] ( 2, 2 ) byref -> rsi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V20 tmp18 [V20,T05] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M59356_IG01:
push rbp
sub rsp, 16
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], 0xD1FFAB1E
- ;; size=18 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M59356_IG02:
- lea rdx, [rbp-0x10]
- mov qword ptr [rdx], rsi
+ mov qword ptr [rbp-0x08], rsi
mov rdi, gword ptr [rdi+0x08]
- mov rsi, rdx
+ lea rsi, bword ptr [rbp-0x08]
mov edx, 8
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
- cmp qword ptr [rbp-0x08], 0xD1FFAB1E
- je SHORT G_M59356_IG03
- call CORINFO_HELP_FAIL_FAST
- ;; size=44 bbWeight=1 PerfScore 15.00
-G_M59356_IG03:
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M59356_IG04:
+ ;; size=28 bbWeight=1 PerfScore 11.00
+G_M59356_IG03:
add rsp, 16
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 69, prolog size 18, PerfScore 19.75, instruction count 19, allocated bytes for code 69 (MethodHash=cb2f1823) for method System.IO.BinaryWriter:Write(ulong):this (FullOpts)
+; Total bytes of code 44, prolog size 10, PerfScore 14.50, instruction count 14, allocated bytes for code 44 (MethodHash=cb2f1823) for method System.IO.BinaryWriter:Write(ulong):this (FullOpts) -22 (-32.84 % of base) - System.IO.BinaryWriter:Write(double):this ; Assembly listing for method System.IO.BinaryWriter:Write(double):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; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.BinaryWriter>
-; V01 arg1 [V01,T06] ( 3, 3 ) double -> mm0 single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
-;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V07 tmp3 [V07,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
-;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-;* V09 tmp5 [V09 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V20 tmp16 [V20,T02] ( 3, 3 ) byref -> rsi single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V30 tmp26 [V30,T03] ( 2, 2 ) byref -> rsi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp27 [V31,T05] ( 0, 0 ) int -> zero-ref ptr "field V13._length (fldOffset=0x8)" P-INDEP
-; V32 GsCookie [V32 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V33 tmp29 [V33,T04] ( 2, 2 ) ref -> rdi single-def "shadowVar"
+; V01 arg1 [V01,T05] ( 3, 3 ) double -> mm0 single-def
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03 ] ( 2, 4 ) double -> [rbp-0x08] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double]>
+; V05 tmp3 [V05,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.IO.Stream>
+;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[double]>
+;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[double]>
+;* V10 tmp8 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V12 tmp10 [V12,T02] ( 2, 2 ) byref -> rsi single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
+;* V14 tmp12 [V14 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V15 tmp13 [V15 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp14 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V18 tmp16 [V18,T03] ( 2, 2 ) byref -> rsi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp17 [V19,T04] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M24630_IG01:
push rbp
sub rsp, 16
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], 0xD1FFAB1E
- ;; size=18 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M24630_IG02:
- lea rsi, [rbp-0x10]
- vmovsd qword ptr [rsi], xmm0
+ vmovsd qword ptr [rbp-0x08], xmm0
mov rdi, gword ptr [rdi+0x08]
+ lea rsi, bword ptr [rbp-0x08]
mov edx, 8
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this
- cmp qword ptr [rbp-0x08], 0xD1FFAB1E
- je SHORT G_M24630_IG03
- call CORINFO_HELP_FAIL_FAST
- ;; size=42 bbWeight=1 PerfScore 15.75
-G_M24630_IG03:
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M24630_IG04:
+ ;; size=29 bbWeight=1 PerfScore 11.00
+G_M24630_IG03:
add rsp, 16
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 67, prolog size 18, PerfScore 20.50, instruction count 18, allocated bytes for code 67 (MethodHash=bcfc9fc9) for method System.IO.BinaryWriter:Write(double):this (FullOpts)
+; Total bytes of code 45, prolog size 10, PerfScore 14.50, instruction count 14, allocated bytes for code 45 (MethodHash=bcfc9fc9) for method System.IO.BinaryWriter:Write(double):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/d3bdc265a2bcda6810a3446c4f8722d1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Build completed in 28 minutes.
dotnet/runtime#99775
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: