Skip to content

Arm64: fold mov+lsl to ubfiz #60813

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

Closed
wants to merge 1 commit into from
Closed

Arm64: fold mov+lsl to ubfiz #60813

wants to merge 1 commit into from

Conversation

EgorBo
Copy link
Member

@EgorBo EgorBo commented Oct 24, 2021

Just an experiment to fold

            mov     w1, w1
            lsl     x1, x1, #2

into

            ubfiz   x1, x1, #2, #32

this patterns always shows up when we access arrays by index. It needs a different solution, but I'm just wondering if it passes CI tests.

coreclr_tests.pmi.Linux.arm64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 109462124 (overridden on cmd)
Total bytes of diff: 109433540 (overridden on cmd)
Total bytes of delta: -28584 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
           4 : 228166.dasm (0.80% of base)
           4 : 228177.dasm (0.50% of base)

Top file improvements (bytes):
        -584 : 230887.dasm (-2.95% of base)
        -484 : 135.dasm (-4.48% of base)
        -356 : 242403.dasm (-2.17% of base)
        -356 : 232908.dasm (-2.17% of base)
        -276 : 220208.dasm (-0.19% of base)
        -212 : 123671.dasm (-48.18% of base)
        -212 : 132521.dasm (-48.18% of base)
        -204 : 213150.dasm (-0.14% of base)
        -180 : 242267.dasm (-1.68% of base)
        -168 : 85531.dasm (-40.78% of base)
        -168 : 83713.dasm (-40.78% of base)
        -168 : 84936.dasm (-40.78% of base)
        -148 : 124204.dasm (-27.61% of base)
        -112 : 237378.dasm (-0.94% of base)
        -108 : 247464.dasm (-5.18% of base)
         -80 : 123505.dasm (-17.39% of base)
         -80 : 240688.dasm (-0.59% of base)
         -80 : 132389.dasm (-17.24% of base)
         -76 : 139271.dasm (-10.92% of base)
         -76 : 139272.dasm (-10.92% of base)

3759 total files with Code Size differences (3757 improved, 2 regressed), 61 unchanged.

Top method regressions (bytes):
           4 ( 0.50% of base) : 228177.dasm - Driver`2[__Canon,__Canon][System.__Canon,System.__Canon]:AddRemoveKeyValPair(System.__Canon[],System.__Canon[],int,int):this
           4 ( 0.80% of base) : 228166.dasm - Driver`2[__Canon,__Canon][System.__Canon,System.__Canon]:BasicAdd(System.__Canon[],System.__Canon[]):this

Top method improvements (bytes):
        -584 (-2.95% of base) : 230887.dasm - lclflddiv:Main():int
        -484 (-4.48% of base) : 135.dasm - System.Text.RegularExpressions.RegexInterpreter:Go():this
        -356 (-2.17% of base) : 242403.dasm - StrAccess2:Main():int
        -356 (-2.17% of base) : 232908.dasm - StrAccess2:Main():int
        -276 (-0.19% of base) : 220208.dasm - i4div:Main():int
        -212 (-48.18% of base) : 123671.dasm - testout1:Func_0_1_5_1_6():long
        -212 (-48.18% of base) : 132521.dasm - testout1:Func_0_1_5_1_6():long
        -204 (-0.14% of base) : 213150.dasm - u4div:Main():int
        -180 (-1.68% of base) : 242267.dasm - Benchstone.BenchF.LLoops:Main1(int):this
        -168 (-40.78% of base) : 85531.dasm - _beq:main(System.String[]):int
        -168 (-40.78% of base) : 84936.dasm - _beq:main(System.String[]):int
        -168 (-40.78% of base) : 83713.dasm - _ceq:main(System.String[]):int
        -148 (-27.61% of base) : 124204.dasm - testout1:Func_0_4_5_3_1():long
        -112 (-0.94% of base) : 237378.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this
        -108 (-5.18% of base) : 247464.dasm - JitTest.LCS:findLCS(byref,byref,byref,byref)
         -80 (-0.59% of base) : 240688.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,long,ushort,double,long,long):int
         -80 (-17.39% of base) : 123505.dasm - testout1:Func_0_5_1_1():double
         -80 (-17.24% of base) : 132389.dasm - testout1:Func_0_5_1_1():double
         -76 (-4.46% of base) : 243388.dasm - Benchstone.BenchF.MatInv4:MinV2(System.Single[],byref,byref,System.Single[],System.Single[])
         -76 (-4.26% of base) : 228085.dasm - SciMark2.Random:nextDoubles(System.Double[]):this

Top method regressions (percentages):
           4 ( 0.80% of base) : 228166.dasm - Driver`2[__Canon,__Canon][System.__Canon,System.__Canon]:BasicAdd(System.__Canon[],System.__Canon[]):this
           4 ( 0.50% of base) : 228177.dasm - Driver`2[__Canon,__Canon][System.__Canon,System.__Canon]:AddRemoveKeyValPair(System.__Canon[],System.__Canon[],int,int):this

Top method improvements (percentages):
        -212 (-48.18% of base) : 123671.dasm - testout1:Func_0_1_5_1_6():long
        -212 (-48.18% of base) : 132521.dasm - testout1:Func_0_1_5_1_6():long
        -168 (-40.78% of base) : 85531.dasm - _beq:main(System.String[]):int
        -168 (-40.78% of base) : 84936.dasm - _beq:main(System.String[]):int
        -168 (-40.78% of base) : 83713.dasm - _ceq:main(System.String[]):int
         -32 (-34.78% of base) : 82579.dasm - Sample10:func(System.Object):int
        -148 (-27.61% of base) : 124204.dasm - testout1:Func_0_4_5_3_1():long
         -40 (-26.32% of base) : 86083.dasm - bne_un:main(System.String[]):int
         -40 (-26.32% of base) : 87085.dasm - bne_un:main(System.String[]):int
         -24 (-23.08% of base) : 178220.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 127633.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 205708.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 152452.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 194322.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 202086.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 5039.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 111683.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 160626.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 192871.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte
         -24 (-23.08% of base) : 95703.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AbsSaturate(byte):byte

3759 total methods with Code Size differences (3757 improved, 2 regressed), 61 unchanged.


libraries.crossgen2.Linux.arm64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 48207596 (overridden on cmd)
Total bytes of diff: 48175672 (overridden on cmd)
Total bytes of delta: -31924 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          44 : 106136.dasm (1.57% of base)
          12 : 42013.dasm (0.30% of base)
           8 : 67366.dasm (2.56% of base)
           4 : 192553.dasm (0.49% of base)
           4 : 76452.dasm (0.29% of base)
           4 : 63801.dasm (0.17% of base)
           4 : 59003.dasm (0.07% of base)
           4 : 21391.dasm (0.96% of base)
           4 : 207044.dasm (1.82% of base)
           4 : 130966.dasm (0.62% of base)

Top file improvements (bytes):
        -572 : 77161.dasm (-7.09% of base)
        -500 : 63411.dasm (-1.72% of base)
        -484 : 206256.dasm (-4.71% of base)
        -316 : 205929.dasm (-1.12% of base)
        -288 : 74197.dasm (-3.41% of base)
        -248 : 72543.dasm (-26.61% of base)
        -236 : 77197.dasm (-5.00% of base)
        -220 : 74481.dasm (-43.65% of base)
        -208 : 77175.dasm (-3.92% of base)
        -196 : 164336.dasm (-7.30% of base)
        -192 : 154473.dasm (-5.42% of base)
        -124 : 22279.dasm (-5.34% of base)
        -124 : 22281.dasm (-6.35% of base)
        -120 : 154014.dasm (-4.07% of base)
        -120 : 154185.dasm (-4.57% of base)
        -116 : 154032.dasm (-3.83% of base)
        -116 : 74192.dasm (-2.33% of base)
        -116 : 154200.dasm (-4.28% of base)
        -108 : 18099.dasm (-7.16% of base)
        -104 : 73314.dasm (-31.71% of base)

3580 total files with Code Size differences (3570 improved, 10 regressed), 51 unchanged.

Top method regressions (bytes):
          44 ( 1.57% of base) : 106136.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpressionContinued(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.MethodGroup,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundCall:this
          12 ( 0.30% of base) : 42013.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ValidateOverloadedOperator(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,Microsoft.CodeAnalysis.DiagnosticBag):bool
           8 ( 2.56% of base) : 67366.dasm - Newtonsoft.Json.JsonTextWriter:SetIndentChars():int:this
           4 ( 0.07% of base) : 59003.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this
           4 ( 0.96% of base) : 21391.dasm - Microsoft.FSharp.Primitives.Basics.List:splitIntoToFreshConsTail(Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]],int,int,int,int,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon])
           4 ( 0.17% of base) : 63801.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,bool,System.Object[],int,System.String[],System.Type[],bool,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
           4 ( 0.49% of base) : 192553.dasm - System.IO.Compression.ZipArchiveEntry:WriteLocalFileHeaderAndDataIfNeeded():this
           4 ( 0.62% of base) : 130966.dasm - System.Runtime.Loader.AssemblyLoadContext:LoadFromAssemblyPath(System.String):System.Reflection.Assembly:this
           4 ( 1.82% of base) : 207044.dasm - System.Transactions.TransactionManager:CheckTransactionManager(System.String):System.Transactions.Distributed.DistributedTransactionManager
           4 ( 0.29% of base) : 76452.dasm - System.Xml.XPathNodePointer:MoveToNextAttribute(bool):bool:this

Top method improvements (bytes):
        -572 (-7.09% of base) : 77161.dasm - System.Data.RBTree`1:RBInsert(int,int,int,int,bool):int:this
        -500 (-1.72% of base) : 63411.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
        -484 (-4.71% of base) : 206256.dasm - System.Text.RegularExpressions.RegexInterpreter:Go():this
        -316 (-1.12% of base) : 205929.dasm - System.Text.RegularExpressions.RegexCompiler:GenerateOneCode():this
        -288 (-3.41% of base) : 74197.dasm - System.Data.RBTree`1:RBInsert(int,int,int,int,bool):int:this
        -248 (-26.61% of base) : 72543.dasm - System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger
        -236 (-5.00% of base) : 77197.dasm - System.Data.RBTree`1:RBDeleteFixup(int,int,int,int):int:this
        -220 (-43.65% of base) : 74481.dasm - System.Data.DataView:GetDataRowViewFromRange(System.Data.Range):System.Data.DataRowView[]:this
        -208 (-3.92% of base) : 77175.dasm - System.Data.RBTree`1:RBDeleteX(int,int,int):int:this
        -196 (-7.30% of base) : 164336.dasm - System.Security.Cryptography.Xml.EncryptedXml:DecryptEncryptedKey(System.Security.Cryptography.Xml.EncryptedKey):System.Byte[]:this
        -192 (-5.42% of base) : 154473.dasm - System.Xml.XmlLoader:LoadDocumentType(System.Xml.IDtdInfo,System.Xml.XmlDocumentType):this
        -124 (-5.34% of base) : 22279.dasm - Filter:populateDstViaMask(System.__Canon[],System.UInt32[],System.__Canon[]):int
        -124 (-6.35% of base) : 22281.dasm - Filter:populateMask(Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon, System.Boolean],System.__Canon[],System.UInt32[]):int
        -120 (-4.07% of base) : 154014.dasm - <ScanAttlist2Async>d__183:MoveNext():this
        -120 (-4.57% of base) : 154185.dasm - System.Xml.DtdParser:ScanAttlist2():int:this
        -116 (-3.83% of base) : 154032.dasm - <ScanSubsetContentAsync>d__174:MoveNext():this
        -116 (-2.33% of base) : 74192.dasm - System.Data.RBTree`1:RBDeleteFixup(int,int,int,int):int:this
        -116 (-4.28% of base) : 154200.dasm - System.Xml.DtdParser:ScanSubsetContent():int:this
        -108 (-7.16% of base) : 18099.dasm - Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode:GetAllChildren():System.Collections.Generic.IList`1[Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode]:this
        -104 (-1.88% of base) : 74193.dasm - System.Data.RBTree`1:RBDeleteX(int,int,int):int:this

Top method regressions (percentages):
           8 ( 2.56% of base) : 67366.dasm - Newtonsoft.Json.JsonTextWriter:SetIndentChars():int:this
           4 ( 1.82% of base) : 207044.dasm - System.Transactions.TransactionManager:CheckTransactionManager(System.String):System.Transactions.Distributed.DistributedTransactionManager
          44 ( 1.57% of base) : 106136.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpressionContinued(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.MethodGroup,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundCall:this
           4 ( 0.96% of base) : 21391.dasm - Microsoft.FSharp.Primitives.Basics.List:splitIntoToFreshConsTail(Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]],int,int,int,int,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon])
           4 ( 0.62% of base) : 130966.dasm - System.Runtime.Loader.AssemblyLoadContext:LoadFromAssemblyPath(System.String):System.Reflection.Assembly:this
           4 ( 0.49% of base) : 192553.dasm - System.IO.Compression.ZipArchiveEntry:WriteLocalFileHeaderAndDataIfNeeded():this
          12 ( 0.30% of base) : 42013.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ValidateOverloadedOperator(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,Microsoft.CodeAnalysis.DiagnosticBag):bool
           4 ( 0.29% of base) : 76452.dasm - System.Xml.XPathNodePointer:MoveToNextAttribute(bool):bool:this
           4 ( 0.17% of base) : 63801.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,bool,System.Object[],int,System.String[],System.Type[],bool,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
           4 ( 0.07% of base) : 59003.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this

Top method improvements (percentages):
        -220 (-43.65% of base) : 74481.dasm - System.Data.DataView:GetDataRowViewFromRange(System.Data.Range):System.Data.DataRowView[]:this
         -56 (-40.00% of base) : 81037.dasm - System.Runtime.Serialization.ExtensionDataReader:get_Item(int):System.String:this
         -56 (-40.00% of base) : 81036.dasm - System.Runtime.Serialization.ExtensionDataReader:get_Item(System.String):System.String:this
         -76 (-39.58% of base) : 178397.dasm - System.Net.WebClient:ByteArrayHasPrefix(System.Byte[],System.Byte[]):bool
         -92 (-35.38% of base) : 110583.dasm - System.Net.Http.Headers.ObjectCollection`1:Contains(System.__Canon):bool:this
        -104 (-33.77% of base) : 72817.dasm - System.Data.SqlTypes.SqlByte:op_Explicit(System.Data.SqlTypes.SqlInt64):System.Data.SqlTypes.SqlByte
        -104 (-33.33% of base) : 73381.dasm - System.Data.SqlTypes.SqlInt16:op_Explicit(System.Data.SqlTypes.SqlInt64):System.Data.SqlTypes.SqlInt16
        -104 (-33.33% of base) : 73316.dasm - System.Data.SqlTypes.SqlInt32:op_Explicit(System.Data.SqlTypes.SqlInt64):System.Data.SqlTypes.SqlInt32
        -104 (-32.91% of base) : 72819.dasm - System.Data.SqlTypes.SqlByte:op_Explicit(System.Data.SqlTypes.SqlInt16):System.Data.SqlTypes.SqlByte
        -104 (-32.91% of base) : 72818.dasm - System.Data.SqlTypes.SqlByte:op_Explicit(System.Data.SqlTypes.SqlInt32):System.Data.SqlTypes.SqlByte
        -104 (-32.50% of base) : 73382.dasm - System.Data.SqlTypes.SqlInt16:op_Explicit(System.Data.SqlTypes.SqlInt32):System.Data.SqlTypes.SqlInt16
        -104 (-32.10% of base) : 73315.dasm - System.Data.SqlTypes.SqlInt32:op_Explicit(System.Data.SqlTypes.SqlSingle):System.Data.SqlTypes.SqlInt32
        -104 (-32.10% of base) : 73249.dasm - System.Data.SqlTypes.SqlInt64:op_Explicit(System.Data.SqlTypes.SqlSingle):System.Data.SqlTypes.SqlInt64
        -104 (-31.71% of base) : 72816.dasm - System.Data.SqlTypes.SqlByte:op_Explicit(System.Data.SqlTypes.SqlSingle):System.Data.SqlTypes.SqlByte
        -104 (-31.71% of base) : 73380.dasm - System.Data.SqlTypes.SqlInt16:op_Explicit(System.Data.SqlTypes.SqlSingle):System.Data.SqlTypes.SqlInt16
        -104 (-31.71% of base) : 73314.dasm - System.Data.SqlTypes.SqlInt32:op_Explicit(System.Data.SqlTypes.SqlDouble):System.Data.SqlTypes.SqlInt32
        -104 (-31.71% of base) : 73248.dasm - System.Data.SqlTypes.SqlInt64:op_Explicit(System.Data.SqlTypes.SqlDouble):System.Data.SqlTypes.SqlInt64
        -104 (-31.33% of base) : 72815.dasm - System.Data.SqlTypes.SqlByte:op_Explicit(System.Data.SqlTypes.SqlDouble):System.Data.SqlTypes.SqlByte
        -104 (-31.33% of base) : 73379.dasm - System.Data.SqlTypes.SqlInt16:op_Explicit(System.Data.SqlTypes.SqlDouble):System.Data.SqlTypes.SqlInt16
         -76 (-27.14% of base) : 62992.dasm - Microsoft.VisualBasic.ForEachEnum:MoveNext():bool:this

3580 total methods with Code Size differences (3570 improved, 10 regressed), 51 unchanged.


libraries.pmi.Linux.arm64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47243776 (overridden on cmd)
Total bytes of diff: 47137328 (overridden on cmd)
Total bytes of delta: -106448 (-0.23 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          32 : 107230.dasm (3.31% of base)
          16 : 76727.dasm (0.97% of base)
          16 : 115440.dasm (0.45% of base)
          16 : 214525.dasm (1.20% of base)
          12 : 139769.dasm (8.57% of base)
          12 : 174002.dasm (0.90% of base)
          12 : 166850.dasm (9.38% of base)
          12 : 341.dasm (6.38% of base)
          12 : 342.dasm (6.38% of base)
          12 : 337.dasm (6.25% of base)
          12 : 338.dasm (6.25% of base)
          12 : 339.dasm (6.38% of base)
          12 : 340.dasm (6.38% of base)
           8 : 139850.dasm (4.35% of base)
           8 : 139903.dasm (4.00% of base)
           8 : 217023.dasm (1.61% of base)
           8 : 217386.dasm (1.87% of base)
           8 : 7858.dasm (3.23% of base)
           8 : 179049.dasm (1.25% of base)
           8 : 18710.dasm (0.68% of base)

Top file improvements (bytes):
        -580 : 52646.dasm (-7.32% of base)
        -484 : 12593.dasm (-1.91% of base)
        -484 : 132.dasm (-4.48% of base)
        -320 : 192238.dasm (-1.75% of base)
        -300 : 52585.dasm (-3.59% of base)
        -296 : 117505.dasm (-3.43% of base)
        -292 : 117608.dasm (-5.97% of base)
        -284 : 143585.dasm (-21.91% of base)
        -236 : 52651.dasm (-5.15% of base)
        -216 : 52650.dasm (-4.16% of base)
        -200 : 52257.dasm (-42.02% of base)
        -192 : 155210.dasm (-51.61% of base)
        -184 : 78935.dasm (-4.28% of base)
        -176 : 168235.dasm (-6.50% of base)
        -168 : 55579.dasm (-63.64% of base)
        -160 : 95010.dasm (-3.91% of base)
        -156 : 87882.dasm (-3.80% of base)
        -156 : 94997.dasm (-4.09% of base)
        -152 : 115044.dasm (-2.52% of base)
        -152 : 155209.dasm (-27.34% of base)

7683 total files with Code Size differences (7644 improved, 39 regressed), 169 unchanged.

Top method regressions (bytes):
          32 ( 3.31% of base) : 107230.dasm - System.Xml.Schema.DatatypeImplementation:TryParseValue(System.Object,System.Xml.XmlNameTable,System.Xml.IXmlNamespaceResolver,byref):System.Exception:this
          16 ( 1.20% of base) : 214525.dasm - System.Reflection.TypeLoading.RoType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this
          16 ( 0.97% of base) : 76727.dasm - System.Text.Json.Nodes.JsonObject:InitializeIfRequired():this
          16 ( 0.45% of base) : 115440.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:WriteEnumAndArrayTypes():this
          12 ( 8.57% of base) : 139769.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions:GetIdentifierText(Microsoft.CodeAnalysis.SyntaxToken):System.String
          12 ( 0.90% of base) : 174002.dasm - Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:VisitElement(System.Text.Json.JsonElement):this
          12 ( 6.38% of base) : 340.dasm - System.Enum:Parse(System.String):double
          12 ( 6.38% of base) : 339.dasm - System.Enum:Parse(System.String):int
          12 ( 6.38% of base) : 342.dasm - System.Enum:Parse(System.String):long
          12 ( 6.25% of base) : 338.dasm - System.Enum:Parse(System.String):short
          12 ( 6.38% of base) : 341.dasm - System.Enum:Parse(System.String):System.Numerics.Vector`1[Single]
          12 ( 6.25% of base) : 337.dasm - System.Enum:Parse(System.String):ubyte
          12 ( 9.38% of base) : 166850.dasm - Xunit.TestFrameworkOptions:ToDebuggerDisplay(System.Object):System.String:this
           8 ( 0.68% of base) : 18710.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this
           8 ( 4.35% of base) : 139850.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToChar(System.Object):ushort
           8 ( 4.00% of base) : 139903.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToDate(System.Object):System.DateTime
           8 ( 3.23% of base) : 7858.dasm - Newtonsoft.Json.JsonTextWriter:SetIndentChars():int:this
           8 ( 1.25% of base) : 179049.dasm - System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo:GetTimestampAuthorityName():System.Nullable`1[ReadOnlyMemory`1]:this
           8 ( 1.61% of base) : 217023.dasm - System.Security.Permissions.PrincipalPermission:Union(System.Security.IPermission):System.Security.IPermission:this
           8 ( 1.87% of base) : 217386.dasm - System.Xml.Schema.XNodeValidator:ValidateNodes(System.Xml.Linq.XElement):this

Top method improvements (bytes):
        -580 (-7.32% of base) : 52646.dasm - System.Data.RBTree`1[Byte][System.Byte]:RBInsert(int,int,int,int,bool):int:this
        -484 (-1.91% of base) : 12593.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
        -484 (-4.48% of base) : 132.dasm - System.Text.RegularExpressions.RegexInterpreter:Go():this
        -320 (-1.75% of base) : 192238.dasm - System.Text.RegularExpressions.RegexCompiler:GenerateOneCode():this
        -300 (-3.59% of base) : 52585.dasm - System.Data.RBTree`1[__Canon][System.__Canon]:RBInsert(int,int,int,int,bool):int:this
        -296 (-3.43% of base) : 117505.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,int,int,int,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
        -292 (-5.97% of base) : 117608.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeLocalModifiersAndReportErrors(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.DiagnosticBag):this
        -284 (-21.91% of base) : 143585.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):bool
        -236 (-5.15% of base) : 52651.dasm - System.Data.RBTree`1[Byte][System.Byte]:RBDeleteFixup(int,int,int,int):int:this
        -216 (-4.16% of base) : 52650.dasm - System.Data.RBTree`1[Byte][System.Byte]:RBDeleteX(int,int,int):int:this
        -200 (-42.02% of base) : 52257.dasm - System.Data.DataView:GetDataRowViewFromRange(System.Data.Range):System.Data.DataRowView[]:this
        -192 (-51.61% of base) : 155210.dasm - System.Reflection.Metadata.Ecma335.StringHeap:StartsWith(System.Reflection.Metadata.StringHandle,System.String,System.Reflection.Metadata.MetadataStringDecoder,bool):bool:this
        -184 (-4.28% of base) : 78935.dasm - Microsoft.Diagnostics.Tracing.TraceEvent:PayloadString(int,System.IFormatProvider):System.String:this
        -176 (-6.50% of base) : 168235.dasm - System.Security.Cryptography.Xml.EncryptedXml:DecryptEncryptedKey(System.Security.Cryptography.Xml.EncryptedKey):System.Byte[]:this
        -168 (-63.64% of base) : 55579.dasm - System.Data.Common.SqlStringStorage:Compare(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int:this
        -160 (-3.91% of base) : 95010.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:ToXml(System.Text.StringBuilder):System.Text.StringBuilder:this
        -156 (-4.09% of base) : 94997.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata3TemplateHATraceData:ToXml(System.Text.StringBuilder):System.Text.StringBuilder:this
        -156 (-3.80% of base) : 87882.dasm - Microsoft.Diagnostics.Tracing.Parsers.MicrosoftWindowsTCPIP.TcpGlobalParametersArgs:ToXml(System.Text.StringBuilder):System.Text.StringBuilder:this
        -152 (-4.11% of base) : 94988.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata4TemplateHATraceData:ToXml(System.Text.StringBuilder):System.Text.StringBuilder:this
        -152 (-27.34% of base) : 155209.dasm - System.Reflection.Metadata.Ecma335.StringHeap:Equals(System.Reflection.Metadata.StringHandle,System.String,System.Reflection.Metadata.MetadataStringDecoder,bool):bool:this

Top method regressions (percentages):
          12 ( 9.38% of base) : 166850.dasm - Xunit.TestFrameworkOptions:ToDebuggerDisplay(System.Object):System.String:this
          12 ( 8.57% of base) : 139769.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions:GetIdentifierText(Microsoft.CodeAnalysis.SyntaxToken):System.String
          12 ( 6.38% of base) : 340.dasm - System.Enum:Parse(System.String):double
          12 ( 6.38% of base) : 339.dasm - System.Enum:Parse(System.String):int
          12 ( 6.38% of base) : 342.dasm - System.Enum:Parse(System.String):long
          12 ( 6.38% of base) : 341.dasm - System.Enum:Parse(System.String):System.Numerics.Vector`1[Single]
          12 ( 6.25% of base) : 338.dasm - System.Enum:Parse(System.String):short
          12 ( 6.25% of base) : 337.dasm - System.Enum:Parse(System.String):ubyte
           8 ( 4.35% of base) : 139850.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToChar(System.Object):ushort
           8 ( 4.00% of base) : 139903.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToDate(System.Object):System.DateTime
          32 ( 3.31% of base) : 107230.dasm - System.Xml.Schema.DatatypeImplementation:TryParseValue(System.Object,System.Xml.XmlNameTable,System.Xml.IXmlNamespaceResolver,byref):System.Exception:this
           8 ( 3.23% of base) : 7858.dasm - Newtonsoft.Json.JsonTextWriter:SetIndentChars():int:this
           4 ( 2.00% of base) : 352.dasm - System.Enum:Parse(System.String,bool):double
           4 ( 2.00% of base) : 351.dasm - System.Enum:Parse(System.String,bool):int
           4 ( 2.00% of base) : 354.dasm - System.Enum:Parse(System.String,bool):long
           4 ( 2.00% of base) : 353.dasm - System.Enum:Parse(System.String,bool):System.Numerics.Vector`1[Single]
           4 ( 1.96% of base) : 350.dasm - System.Enum:Parse(System.String,bool):short
           4 ( 1.96% of base) : 349.dasm - System.Enum:Parse(System.String,bool):ubyte
           8 ( 1.87% of base) : 217386.dasm - System.Xml.Schema.XNodeValidator:ValidateNodes(System.Xml.Linq.XElement):this
           8 ( 1.61% of base) : 217023.dasm - System.Security.Permissions.PrincipalPermission:Union(System.Security.IPermission):System.Security.IPermission:this

Top method improvements (percentages):
        -168 (-63.64% of base) : 55579.dasm - System.Data.Common.SqlStringStorage:Compare(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int:this
         -88 (-53.66% of base) : 53850.dasm - System.Data.SqlTypes.SqlSingle:op_Explicit(System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlSingle
        -192 (-51.61% of base) : 155210.dasm - System.Reflection.Metadata.Ecma335.StringHeap:StartsWith(System.Reflection.Metadata.StringHandle,System.String,System.Reflection.Metadata.MetadataStringDecoder,bool):bool:this
         -88 (-48.89% of base) : 53476.dasm - System.Data.SqlTypes.SqlDouble:op_Explicit(System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlDouble
        -200 (-42.02% of base) : 52257.dasm - System.Data.DataView:GetDataRowViewFromRange(System.Data.Range):System.Data.DataRowView[]:this
         -56 (-41.18% of base) : 123878.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.PEModuleBuilder:Translate(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.Cci.IParameterTypeInformation, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -56 (-40.00% of base) : 35788.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:Translate(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.Cci.IParameterTypeInformation, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -32 (-36.36% of base) : 58187.dasm - System.Runtime.Serialization.ExtensionDataReader:get_Item(int):System.String:this
         -32 (-36.36% of base) : 58188.dasm - System.Runtime.Serialization.ExtensionDataReader:get_Item(System.String):System.String:this
        -120 (-36.14% of base) : 13027.dasm - Microsoft.VisualBasic.ForEachEnum:MoveNext():bool:this
         -80 (-35.71% of base) : 16154.dasm - System.Net.Http.Headers.ObjectCollection`1[__Canon][System.__Canon]:Contains(System.__Canon):bool:this
         -64 (-35.56% of base) : 210310.dasm - System.Net.WebClient:ByteArrayHasPrefix(System.Byte[],System.Byte[]):bool
         -24 (-33.33% of base) : 199975.dasm - System.Formats.Cbor.CborWriter:WriteStartArray(System.Nullable`1[Int32]):this
         -24 (-33.33% of base) : 199980.dasm - System.Formats.Cbor.CborWriter:WriteStartMap(System.Nullable`1[Int32]):this
         -32 (-29.63% of base) : 139927.dasm - LocalState:get_Reachable():bool:this
         -56 (-27.45% of base) : 35720.dasm - Microsoft.CodeAnalysis.CSharp.Emit.MethodReference:Microsoft.Cci.ISignature.GetParameters(Microsoft.CodeAnalysis.Emit.EmitContext):System.Collections.Immutable.ImmutableArray`1[[Microsoft.Cci.IParameterTypeInformation, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -56 (-27.45% of base) : 123683.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.MethodReference:ISignatureGetParameters(Microsoft.CodeAnalysis.Emit.EmitContext):System.Collections.Immutable.ImmutableArray`1[[Microsoft.Cci.IParameterTypeInformation, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
        -152 (-27.34% of base) : 155209.dasm - System.Reflection.Metadata.Ecma335.StringHeap:Equals(System.Reflection.Metadata.StringHandle,System.String,System.Reflection.Metadata.MetadataStringDecoder,bool):bool:this
         -72 (-27.27% of base) : 54139.dasm - System.Data.SqlTypes.SqlByte:op_Explicit(System.Data.SqlTypes.SqlInt64):System.Data.SqlTypes.SqlByte
         -72 (-27.27% of base) : 53577.dasm - System.Data.SqlTypes.SqlInt16:op_Explicit(System.Data.SqlTypes.SqlInt64):System.Data.SqlTypes.SqlInt16

7683 total methods with Code Size differences (7644 improved, 39 regressed), 169 unchanged.


libraries_tests.pmi.Linux.arm64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 111317436 (overridden on cmd)
Total bytes of diff: 111254380 (overridden on cmd)
Total bytes of delta: -63056 (-0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          32 : 170479.dasm (1.29% of base)
          24 : 71425.dasm (1.16% of base)
          24 : 82311.dasm (1.05% of base)
          24 : 261556.dasm (1.06% of base)
          20 : 68539.dasm (1.36% of base)
          20 : 68540.dasm (1.36% of base)
          20 : 58696.dasm (1.98% of base)
          20 : 77387.dasm (2.37% of base)
          20 : 77390.dasm (2.18% of base)
          16 : 166329.dasm (1.46% of base)
          16 : 14420.dasm (0.44% of base)
          16 : 14424.dasm (0.48% of base)
          12 : 75652.dasm (0.33% of base)
           8 : 169600.dasm (4.35% of base)
           8 : 169653.dasm (4.00% of base)
           8 : 203323.dasm (0.64% of base)
           8 : 67679.dasm (0.16% of base)
           8 : 67729.dasm (0.18% of base)
           8 : 67730.dasm (0.18% of base)
           8 : 67731.dasm (0.17% of base)

Top file improvements (bytes):
        -500 : 49538.dasm (-24.18% of base)
        -484 : 92.dasm (-4.48% of base)
        -260 : 201148.dasm (-4.89% of base)
        -260 : 209050.dasm (-4.89% of base)
        -228 : 273013.dasm (-38.26% of base)
        -220 : 196137.dasm (-2.46% of base)
        -188 : 284995.dasm (-0.92% of base)
        -184 : 66936.dasm (-21.40% of base)
        -180 : 330488.dasm (-3.15% of base)
        -156 : 152558.dasm (-1.68% of base)
        -156 : 70714.dasm (-1.34% of base)
        -156 : 70846.dasm (-1.40% of base)
        -156 : 7536.dasm (-1.38% of base)
        -152 : 152388.dasm (-1.43% of base)
        -152 : 7373.dasm (-1.30% of base)
        -144 : 168888.dasm (-2.85% of base)
        -144 : 152429.dasm (-1.10% of base)
        -132 : 152387.dasm (-1.28% of base)
        -124 : 206573.dasm (-1.84% of base)
        -112 : 201206.dasm (-21.88% of base)

6387 total files with Code Size differences (6354 improved, 33 regressed), 127 unchanged.

Top method regressions (bytes):
          32 ( 1.29% of base) : 170479.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.CastAnalyzer:IsUnnecessary():bool:this
          24 ( 1.05% of base) : 82311.dasm - System.Net.Test.Common.LoopbackServer:IsDigestAuthTokenValid(System.String,System.String,Options):bool
          24 ( 1.06% of base) : 261556.dasm - System.Net.Test.Common.LoopbackServer:IsDigestAuthTokenValid(System.String,System.String,Options):bool
          24 ( 1.16% of base) : 71425.dasm - System.Text.Json.Serialization.Tests.DomTests:SerializeToDocument()
          20 ( 2.18% of base) : 77390.dasm - ListToArrayElementsConverter:Read(byref,System.Type,System.Text.Json.JsonSerializerOptions):System.String[]:this
          20 ( 2.37% of base) : 77387.dasm - ListToStringElementsConverter:Read(byref,System.Type,System.Text.Json.JsonSerializerOptions):System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]:this
          20 ( 1.98% of base) : 58696.dasm - Microsoft.CodeAnalysis.Differencing.EditScript`1[Vector`1][System.Numerics.Vector`1[System.Single]]:ProcessNode(System.Collections.Generic.List`1[Edit`1],System.Numerics.Vector`1[Single]):this
          20 ( 1.36% of base) : 68540.dasm - System.Text.Json.Serialization.Tests.ExtensionDataTests:<ExtensionFieldRoundTrip>g__Verify|6_0(byref)
          20 ( 1.36% of base) : 68539.dasm - System.Text.Json.Serialization.Tests.ExtensionDataTests:<ExtensionPropertyRoundTrip>g__Verify|4_0(byref)
          16 ( 0.48% of base) : 14424.dasm - <DeserializeIntoJsonElementProperty>d__65:MoveNext():this
          16 ( 0.44% of base) : 14420.dasm - <DeserializeIntoObjectProperty>d__63:MoveNext():this
          16 ( 1.46% of base) : 166329.dasm - ImTools.ImMapTree`1[__Canon][System.__Canon]:BalanceNewRightTree(ImTools.ImMapTree`1[__Canon]):ImTools.ImMapTree`1[__Canon]:this
          12 ( 0.33% of base) : 75652.dasm - <DeserializeIntoMultipleDictionaries>d__64:MoveNext():this
           8 ( 4.35% of base) : 169600.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToChar(System.Object):ushort
           8 ( 4.00% of base) : 169653.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToDate(System.Object):System.DateTime
           8 ( 0.64% of base) : 203323.dasm - System.Data.SqlClient.SqlDataReader:GetBytesAsync(int,System.Byte[],int,int,int,System.Threading.CancellationToken,byref):System.Threading.Tasks.Task`1[Int32]:this
           8 ( 0.64% of base) : 211027.dasm - System.Data.SqlClient.SqlDataReader:GetBytesAsync(int,System.Byte[],int,int,int,System.Threading.CancellationToken,byref):System.Threading.Tasks.Task`1[Int32]:this
           8 ( 0.62% of base) : 72237.dasm - System.Text.Json.Serialization.Tests.ClassWithComplexObjects:Verify():this
           8 ( 0.16% of base) : 67679.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:CustomEscaper(System.String,System.String):this
           8 ( 0.18% of base) : 67729.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapeAsciiCharacters(bool,bool):this

Top method improvements (bytes):
        -500 (-24.18% of base) : 49538.dasm - Roslyn.Utilities.ObjectWriter:WriteValue(System.Object):this
        -484 (-4.48% of base) : 92.dasm - System.Text.RegularExpressions.RegexInterpreter:Go():this
        -260 (-4.89% of base) : 201148.dasm - Microsoft.SqlServer.Server.ValueUtilsSmi:SetCompatibleValue(Microsoft.SqlServer.Server.SmiEventSink_Default,Microsoft.SqlServer.Server.ITypedSettersV3,int,Microsoft.SqlServer.Server.SmiMetaData,System.Object,int,int)
        -260 (-4.89% of base) : 209050.dasm - Microsoft.SqlServer.Server.ValueUtilsSmi:SetCompatibleValue(Microsoft.SqlServer.Server.SmiEventSink_Default,Microsoft.SqlServer.Server.ITypedSettersV3,int,Microsoft.SqlServer.Server.SmiMetaData,System.Object,int,int)
        -228 (-38.26% of base) : 273013.dasm - Lamar.IoC.Instances.GeneratedInstance:GetBuildPlan(Lamar.IoC.Scope):System.String:this
        -220 (-2.46% of base) : 196137.dasm - System.Memory.Tests.ReadOnlySequenceTestsEmpty:Empty_TryGet():this
        -188 (-0.92% of base) : 284995.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:<EmitCompleteGo>g__EmitOneCode|10_2(System.String,byref)
        -184 (-21.40% of base) : 66936.dasm - System.Text.Json.Tests.JsonDocumentTests:DefaultArrayEnumeratorDoesNotThrow()
        -180 (-3.15% of base) : 330488.dasm - System.Diagnostics.Metrics.Tests.MetricsTests:InstrumentPassingVariableTagsParametersTest(System.Diagnostics.Metrics.Instrument`1[Byte],System.Func`4[[System.Diagnostics.Metrics.Instrument`1[[System.Byte, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Diagnostics.DiagnosticSource, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51],[System.Byte, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]][], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Byte, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):this
        -156 (-1.68% of base) : 152558.dasm - System.Data.Tests.DataTableTest:ImportRowTest():this
        -156 (-1.34% of base) : 70714.dasm - System.Text.Json.Serialization.Tests.SimpleTestClass:Verify():this
        -156 (-1.40% of base) : 70846.dasm - System.Text.Json.Serialization.Tests.SimpleTestClassWithFields:Verify():this
        -156 (-1.38% of base) : 7536.dasm - System.Text.Json.Serialization.Tests.SimpleTestClassWithFields:Verify():this
        -152 (-1.43% of base) : 152388.dasm - System.Data.Tests.DataTableLoadRowTest:LoadRowTestOverwriteChanges():this
        -152 (-1.30% of base) : 7373.dasm - System.Text.Json.Serialization.Tests.SimpleTestClass:Verify():this
        -144 (-2.85% of base) : 168888.dasm - Registry:WithDefaultService(DryIoc.Factory,int,System.Type,int):Registry:this
        -144 (-1.10% of base) : 152429.dasm - System.Data.Tests.DataTableReaderTest:TestSchemaTable():this
        -132 (-1.28% of base) : 152387.dasm - System.Data.Tests.DataTableLoadRowTest:LoadRowTestUpsert():this
        -124 (-1.84% of base) : 206573.dasm - <Alpn_TestData>d__15:MoveNext():bool:this
        -112 (-21.88% of base) : 201206.dasm - Microsoft.SqlServer.Server.ValueUtilsSmi:GetBytesConversion(Microsoft.SqlServer.Server.SmiEventSink_Default,Microsoft.SqlServer.Server.ITypedGettersV3,int,Microsoft.SqlServer.Server.SmiMetaData,long,System.Byte[],int,int,bool):long

Top method regressions (percentages):
           8 ( 4.35% of base) : 169600.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToChar(System.Object):ushort
           8 ( 4.00% of base) : 169653.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToDate(System.Object):System.DateTime
           4 ( 3.23% of base) : 168209.dasm - DryIoc.Request:Equals(DryIoc.Request):bool:this
          20 ( 2.37% of base) : 77387.dasm - ListToStringElementsConverter:Read(byref,System.Type,System.Text.Json.JsonSerializerOptions):System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]:this
          20 ( 2.18% of base) : 77390.dasm - ListToArrayElementsConverter:Read(byref,System.Type,System.Text.Json.JsonSerializerOptions):System.String[]:this
          20 ( 1.98% of base) : 58696.dasm - Microsoft.CodeAnalysis.Differencing.EditScript`1[Vector`1][System.Numerics.Vector`1[System.Single]]:ProcessNode(System.Collections.Generic.List`1[Edit`1],System.Numerics.Vector`1[Single]):this
          16 ( 1.46% of base) : 166329.dasm - ImTools.ImMapTree`1[__Canon][System.__Canon]:BalanceNewRightTree(ImTools.ImMapTree`1[__Canon]):ImTools.ImMapTree`1[__Canon]:this
          20 ( 1.36% of base) : 68540.dasm - System.Text.Json.Serialization.Tests.ExtensionDataTests:<ExtensionFieldRoundTrip>g__Verify|6_0(byref)
          20 ( 1.36% of base) : 68539.dasm - System.Text.Json.Serialization.Tests.ExtensionDataTests:<ExtensionPropertyRoundTrip>g__Verify|4_0(byref)
          32 ( 1.29% of base) : 170479.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.CastAnalyzer:IsUnnecessary():bool:this
          24 ( 1.16% of base) : 71425.dasm - System.Text.Json.Serialization.Tests.DomTests:SerializeToDocument()
          24 ( 1.06% of base) : 261556.dasm - System.Net.Test.Common.LoopbackServer:IsDigestAuthTokenValid(System.String,System.String,Options):bool
          24 ( 1.05% of base) : 82311.dasm - System.Net.Test.Common.LoopbackServer:IsDigestAuthTokenValid(System.String,System.String,Options):bool
           4 ( 0.76% of base) : 208393.dasm - Microsoft.Diagnostics.Runtime.DbgEngDataReader:CreateClient(Microsoft.Diagnostics.Runtime.Interop.IDebugClient):this
           8 ( 0.64% of base) : 203323.dasm - System.Data.SqlClient.SqlDataReader:GetBytesAsync(int,System.Byte[],int,int,int,System.Threading.CancellationToken,byref):System.Threading.Tasks.Task`1[Int32]:this
           8 ( 0.64% of base) : 211027.dasm - System.Data.SqlClient.SqlDataReader:GetBytesAsync(int,System.Byte[],int,int,int,System.Threading.CancellationToken,byref):System.Threading.Tasks.Task`1[Int32]:this
           8 ( 0.62% of base) : 72237.dasm - System.Text.Json.Serialization.Tests.ClassWithComplexObjects:Verify():this
           4 ( 0.56% of base) : 313205.dasm - <GetAddrInfoAsync_EmptyHost>d__16:MoveNext():this
           4 ( 0.56% of base) : 313207.dasm - <GetAddrInfoAsync_HostName>d__17:MoveNext():this
          16 ( 0.48% of base) : 14424.dasm - <DeserializeIntoJsonElementProperty>d__65:MoveNext():this

Top method improvements (percentages):
         -84 (-70.00% of base) : 64084.dasm - AbstractComplexTrivia:WithSpace(int,Microsoft.CodeAnalysis.Formatting.FormattingContext,Microsoft.CodeAnalysis.Formatting.ChainedFormattingRules):Microsoft.CodeAnalysis.Formatting.TriviaData:this
        -228 (-38.26% of base) : 273013.dasm - Lamar.IoC.Instances.GeneratedInstance:GetBuildPlan(Lamar.IoC.Scope):System.String:this
         -36 (-36.00% of base) : 297894.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object):int:this
         -36 (-36.00% of base) : 310536.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object):int:this
         -36 (-36.00% of base) : 175207.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object):int:this
         -36 (-36.00% of base) : 106470.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object):int:this
         -36 (-36.00% of base) : 222348.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object):int:this
         -36 (-36.00% of base) : 297895.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object,System.Collections.IComparer):int:this
         -36 (-36.00% of base) : 310537.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object,System.Collections.IComparer):int:this
         -36 (-36.00% of base) : 222349.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object,System.Collections.IComparer):int:this
         -36 (-36.00% of base) : 175208.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object,System.Collections.IComparer):int:this
         -36 (-36.00% of base) : 106471.dasm - System.Collections.Tests.SimpleInt:CompareTo(System.Object,System.Collections.IComparer):int:this
         -80 (-35.71% of base) : 163331.dasm - System.Net.Http.Headers.ObjectCollection`1[__Canon][System.__Canon]:Contains(System.__Canon):bool:this
         -36 (-34.62% of base) : 297896.dasm - System.Collections.Tests.SimpleInt:Equals(System.Object,System.Collections.IEqualityComparer):bool:this
         -36 (-34.62% of base) : 310538.dasm - System.Collections.Tests.SimpleInt:Equals(System.Object,System.Collections.IEqualityComparer):bool:this
         -36 (-34.62% of base) : 106472.dasm - System.Collections.Tests.SimpleInt:Equals(System.Object,System.Collections.IEqualityComparer):bool:this
         -36 (-34.62% of base) : 222350.dasm - System.Collections.Tests.SimpleInt:Equals(System.Object,System.Collections.IEqualityComparer):bool:this
         -36 (-34.62% of base) : 175209.dasm - System.Collections.Tests.SimpleInt:Equals(System.Object,System.Collections.IEqualityComparer):bool:this
        -108 (-27.00% of base) : 57018.dasm - Microsoft.CodeAnalysis.LanguageServices.AbstractSyntaxFacts:ContainsInterleavedDirective(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.SyntaxNode, Microsoft.CodeAnalysis, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Threading.CancellationToken):bool:this
         -56 (-26.92% of base) : 201066.dasm - Microsoft.SqlServer.Server.ValueUtilsSmi:SetSqlInt64_Unchecked(Microsoft.SqlServer.Server.SmiEventSink_Default,Microsoft.SqlServer.Server.ITypedSettersV3,int,System.Data.SqlTypes.SqlInt64)

6387 total methods with Code Size differences (6354 improved, 33 regressed), 127 unchanged.


            mov     w1, w1
            lsl     x1, x1, #2
to
            ubfiz   x1, x1, #2, dotnet#32
@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Oct 24, 2021
@ghost
Copy link

ghost commented Oct 24, 2021

Tagging subscribers to this area: @JulieLeeMSFT
See info in area-owners.md if you want to be subscribed.

Issue Details

Just an experiment to fold

            mov     w1, w1
            lsl     x1, x1, #2

into

            ubfiz   x1, x1, #2, #32

this patterns always shows up when we access arrays by index. It needs a different solution, but I'm just wondering if it passes CI tests.

SPMI diffs are huge: -30k - -100k bytes of code

Author: EgorBo
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@EgorBo
Copy link
Member Author

EgorBo commented Oct 25, 2021

@dotnet/jit-contrib FYI - this change passes CI tests and diff is quite huge. However, a proper fix for array access should save even more so I'd expect up to ~200kb diffs or so. For context:

image

@EgorBo EgorBo closed this Oct 25, 2021
@ghost ghost locked as resolved and limited conversation to collaborators Nov 24, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant