Skip to content
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 #293

Open
MihuBot opened this issue Mar 14, 2024 · 3 comments
Open

[X64] [xtqqczze] BinaryWriter perf improvements #293

MihuBot opened this issue Mar 14, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Mar 14, 2024

Build completed in 1 hour 32 minutes.
dotnet/runtime#99775

Diffs

Found 266 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38993071
Total bytes of diff: 38994199
Total bytes of delta: 1128 (0.00 % of base)
Total relative delta: -1.36
    diff is a regression.
    relative diff is an improvement.


Total byte diff includes 248 bytes from reconciling methods
	Base had    1 unique methods,       37 unique bytes
	Diff had    7 unique methods,      285 unique bytes

Top file regressions (bytes):
         776 : System.IO.Compression.dasm (0.82 % of base)
         269 : System.Security.Cryptography.dasm (0.02 % of base)
         254 : System.Private.Xml.dasm (0.01 % of base)
          32 : System.Private.CoreLib.dasm (0.00 % of base)
          11 : System.IO.IsolatedStorage.dasm (0.05 % of base)
          11 : System.Configuration.ConfigurationManager.dasm (0.00 % of base)
           9 : System.ComponentModel.TypeConverter.dasm (0.00 % of base)

Top file improvements (bytes):
        -159 : System.Resources.Writer.dasm (-1.65 % of base)
         -75 : System.Resources.Extensions.dasm (-0.22 % of base)

9 total files with Code Size differences (2 improved, 7 regressed), 247 unchanged.

