Skip to content

Arm64: fold mov+lsl to ubfiz - #60813

Closed
EgorBo wants to merge 1 commit into
dotnet:mainfrom
EgorBo:zeroext-lsl
Closed

Arm64: fold mov+lsl to ubfiz#60813
EgorBo wants to merge 1 commit into
dotnet:mainfrom
EgorBo:zeroext-lsl

Conversation

@EgorBo

@EgorBoEgorBo commented Oct 24, 2021

Copy link
Copy Markdown
Member

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
@ghostghost 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
Copy Markdown

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

EgorBo commented Oct 25, 2021

Copy link
Copy Markdown
MemberAuthor

@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

@EgorBoEgorBo closed this Oct 25, 2021
@ghostghost locked as resolved and limited conversation to collaborators Nov 24, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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

@EgorBo