Top method regressions (bytes):
         269 (16.00 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):ubyte[] (FullOpts)
         231 (11.73 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:GetObjectData(byref,byref):this (FullOpts)
         150 (11.50 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteCentralDirectoryFileHeader():this (FullOpts)
         125 (14.64 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteCrcAndSizesInLocalHeader(ubyte):this (FullOpts)
         113 (24.30 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64EndOfCentralDirectoryRecord:WriteBlock(System.IO.Stream,long,long,long) (FullOpts)
         101 (9.22 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteLocalFileHeader(ubyte):ubyte:this (FullOpts)
          69 (16.67 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64ExtraField:WriteBlock(System.IO.Stream):this (FullOpts)
          69 (17.25 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteDataDescriptor():this (FullOpts)
          63 (11.95 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipEndOfCentralDirectoryBlock:WriteBlock(System.IO.Stream,long,long,long,ubyte[]) (FullOpts)
          49 (14.98 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64EndOfCentralDirectoryLocator:WriteBlock(System.IO.Stream,long) (FullOpts)
          45 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[double](double):this (FullOpts) (0 base, 1 diff methods)
          44 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[long](long):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[int](int):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[short](short):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[ubyte](ubyte):this (FullOpts) (0 base, 1 diff methods)
          37 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream|40_0(ubyte[],int,int,ubyte):this (FullOpts) (0 base, 1 diff methods)
          37 (10.45 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipGenericExtraField:WriteBlock(System.IO.Stream):this (FullOpts)
          30 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):this (FullOpts) (0 base, 1 diff methods)
          23 (3.19 % of base) : System.Private.Xml.dasm - System.Xml.XmlWriterSettings:GetObjectData(System.Xml.Xsl.Runtime.XmlQueryDataWriter):this (FullOpts)
          14 (0.30 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
          11 (1.85 % of base) : System.IO.IsolatedStorage.dasm - System.Security.IdentityHelper:GetNormalizedStrongNameHash(System.Reflection.AssemblyName):System.String (FullOpts)
          11 (1.85 % of base) : System.Configuration.ConfigurationManager.dasm - System.Security.IdentityHelper:GetNormalizedStrongNameHash(System.Reflection.AssemblyName):System.String (FullOpts)
           9 (1.18 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.Design.DesigntimeLicenseContextSerializer:Serialize(System.IO.Stream,System.String,System.ComponentModel.Design.DesigntimeLicenseContext) (FullOpts)

Top method improvements (bytes):
        -159 (-4.66 % of base) : System.Resources.Writer.dasm - System.Resources.ResourceWriter:Generate():this (FullOpts)
         -75 (-2.27 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.PreserializedResourceWriter:Generate():this (FullOpts)
         -37 (-100.00 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream|39_0(ubyte[],int,int,ubyte):this (FullOpts) (1 base, 0 diff methods)
         -29 (-39.73 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(short):this (FullOpts)
         -29 (-39.73 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(System.Half):this (FullOpts)
         -28 (-5.44 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(ushort):this (FullOpts) (2 methods)
         -25 (-36.76 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(int):this (FullOpts)
         -25 (-36.23 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(long):this (FullOpts)
         -25 (-36.76 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(uint):this (FullOpts)
         -25 (-36.23 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(ulong):this (FullOpts)
         -22 (-32.84 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(double):this (FullOpts)
         -22 (-32.84 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(float):this (FullOpts)

Top method regressions (percentages):
          37 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream|40_0(ubyte[],int,int,ubyte):this (FullOpts) (0 base, 1 diff methods)
          45 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[double](double):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[int](int):this (FullOpts) (0 base, 1 diff methods)
          44 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[long](long):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[short](short):this (FullOpts) (0 base, 1 diff methods)
          30 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[ubyte](ubyte):this (FullOpts) (0 base, 1 diff methods)
         113 (24.30 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64EndOfCentralDirectoryRecord:WriteBlock(System.IO.Stream,long,long,long) (FullOpts)
          69 (17.25 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteDataDescriptor():this (FullOpts)
          69 (16.67 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64ExtraField:WriteBlock(System.IO.Stream):this (FullOpts)
         269 (16.00 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):ubyte[] (FullOpts)
          49 (14.98 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64EndOfCentralDirectoryLocator:WriteBlock(System.IO.Stream,long) (FullOpts)
         125 (14.64 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteCrcAndSizesInLocalHeader(ubyte):this (FullOpts)
          63 (11.95 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipEndOfCentralDirectoryBlock:WriteBlock(System.IO.Stream,long,long,long,ubyte[]) (FullOpts)
         231 (11.73 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:GetObjectData(byref,byref):this (FullOpts)
         150 (11.50 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteCentralDirectoryFileHeader():this (FullOpts)
          37 (10.45 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipGenericExtraField:WriteBlock(System.IO.Stream):this (FullOpts)
         101 (9.22 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteLocalFileHeader(ubyte):ubyte:this (FullOpts)
          23 (3.19 % of base) : System.Private.Xml.dasm - System.Xml.XmlWriterSettings:GetObjectData(System.Xml.Xsl.Runtime.XmlQueryDataWriter):this (FullOpts)
          11 (1.85 % of base) : System.IO.IsolatedStorage.dasm - System.Security.IdentityHelper:GetNormalizedStrongNameHash(System.Reflection.AssemblyName):System.String (FullOpts)
          11 (1.85 % of base) : System.Configuration.ConfigurationManager.dasm - System.Security.IdentityHelper:GetNormalizedStrongNameHash(System.Reflection.AssemblyName):System.String (FullOpts)
           9 (1.18 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.Design.DesigntimeLicenseContextSerializer:Serialize(System.IO.Stream,System.String,System.ComponentModel.Design.DesigntimeLicenseContext) (FullOpts)
          14 (0.30 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)

Top method improvements (percentages):
         -37 (-100.00 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream|39_0(ubyte[],int,int,ubyte):this (FullOpts) (1 base, 0 diff methods)
         -29 (-39.73 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(short):this (FullOpts)
         -29 (-39.73 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(System.Half):this (FullOpts)
         -25 (-36.76 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(int):this (FullOpts)
         -25 (-36.76 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(uint):this (FullOpts)
         -25 (-36.23 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(long):this (FullOpts)
         -25 (-36.23 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(ulong):this (FullOpts)
         -22 (-32.84 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(double):this (FullOpts)
         -22 (-32.84 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(float):this (FullOpts)
         -28 (-5.44 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(ushort):this (FullOpts) (2 methods)
        -159 (-4.66 % of base) : System.Resources.Writer.dasm - System.Resources.ResourceWriter:Generate():this (FullOpts)
         -75 (-2.27 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.PreserializedResourceWriter:Generate():this (FullOpts)

35 total methods with Code Size differences (12 improved, 23 regressed), 239661 unchanged.

--------------------------------------------------------------------------------

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Mar 14, 2024

Top method regressions

125 (14.64 % 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 AVX512 - 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; 67 single block inlinees; 29 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,T28] (  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,T25] (  3,  2   )     int  ->  rsi        
+;  V11 tmp3         [V11,T37] (  3,  1.50)     int  ->  [rbp-0x2C] 
+;  V12 tmp4         [V12,T26] (  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-0x70]  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,T27] (  3,  2   )     int  ->  rdi        
+;  V20 tmp12        [V20,T71] (  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,T29] (  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,T30] (  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,T31] (  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,T32] (  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,T33] (  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,T34] (  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   
+;  V143 tmp135      [V143,T35] (  2,  2   )    long  ->  rsi         "Inlining Arg"
+;* V144 tmp136      [V144    ] (  0,  0   )     ref  ->  zero-ref   
+;  V145 tmp137      [V145,T36] (  2,  2   )    long  ->  rsi         "Inlining Arg"
+;  V146 tmp138      [V146,T38] (  2,  1   )   byref  ->  rsi         single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V147 tmp139      [V147    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
+;* V148 tmp140      [V148    ] (  0,  0   )   byref  ->  zero-ref    "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V149 tmp141      [V149    ] (  0,  0   )     int  ->  zero-ref    "field V28._length (fldOffset=0x8)" P-INDEP
+;* V150 tmp142      [V150    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+;* V151 tmp143      [V151    ] (  0,  0   )     int  ->  zero-ref    "field V29._length (fldOffset=0x8)" P-INDEP
+;  V152 tmp144      [V152,T39] (  2,  1   )   byref  ->  rsi         single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+;* V153 tmp145      [V153,T60] (  0,  0   )     int  ->  zero-ref    "field V30._length (fldOffset=0x8)" P-INDEP
+;* V154 tmp146      [V154    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V155 tmp147      [V155    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x8)" P-INDEP
+;  V156 tmp148      [V156,T40] (  2,  1   )   byref  ->  rsi         single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+;* V157 tmp149      [V157    ] (  0,  0   )     int  ->  zero-ref    "field V37._length (fldOffset=0x8)" P-INDEP
+;* V158 tmp150      [V158    ] (  0,  0   )   byref  ->  zero-ref    "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V159 tmp151      [V159    ] (  0,  0   )     int  ->  zero-ref    "field V39._length (fldOffset=0x8)" P-INDEP
+;* V160 tmp152      [V160    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V161 tmp153      [V161    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x8)" P-INDEP
+;  V162 tmp154      [V162,T41] (  2,  1   )   byref  ->  rsi         single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V163 tmp155      [V163,T61] (  0,  0   )     int  ->  zero-ref    "field V41._length (fldOffset=0x8)" P-INDEP
+;* V164 tmp156      [V164    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V165 tmp157      [V165    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
+;  V166 tmp158      [V166,T42] (  2,  1   )   byref  ->  rsi         single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+;* V167 tmp159      [V167    ] (  0,  0   )     int  ->  zero-ref    "field V49._length (fldOffset=0x8)" P-INDEP
+;* V168 tmp160      [V168    ] (  0,  0   )   byref  ->  zero-ref    "field V51._reference (fldOffset=0x0)" P-INDEP
+;* V169 tmp161      [V169    ] (  0,  0   )     int  ->  zero-ref    "field V51._length (fldOffset=0x8)" P-INDEP
+;* V170 tmp162      [V170    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+;* V171 tmp163      [V171    ] (  0,  0   )     int  ->  zero-ref    "field V52._length (fldOffset=0x8)" P-INDEP
+;  V172 tmp164      [V172,T43] (  2,  1   )   byref  ->  rsi         single-def "field V53._reference (fldOffset=0x0)" P-INDEP
+;* V173 tmp165      [V173,T62] (  0,  0   )     int  ->  zero-ref    "field V53._length (fldOffset=0x8)" P-INDEP
+;* V174 tmp166      [V174    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+;* V175 tmp167      [V175    ] (  0,  0   )     int  ->  zero-ref    "field V54._length (fldOffset=0x8)" P-INDEP
+;  V176 tmp168      [V176,T44] (  2,  1   )   byref  ->  rsi         single-def "field V59._reference (fldOffset=0x0)" P-INDEP
+;* V177 tmp169      [V177    ] (  0,  0   )     int  ->  zero-ref    "field V59._length (fldOffset=0x8)" P-INDEP
+;* V178 tmp170      [V178    ] (  0,  0   )   byref  ->  zero-ref    "field V61._reference (fldOffset=0x0)" P-INDEP
+;* V179 tmp171      [V179    ] (  0,  0   )     int  ->  zero-ref    "field V61._length (fldOffset=0x8)" P-INDEP
+;* V180 tmp172      [V180    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V181 tmp173      [V181    ] (  0,  0   )     int  ->  zero-ref    "field V62._length (fldOffset=0x8)" P-INDEP
+;  V182 tmp174      [V182,T45] (  2,  1   )   byref  ->  rsi         single-def "field V63._reference (fldOffset=0x0)" P-INDEP
+;* V183 tmp175      [V183,T63] (  0,  0   )     int  ->  zero-ref    "field V63._length (fldOffset=0x8)" P-INDEP
+;* V184 tmp176      [V184    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V64._reference (fldOffset=0x0)" P-INDEP
+;* V185 tmp177      [V185    ] (  0,  0   )     int  ->  zero-ref    "field V64._length (fldOffset=0x8)" P-INDEP
+;  V186 tmp178      [V186,T46] (  2,  1   )   byref  ->  rsi         single-def "field V69._reference (fldOffset=0x0)" P-INDEP
+;* V187 tmp179      [V187    ] (  0,  0   )     int  ->  zero-ref    "field V69._length (fldOffset=0x8)" P-INDEP
+;* V188 tmp180      [V188    ] (  0,  0   )   byref  ->  zero-ref    "field V71._reference (fldOffset=0x0)" P-INDEP
+;* V189 tmp181      [V189    ] (  0,  0   )     int  ->  zero-ref    "field V71._length (fldOffset=0x8)" P-INDEP
+;* V190 tmp182      [V190    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V72._reference (fldOffset=0x0)" P-INDEP
+;* V191 tmp183      [V191    ] (  0,  0   )     int  ->  zero-ref    "field V72._length (fldOffset=0x8)" P-INDEP
+;  V192 tmp184      [V192,T47] (  2,  1   )   byref  ->  rsi         single-def "field V73._reference (fldOffset=0x0)" P-INDEP
+;* V193 tmp185      [V193,T64] (  0,  0   )     int  ->  zero-ref    "field V73._length (fldOffset=0x8)" P-INDEP
+;* V194 tmp186      [V194    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V74._reference (fldOffset=0x0)" P-INDEP
+;* V195 tmp187      [V195    ] (  0,  0   )     int  ->  zero-ref    "field V74._length (fldOffset=0x8)" P-INDEP
+;  V196 tmp188      [V196,T48] (  2,  1   )   byref  ->  rsi         single-def "field V79._reference (fldOffset=0x0)" P-INDEP
+;* V197 tmp189      [V197    ] (  0,  0   )     int  ->  zero-ref    "field V79._length (fldOffset=0x8)" P-INDEP
+;* V198 tmp190      [V198    ] (  0,  0   )   byref  ->  zero-ref    "field V81._reference (fldOffset=0x0)" P-INDEP
+;* V199 tmp191      [V199    ] (  0,  0   )     int  ->  zero-ref    "field V81._length (fldOffset=0x8)" P-INDEP
+;* V200 tmp192      [V200    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V82._reference (fldOffset=0x0)" P-INDEP
+;* V201 tmp193      [V201    ] (  0,  0   )     int  ->  zero-ref    "field V82._length (fldOffset=0x8)" P-INDEP
+;  V202 tmp194      [V202,T49] (  2,  1   )   byref  ->  rsi         single-def "field V83._reference (fldOffset=0x0)" P-INDEP
+;* V203 tmp195      [V203,T65] (  0,  0   )     int  ->  zero-ref    "field V83._length (fldOffset=0x8)" P-INDEP
+;* V204 tmp196      [V204    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V84._reference (fldOffset=0x0)" P-INDEP
+;* V205 tmp197      [V205    ] (  0,  0   )     int  ->  zero-ref    "field V84._length (fldOffset=0x8)" P-INDEP
+;  V206 tmp198      [V206,T50] (  2,  1   )   byref  ->  rsi         single-def "field V89._reference (fldOffset=0x0)" P-INDEP
+;* V207 tmp199      [V207    ] (  0,  0   )     int  ->  zero-ref    "field V89._length (fldOffset=0x8)" P-INDEP
+;* V208 tmp200      [V208    ] (  0,  0   )   byref  ->  zero-ref    "field V91._reference (fldOffset=0x0)" P-INDEP
+;* V209 tmp201      [V209    ] (  0,  0   )     int  ->  zero-ref    "field V91._length (fldOffset=0x8)" P-INDEP
+;* V210 tmp202      [V210    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V92._reference (fldOffset=0x0)" P-INDEP
+;* V211 tmp203      [V211    ] (  0,  0   )     int  ->  zero-ref    "field V92._length (fldOffset=0x8)" P-INDEP
+;  V212 tmp204      [V212,T51] (  2,  1   )   byref  ->  rsi         single-def "field V93._reference (fldOffset=0x0)" P-INDEP
+;* V213 tmp205      [V213,T66] (  0,  0   )     int  ->  zero-ref    "field V93._length (fldOffset=0x8)" P-INDEP
+;* V214 tmp206      [V214    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V94._reference (fldOffset=0x0)" P-INDEP
+;* V215 tmp207      [V215    ] (  0,  0   )     int  ->  zero-ref    "field V94._length (fldOffset=0x8)" P-INDEP
+;  V216 tmp208      [V216,T52] (  2,  1   )   byref  ->  rsi         single-def "field V99._reference (fldOffset=0x0)" P-INDEP
+;* V217 tmp209      [V217    ] (  0,  0   )     int  ->  zero-ref    "field V99._length (fldOffset=0x8)" P-INDEP
+;* V218 tmp210      [V218    ] (  0,  0   )   byref  ->  zero-ref    "field V101._reference (fldOffset=0x0)" P-INDEP
+;* V219 tmp211      [V219    ] (  0,  0   )     int  ->  zero-ref    "field V101._length (fldOffset=0x8)" P-INDEP
+;* V220 tmp212      [V220    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V102._reference (fldOffset=0x0)" P-INDEP
+;* V221 tmp213      [V221    ] (  0,  0   )     int  ->  zero-ref    "field V102._length (fldOffset=0x8)" P-INDEP
+;  V222 tmp214      [V222,T53] (  2,  1   )   byref  ->  rsi         single-def "field V103._reference (fldOffset=0x0)" P-INDEP
+;* V223 tmp215      [V223,T67] (  0,  0   )     int  ->  zero-ref    "field V103._length (fldOffset=0x8)" P-INDEP
+;* V224 tmp216      [V224    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V104._reference (fldOffset=0x0)" P-INDEP
+;* V225 tmp217      [V225    ] (  0,  0   )     int  ->  zero-ref    "field V104._length (fldOffset=0x8)" P-INDEP
+;  V226 tmp218      [V226,T54] (  2,  1   )   byref  ->  rsi         single-def "field V111._reference (fldOffset=0x0)" P-INDEP
+;* V227 tmp219      [V227    ] (  0,  0   )     int  ->  zero-ref    "field V111._length (fldOffset=0x8)" P-INDEP
+;* V228 tmp220      [V228    ] (  0,  0   )   byref  ->  zero-ref    "field V113._reference (fldOffset=0x0)" P-INDEP
+;* V229 tmp221      [V229    ] (  0,  0   )     int  ->  zero-ref    "field V113._length (fldOffset=0x8)" P-INDEP
+;* V230 tmp222      [V230    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V114._reference (fldOffset=0x0)" P-INDEP
+;* V231 tmp223      [V231    ] (  0,  0   )     int  ->  zero-ref    "field V114._length (fldOffset=0x8)" P-INDEP
+;  V232 tmp224      [V232,T55] (  2,  1   )   byref  ->  rsi         single-def "field V115._reference (fldOffset=0x0)" P-INDEP
+;* V233 tmp225      [V233,T68] (  0,  0   )     int  ->  zero-ref    "field V115._length (fldOffset=0x8)" P-INDEP
+;* V234 tmp226      [V234    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V116._reference (fldOffset=0x0)" P-INDEP
+;* V235 tmp227      [V235    ] (  0,  0   )     int  ->  zero-ref    "field V116._length (fldOffset=0x8)" P-INDEP
+;  V236 tmp228      [V236,T56] (  2,  1   )   byref  ->  rsi         single-def "field V122._reference (fldOffset=0x0)" P-INDEP
+;* V237 tmp229      [V237    ] (  0,  0   )     int  ->  zero-ref    "field V122._length (fldOffset=0x8)" P-INDEP
+;* V238 tmp230      [V238    ] (  0,  0   )   byref  ->  zero-ref    "field V124._reference (fldOffset=0x0)" P-INDEP
+;* V239 tmp231      [V239    ] (  0,  0   )     int  ->  zero-ref    "field V124._length (fldOffset=0x8)" P-INDEP
+;* V240 tmp232      [V240    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V125._reference (fldOffset=0x0)" P-INDEP
+;* V241 tmp233      [V241    ] (  0,  0   )     int  ->  zero-ref    "field V125._length (fldOffset=0x8)" P-INDEP
+;  V242 tmp234      [V242,T57] (  2,  1   )   byref  ->  rsi         single-def "field V126._reference (fldOffset=0x0)" P-INDEP
+;* V243 tmp235      [V243,T69] (  0,  0   )     int  ->  zero-ref    "field V126._length (fldOffset=0x8)" P-INDEP
+;* V244 tmp236      [V244    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V127._reference (fldOffset=0x0)" P-INDEP
+;* V245 tmp237      [V245    ] (  0,  0   )     int  ->  zero-ref    "field V127._length (fldOffset=0x8)" P-INDEP
+;  V246 tmp238      [V246,T58] (  2,  1   )   byref  ->  rsi         single-def "field V134._reference (fldOffset=0x0)" P-INDEP
+;* V247 tmp239      [V247    ] (  0,  0   )     int  ->  zero-ref    "field V134._length (fldOffset=0x8)" P-INDEP
+;* V248 tmp240      [V248    ] (  0,  0   )   byref  ->  zero-ref    "field V136._reference (fldOffset=0x0)" P-INDEP
+;* V249 tmp241      [V249    ] (  0,  0   )     int  ->  zero-ref    "field V136._length (fldOffset=0x8)" P-INDEP
+;* V250 tmp242      [V250    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V137._reference (fldOffset=0x0)" P-INDEP
+;* V251 tmp243      [V251    ] (  0,  0   )     int  ->  zero-ref    "field V137._length (fldOffset=0x8)" P-INDEP
+;  V252 tmp244      [V252,T59] (  2,  1   )   byref  ->  rsi         single-def "field V138._reference (fldOffset=0x0)" P-INDEP
+;* V253 tmp245      [V253,T70] (  0,  0   )     int  ->  zero-ref    "field V138._length (fldOffset=0x8)" P-INDEP
+;* V254 tmp246      [V254    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V139._reference (fldOffset=0x0)" P-INDEP
+;* V255 tmp247      [V255    ] (  0,  0   )     int  ->  zero-ref    "field V139._length (fldOffset=0x8)" P-INDEP
+;  V256 tmp248      [V256,T04] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V257 tmp249      [V257,T22] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V258 tmp250      [V258,T23] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V259 tmp251      [V259,T05] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V260 tmp252      [V260,T24] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V261 tmp253      [V261,T06] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V262 tmp254      [V262,T72] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 72
 
 G_M24499_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       lea      rbp, [rsp+0x40]
+       sub      rsp, 72
+       lea      rbp, [rsp+0x70]
        mov      rbx, rdi
        mov      r15d, esi
 						;; size=25 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-0x70], 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-0x70]
        call     CORINFO_HELP_ASSIGN_REF
        mov      byte  ptr [r12+0x18], 0
-       mov      r13, gword ptr [rbp-0x38]
+       mov      r13, gword ptr [rbp-0x70]
        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      rax, 0xD1FFAB1E      ; code for System.IO.BinaryWriter:WriteBytes[ulong](ulong):this
+       call     [rax]System.IO.BinaryWriter:WriteBytes[ulong](ulong):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      rax, 0xD1FFAB1E      ; code for System.IO.BinaryWriter:WriteBytes[ulong](ulong):this
+       call     [rax]System.IO.BinaryWriter:WriteBytes[ulong](ulong):this
+						;; size=68 bbWeight=0.50 PerfScore 11.88
 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, 72
        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 979, prolog size 19, PerfScore 209.75, instruction count 261, allocated bytes for code 979 (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/139447c543a8c101d044dd1ffb37fa3b

@MihuBot
Copy link
Owner Author

MihuBot commented Mar 14, 2024

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 AVX512 - 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 AVX512 - 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 AVX512 - 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 AVX512 - 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 AVX512 - 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 AVX512 - 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 AVX512 - 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/3ba63c2050cac4256f43bdd35673fc6c

@MihuBot
Copy link
Owner Author

MihuBot commented Mar 14, 2024

@xtqqczze

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant