Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JIT: extend redundant relop to handle side effects #61275

Merged
merged 2 commits into from
Nov 9, 2021

Conversation

AndyAyersMS
Copy link
Member

Handle the case where the side-effecting redundant relop appears
just before the jump tree relop.

Also revamp how we search for related VNs so it can be done as a
search loop.

Handle the case where the side-effecting redundant relop appears
just before the jump tree relop.

Also revamp how we search for related VNs so it can be done as a
search loop.
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Nov 6, 2021
@ghost
Copy link

ghost commented Nov 6, 2021

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

Issue Details

Handle the case where the side-effecting redundant relop appears
just before the jump tree relop.

Also revamp how we search for related VNs so it can be done as a
search loop.

Author: AndyAyersMS
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@AndyAyersMS
Copy link
Member Author

cc @dotnet/jit-contrib

SPMI diffs (as before, somewhat inflated because of the checked SPC)

aspnet.run.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13648293 (overridden on cmd)
Total bytes of diff: 13642555 (overridden on cmd)
Total bytes of delta: -5738 (-0.04 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
           3 : 15409.dasm (2.50% of base)
           3 : 10361.dasm (0.98% of base)
           3 : 30168.dasm (0.98% of base)
           3 : 33767.dasm (0.98% of base)
           3 : 10363.dasm (2.50% of base)

Top file improvements (bytes):
         -60 : 33947.dasm (-1.27% of base)
         -60 : 39682.dasm (-1.12% of base)
         -58 : 39944.dasm (-0.58% of base)
         -52 : 34030.dasm (-0.52% of base)
         -44 : 14821.dasm (-6.81% of base)
         -43 : 8220.dasm (-8.55% of base)
         -43 : 20541.dasm (-0.45% of base)
         -43 : 16061.dasm (-8.55% of base)
         -40 : 10064.dasm (-0.80% of base)
         -39 : 39942.dasm (-0.73% of base)
         -38 : 39674.dasm (-14.79% of base)
         -38 : 14251.dasm (-14.79% of base)
         -38 : 9610.dasm (-14.79% of base)
         -37 : 34024.dasm (-0.73% of base)
         -36 : 14882.dasm (-0.56% of base)
         -35 : 29711.dasm (-0.90% of base)
         -33 : 34035.dasm (-1.08% of base)
         -32 : 17535.dasm (-11.55% of base)
         -32 : 23893.dasm (-11.55% of base)
         -30 : 34032.dasm (-0.96% of base)

485 total files with Code Size differences (480 improved, 5 regressed), 26 unchanged.

Top method regressions (bytes):
           3 ( 0.98% of base) : 10361.dasm - ASCIIUtility:WidenAsciiToUtf16(long,long,long):long
           3 ( 0.98% of base) : 30168.dasm - ASCIIUtility:WidenAsciiToUtf16(long,long,long):long
           3 ( 0.98% of base) : 33767.dasm - ASCIIUtility:WidenAsciiToUtf16(long,long,long):long
           3 ( 2.50% of base) : 15409.dasm - ASCIIUtility:WidenAsciiToUtf16_Intrinsified(long,long,long):long
           3 ( 2.50% of base) : 10363.dasm - ASCIIUtility:WidenAsciiToUtf16_Intrinsified(long,long,long):long

Top method improvements (bytes):
         -60 (-1.27% of base) : 33947.dasm - NpgsqlLTreeTranslator:.ctor(IRelationalTypeMappingSource,NpgsqlSqlExpressionFactory,IModel):this
         -60 (-1.12% of base) : 39682.dasm - NpgsqlLTreeTranslator:.ctor(IRelationalTypeMappingSource,NpgsqlSqlExpressionFactory,IModel):this
         -58 (-0.58% of base) : 39944.dasm - NpgsqlMethodCallTranslatorProvider:.ctor(RelationalMethodCallTranslatorProviderDependencies,IModel,INpgsqlOptions):this
         -52 (-0.52% of base) : 34030.dasm - NpgsqlMethodCallTranslatorProvider:.ctor(RelationalMethodCallTranslatorProviderDependencies,IModel,INpgsqlOptions):this
         -44 (-6.81% of base) : 14821.dasm - DateHeaderParser:TryParseValue(String,Object,byref,byref):bool:this
         -43 (-0.45% of base) : 20541.dasm - <NextResult>d__47:MoveNext():this
         -43 (-8.55% of base) : 8220.dasm - StringUtilities:BytesOrdinalEqualsStringAndAscii(String,ReadOnlySpan`1):bool
         -43 (-8.55% of base) : 16061.dasm - StringUtilities:BytesOrdinalEqualsStringAndAscii(String,ReadOnlySpan`1):bool
         -40 (-0.80% of base) : 10064.dasm - <CopyAsync>d__2:MoveNext():this
         -39 (-0.73% of base) : 39942.dasm - NpgsqlMemberTranslatorProvider:.ctor(RelationalMemberTranslatorProviderDependencies,IModel,IRelationalTypeMappingSource,INpgsqlOptions):this
         -38 (-14.79% of base) : 39674.dasm - MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1
         -38 (-14.79% of base) : 14251.dasm - MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1
         -38 (-14.79% of base) : 9610.dasm - MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1
         -37 (-0.73% of base) : 34024.dasm - NpgsqlMemberTranslatorProvider:.ctor(RelationalMemberTranslatorProviderDependencies,IModel,IRelationalTypeMappingSource,INpgsqlOptions):this
         -36 (-0.56% of base) : 14882.dasm - <CopyAsync>d__2:MoveNext():this
         -35 (-0.90% of base) : 29711.dasm - HttpResponseWritingExtensions:WriteAsync(HttpResponse,String,Encoding,CancellationToken):Task
         -33 (-1.08% of base) : 34035.dasm - NpgsqlNetworkTranslator:.ctor(IRelationalTypeMappingSource,NpgsqlSqlExpressionFactory,IModel):this
         -32 (-11.55% of base) : 17535.dasm - NpgsqlSqlGenerationHelper:RequiresQuoting(String):bool
         -32 (-11.55% of base) : 23893.dasm - NpgsqlSqlGenerationHelper:RequiresQuoting(String):bool
         -30 (-6.42% of base) : 14735.dasm - HttpDateParser:TryParse(ReadOnlySpan`1,byref):bool

Top method regressions (percentages):
           3 ( 2.50% of base) : 15409.dasm - ASCIIUtility:WidenAsciiToUtf16_Intrinsified(long,long,long):long
           3 ( 2.50% of base) : 10363.dasm - ASCIIUtility:WidenAsciiToUtf16_Intrinsified(long,long,long):long
           3 ( 0.98% of base) : 10361.dasm - ASCIIUtility:WidenAsciiToUtf16(long,long,long):long
           3 ( 0.98% of base) : 30168.dasm - ASCIIUtility:WidenAsciiToUtf16(long,long,long):long
           3 ( 0.98% of base) : 33767.dasm - ASCIIUtility:WidenAsciiToUtf16(long,long,long):long

Top method improvements (percentages):
          -8 (-21.62% of base) : 38959.dasm - CancellationToken:ThrowIfCancellationRequested():this
          -8 (-21.62% of base) : 13939.dasm - CancellationToken:ThrowIfCancellationRequested():this
          -8 (-21.05% of base) : 6211.dasm - CancellationToken:ThrowIfCancellationRequested():this
          -8 (-21.05% of base) : 28722.dasm - CancellationToken:ThrowIfCancellationRequested():this
          -8 (-21.05% of base) : 41497.dasm - CancellationToken:ThrowIfCancellationRequested():this
          -8 (-21.05% of base) : 4744.dasm - CancellationToken:ThrowIfCancellationRequested():this
          -8 (-21.05% of base) : 42664.dasm - CancellationToken:ThrowIfCancellationRequested():this
          -8 (-20.51% of base) : 14430.dasm - CancellationHelper:ThrowIfCancellationRequested(CancellationToken)
          -8 (-20.51% of base) : 10338.dasm - CancellationHelper:ThrowIfCancellationRequested(CancellationToken)
          -8 (-16.00% of base) : 24076.dasm - Node:get_Is4Node():bool:this
         -38 (-14.79% of base) : 39674.dasm - MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1
         -38 (-14.79% of base) : 14251.dasm - MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1
         -38 (-14.79% of base) : 9610.dasm - MemoryExtensions:Trim(ReadOnlySpan`1):ReadOnlySpan`1
          -8 (-13.56% of base) : 24291.dasm - Node:get_Is2Node():bool:this
         -10 (-12.66% of base) : 15382.dasm - UnmanagedMemoryStream:EnsureReadable():this
         -10 (-12.66% of base) : 38559.dasm - UnmanagedMemoryStream:EnsureReadable():this
         -32 (-11.55% of base) : 17535.dasm - NpgsqlSqlGenerationHelper:RequiresQuoting(String):bool
         -32 (-11.55% of base) : 23893.dasm - NpgsqlSqlGenerationHelper:RequiresQuoting(String):bool
          -8 (-11.43% of base) : 40827.dasm - HttpResponsePipeWriter:ValidateState(CancellationToken):this
          -8 (-11.43% of base) : 14859.dasm - HttpResponsePipeWriter:ValidateState(CancellationToken):this

485 total methods with Code Size differences (480 improved, 5 regressed), 26 unchanged.


benchmarks.run.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7151027 (overridden on cmd)
Total bytes of diff: 7122053 (overridden on cmd)
Total bytes of delta: -28974 (-0.41 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
           6 : 1397.dasm (2.30% of base)
           6 : 26161.dasm (0.43% of base)
           5 : 4252.dasm (0.42% of base)
           5 : 18259.dasm (2.07% of base)
           3 : 4245.dasm (0.66% of base)
           1 : 722.dasm (0.04% of base)

Top file improvements (bytes):
        -555 : 1489.dasm (-7.74% of base)
        -412 : 9944.dasm (-14.33% of base)
        -404 : 1296.dasm (-4.33% of base)
        -264 : 17181.dasm (-2.84% of base)
        -240 : 17239.dasm (-5.73% of base)
        -238 : 5870.dasm (-36.73% of base)
        -234 : 3196.dasm (-13.59% of base)
        -217 : 21157.dasm (-9.99% of base)
        -208 : 6916.dasm (-36.56% of base)
        -202 : 170.dasm (-19.42% of base)
        -200 : 5763.dasm (-14.53% of base)
        -185 : 20677.dasm (-20.93% of base)
        -181 : 22193.dasm (-11.94% of base)
        -181 : 14469.dasm (-8.86% of base)
        -170 : 293.dasm (-5.71% of base)
        -169 : 7295.dasm (-19.38% of base)
        -168 : 8221.dasm (-36.68% of base)
        -160 : 15409.dasm (-2.98% of base)
        -160 : 18080.dasm (-4.13% of base)
        -159 : 11537.dasm (-12.72% of base)

1032 total files with Code Size differences (1026 improved, 6 regressed), 42 unchanged.

Top method regressions (bytes):
           6 ( 0.43% of base) : 26161.dasm - System.Diagnostics.Tracing.EventSource:DecodeObjects(System.Object[],System.Type[],long)
           6 ( 2.30% of base) : 1397.dasm - System.Text.ASCIIUtility:WidenAsciiToUtf16_Intrinsified(long,long,long):long
           5 ( 2.07% of base) : 18259.dasm - Microsoft.CodeAnalysis.ConcurrentCache`2[BinderCacheKey,__Canon][Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderCacheKey,System.__Canon]:TryAdd(BinderCacheKey,System.__Canon):bool:this
           5 ( 0.42% of base) : 4252.dasm - System.Diagnostics.Activity:Create(System.Diagnostics.ActivitySource,System.String,int,System.String,System.Diagnostics.ActivityContext,System.Collections.Generic.IEnumerable`1[[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.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,System.Diagnostics.ActivityTagsCollection,int,bool,int):System.Diagnostics.Activity
           3 ( 0.66% of base) : 4245.dasm - System.Diagnostics.ActivityCreationOptions`1[ActivityContext][System.Diagnostics.ActivityContext]:.ctor(System.Diagnostics.ActivitySource,System.String,System.Diagnostics.ActivityContext,int,System.Collections.Generic.IEnumerable`1[[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.Collections.Generic.IEnumerable`1[ActivityLink],int):this
           1 ( 0.04% of base) : 722.dasm - System.Number:Dragon4(long,int,int,bool,int,bool,System.Span`1[Byte],byref):int

Top method improvements (bytes):
        -555 (-7.74% of base) : 1489.dasm - ProtoBuf.Meta.MetaType:ApplyDefaultBehaviourImpl(int):this
        -412 (-14.33% of base) : 9944.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this
        -404 (-4.33% of base) : 1296.dasm - DynamicClass:Regex2_Go(System.Text.RegularExpressions.RegexRunner)
        -264 (-2.84% of base) : 17181.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
        -240 (-5.73% of base) : 17239.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
        -238 (-36.73% of base) : 5870.dasm - System.Text.RegularExpressions.RegexCharClass:<MayOverlap>g__KnownDistinctSets|72_0(System.String,System.String):bool
        -234 (-13.59% of base) : 3196.dasm - NamespaceManager:AddNamespace(System.String,System.String,System.Xml.XmlDictionaryString):this
        -217 (-9.99% of base) : 21157.dasm - DynamicClass:ReadMyEventsListerItemTaskFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object
        -208 (-36.56% of base) : 6916.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsConcurrentOrObservableCollection(System.Type):bool
        -202 (-19.42% of base) : 170.dasm - System.IO.StreamReader:DetectEncoding():this
        -200 (-14.53% of base) : 5763.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsImmutableEnumerableType(System.Type,bool):bool
        -185 (-20.93% of base) : 20677.dasm - System.Xml.Serialization.AccessorMapping:ElementsMatch(System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.ElementAccessor[]):bool
        -181 (-11.94% of base) : 22193.dasm - DynamicClass:ReadKeyValueOfintstringFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object
        -181 (-8.86% of base) : 14469.dasm - DynamicClass:ReadLoginViewModelFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object
        -170 (-5.71% of base) : 293.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateMethods(Filter):System.Reflection.RuntimeMethodInfo[]:this
        -169 (-19.38% of base) : 7295.dasm - System.Xml.Serialization.TypeScope:ShouldBeReplaced(System.Reflection.MemberInfo,System.Type,byref):bool
        -168 (-36.68% of base) : 8221.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CheckPropertyName(Newtonsoft.Json.JsonReader,System.String):bool:this
        -160 (-2.98% of base) : 15409.dasm - DynamicClass:Regex4_Go(System.Text.RegularExpressions.RegexRunner)
        -160 (-4.13% of base) : 18080.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKind():int:this
        -159 (-12.72% of base) : 11537.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteEndAttribute():this

Top method regressions (percentages):
           6 ( 2.30% of base) : 1397.dasm - System.Text.ASCIIUtility:WidenAsciiToUtf16_Intrinsified(long,long,long):long
           5 ( 2.07% of base) : 18259.dasm - Microsoft.CodeAnalysis.ConcurrentCache`2[BinderCacheKey,__Canon][Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderCacheKey,System.__Canon]:TryAdd(BinderCacheKey,System.__Canon):bool:this
           3 ( 0.66% of base) : 4245.dasm - System.Diagnostics.ActivityCreationOptions`1[ActivityContext][System.Diagnostics.ActivityContext]:.ctor(System.Diagnostics.ActivitySource,System.String,System.Diagnostics.ActivityContext,int,System.Collections.Generic.IEnumerable`1[[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.Collections.Generic.IEnumerable`1[ActivityLink],int):this
           6 ( 0.43% of base) : 26161.dasm - System.Diagnostics.Tracing.EventSource:DecodeObjects(System.Object[],System.Type[],long)
           5 ( 0.42% of base) : 4252.dasm - System.Diagnostics.Activity:Create(System.Diagnostics.ActivitySource,System.String,int,System.String,System.Diagnostics.ActivityContext,System.Collections.Generic.IEnumerable`1[[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.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,System.Diagnostics.ActivityTagsCollection,int,bool,int):System.Diagnostics.Activity
           1 ( 0.04% of base) : 722.dasm - System.Number:Dragon4(long,int,int,bool,int,bool,System.Span`1[Byte],byref):int

Top method improvements (percentages):
         -72 (-58.54% of base) : 3925.dasm - System.String:Equals(System.String):bool:this
         -67 (-56.30% of base) : 228.dasm - System.String:Equals(System.String,System.String):bool
         -72 (-49.66% of base) : 812.dasm - System.String:Equals(System.Object):bool:this
         -51 (-43.97% of base) : 4232.dasm - <>c:<.cctor>b__6_0(System.Diagnostics.ActivitySource):bool:this
         -58 (-41.43% of base) : 3306.dasm - XmlNode:IsNamespaceUri(System.Xml.XmlDictionaryString):bool:this
         -79 (-37.80% of base) : 11552.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:TrySetWritingNameWithMapping(System.String,System.String):bool:this
        -238 (-36.73% of base) : 5870.dasm - System.Text.RegularExpressions.RegexCharClass:<MayOverlap>g__KnownDistinctSets|72_0(System.String,System.String):bool
        -168 (-36.68% of base) : 8221.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CheckPropertyName(Newtonsoft.Json.JsonReader,System.String):bool:this
        -208 (-36.56% of base) : 6916.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsConcurrentOrObservableCollection(System.Type):bool
        -137 (-35.49% of base) : 11416.dasm - System.Globalization.DateTimeFormatInfoScanner:EqualStringArrays(System.String[],System.String[]):bool
         -42 (-33.60% of base) : 7266.dasm - System.Xml.Serialization.CodeGenerator:IsNullableGenericType(System.Type):bool
         -89 (-33.21% of base) : 6915.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:ShouldSkipSerializing(System.Type):bool
         -42 (-32.81% of base) : 6131.dasm - <>c:<.cctor>b__6_0(System.Reflection.MethodInfo):bool:this
         -90 (-31.80% of base) : 211.dasm - System.Globalization.CultureData:get_CultureName():System.String:this
         -48 (-31.58% of base) : 6831.dasm - Newtonsoft.Json.Converters.RegexConverter:CanConvert(System.Type):bool:this
         -45 (-31.47% of base) : 17344.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsVar(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):bool
         -70 (-30.97% of base) : 8533.dasm - System.Runtime.Serialization.DataContract:IsBuiltInNamespace(System.String):bool
         -20 (-30.77% of base) : 20454.dasm - IncrementalBinder:TryGetBoundNodeFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this
         -66 (-29.60% of base) : 10453.dasm - System.LocalAppContextSwitches:GetSwitchDefaultValue(System.String):bool
         -66 (-29.60% of base) : 93.dasm - System.LocalAppContextSwitches:GetSwitchDefaultValue(System.String):bool

1032 total methods with Code Size differences (1026 improved, 6 regressed), 42 unchanged.


coreclr_tests.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 124162882 (overridden on cmd)
Total bytes of diff: 124110497 (overridden on cmd)
Total bytes of delta: -52385 (-0.04 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          84 : 165493.dasm (8.00% of base)
           8 : 165552.dasm (3.08% of base)
           6 : 237697.dasm (17.14% of base)

Top file improvements (bytes):
        -800 : 247650.dasm (-13.83% of base)
        -800 : 247652.dasm (-13.81% of base)
        -800 : 247660.dasm (-13.88% of base)
        -800 : 247662.dasm (-13.88% of base)
        -532 : 244134.dasm (-28.27% of base)
        -486 : 237513.dasm (-9.83% of base)
        -482 : 198211.dasm (-9.60% of base)
        -367 : 244096.dasm (-16.01% of base)
        -367 : 244097.dasm (-16.01% of base)
        -367 : 244098.dasm (-16.01% of base)
        -367 : 244100.dasm (-16.01% of base)
        -367 : 244101.dasm (-16.01% of base)
        -367 : 244102.dasm (-16.01% of base)
        -367 : 244083.dasm (-16.01% of base)
        -367 : 244084.dasm (-16.01% of base)
        -367 : 244085.dasm (-16.01% of base)
        -359 : 86565.dasm (-18.79% of base)
        -326 : 232990.dasm (-22.51% of base)
        -321 : 238062.dasm (-24.65% of base)
        -317 : 238061.dasm (-23.60% of base)

944 total files with Code Size differences (941 improved, 3 regressed), 62 unchanged.

Top method regressions (bytes):
          84 ( 8.00% of base) : 165493.dasm - NativeVarargTest.VarArg:TestPassingManyFloatsManaged(System.Single[]):bool
           8 ( 3.08% of base) : 165552.dasm - NativeVarargTest.VarArg:TestPassingFloatsAndDoublesManaged(System.Single[],System.Double[]):bool
           6 (17.14% of base) : 237697.dasm - InlineBool.Program:Id74(bool):bool

Top method improvements (bytes):
        -800 (-13.83% of base) : 247650.dasm - _mul:main(System.String[]):int
        -800 (-13.81% of base) : 247652.dasm - _mul:main(System.String[]):int
        -800 (-13.88% of base) : 247660.dasm - _sub:main(System.String[]):int
        -800 (-13.88% of base) : 247662.dasm - _sub:main(System.String[]):int
        -532 (-28.27% of base) : 244134.dasm - TestClass:LoadTypeInternal(System.String):System.Type
        -486 (-9.83% of base) : 237513.dasm - Test:bar(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String):int
        -482 (-9.60% of base) : 198211.dasm - TailcallVerify.Program:Run(System.String):int
        -367 (-16.01% of base) : 244098.dasm - Test:TestGenInterface_GenType()
        -367 (-16.01% of base) : 244102.dasm - Test:TestGenInterface_GenType()
        -367 (-16.01% of base) : 244085.dasm - Test:TestGenInterface_GenType()
        -367 (-16.01% of base) : 244097.dasm - Test:TestGenInterface_NonGenType()
        -367 (-16.01% of base) : 244101.dasm - Test:TestGenInterface_NonGenType()
        -367 (-16.01% of base) : 244084.dasm - Test:TestGenInterface_NonGenType()
        -367 (-16.01% of base) : 244096.dasm - Test:TestNonGenInterface_GenType()
        -367 (-16.01% of base) : 244100.dasm - Test:TestNonGenInterface_GenType()
        -367 (-16.01% of base) : 244083.dasm - Test:TestNonGenInterface_GenType()
        -359 (-18.79% of base) : 86565.dasm - Test:Main():int
        -326 (-22.51% of base) : 232990.dasm - GC_Microbenchmarks.GCMicroBench:ParseArgs(System.String[]):bool:this
        -321 (-24.65% of base) : 238062.dasm - Test2:TestDiffObjRef():bool
        -317 (-23.60% of base) : 238061.dasm - Test2:TestSameObjRef():bool

Top method regressions (percentages):
           6 (17.14% of base) : 237697.dasm - InlineBool.Program:Id74(bool):bool
          84 ( 8.00% of base) : 165493.dasm - NativeVarargTest.VarArg:TestPassingManyFloatsManaged(System.Single[]):bool
           8 ( 3.08% of base) : 165552.dasm - NativeVarargTest.VarArg:TestPassingFloatsAndDoublesManaged(System.Single[],System.Double[]):bool

Top method improvements (percentages):
         -51 (-39.84% of base) : 190621.dasm - decimaldiv:i_f(System.String):int
         -51 (-39.84% of base) : 190623.dasm - decimaldiv:l_f(System.String):long
         -51 (-39.84% of base) : 190622.dasm - decimaldiv:ui_f(System.String):int
         -51 (-39.84% of base) : 190624.dasm - decimaldiv:ul_f(System.String):long
         -51 (-39.84% of base) : 190696.dasm - decimalrem:i_f(System.String):int
         -51 (-39.84% of base) : 190698.dasm - decimalrem:l_f(System.String):long
         -51 (-39.84% of base) : 190697.dasm - decimalrem:ui_f(System.String):int
         -51 (-39.84% of base) : 190699.dasm - decimalrem:ul_f(System.String):long
         -51 (-39.84% of base) : 217484.dasm - i4div:i_f(System.String):int
         -51 (-39.84% of base) : 217486.dasm - i4div:l_f(System.String):long
         -51 (-39.84% of base) : 217485.dasm - i4div:ui_f(System.String):int
         -51 (-39.84% of base) : 217487.dasm - i4div:ul_f(System.String):long
         -51 (-39.84% of base) : 217607.dasm - i4rem:i_f(System.String):int
         -51 (-39.84% of base) : 217609.dasm - i4rem:l_f(System.String):long
         -51 (-39.84% of base) : 217608.dasm - i4rem:ui_f(System.String):int
         -51 (-39.84% of base) : 217610.dasm - i4rem:ul_f(System.String):long
         -51 (-39.84% of base) : 217504.dasm - i8div:i_f(System.String):int
         -51 (-39.84% of base) : 217506.dasm - i8div:l_f(System.String):long
         -51 (-39.84% of base) : 217505.dasm - i8div:ui_f(System.String):int
         -51 (-39.84% of base) : 217507.dasm - i8div:ul_f(System.String):long

944 total methods with Code Size differences (941 improved, 3 regressed), 62 unchanged.


libraries.crossgen2.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34283537 (overridden on cmd)
Total bytes of diff: 34263305 (overridden on cmd)
Total bytes of delta: -20232 (-0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          44 : 125627.dasm (3.84% of base)
          44 : 125791.dasm (3.84% of base)
          44 : 126022.dasm (3.84% of base)
          43 : 105822.dasm (3.64% of base)
          41 : 105797.dasm (3.42% of base)
          38 : 125801.dasm (3.71% of base)
          34 : 126035.dasm (3.26% of base)
          34 : 126492.dasm (3.26% of base)
          28 : 125737.dasm (2.81% of base)
          28 : 125871.dasm (2.85% of base)
          25 : 61418.dasm (2.72% of base)
          11 : 122236.dasm (1.11% of base)
          10 : 126249.dasm (0.76% of base)
           9 : 107010.dasm (0.74% of base)
           8 : 88135.dasm (3.77% of base)
           7 : 105714.dasm (0.47% of base)
           5 : 103079.dasm (0.60% of base)
           4 : 105745.dasm (0.57% of base)
           4 : 21876.dasm (0.80% of base)
           4 : 91697.dasm (1.08% of base)

Top file improvements (bytes):
        -170 : 108311.dasm (-18.10% of base)
        -136 : 54443.dasm (-7.09% of base)
         -83 : 124084.dasm (-59.71% of base)
         -80 : 109032.dasm (-1.74% of base)
         -74 : 108288.dasm (-1.77% of base)
         -68 : 124082.dasm (-54.40% of base)
         -66 : 115290.dasm (-3.94% of base)
         -64 : 23811.dasm (-2.05% of base)
         -64 : 166087.dasm (-12.88% of base)
         -64 : 22700.dasm (-2.15% of base)
         -63 : 61937.dasm (-6.92% of base)
         -63 : 121046.dasm (-5.22% of base)
         -60 : 93293.dasm (-11.07% of base)
         -60 : 138210.dasm (-1.48% of base)
         -57 : 36895.dasm (-1.92% of base)
         -56 : 196566.dasm (-5.53% of base)
         -55 : 196564.dasm (-6.31% of base)
         -55 : 124085.dasm (-37.16% of base)
         -55 : 115280.dasm (-3.92% of base)
         -54 : 115285.dasm (-3.08% of base)

1957 total files with Code Size differences (1922 improved, 35 regressed), 156 unchanged.

Top method regressions (bytes):
          44 ( 3.84% of base) : 125627.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,bool,ubyte):bool:this
          44 ( 3.84% of base) : 126022.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,int,ubyte):bool:this
          44 ( 3.84% of base) : 125791.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,long,ubyte):bool:this
          43 ( 3.64% of base) : 105822.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,System.__Canon,ubyte):bool:this
          41 ( 3.42% of base) : 105797.dasm - CollectionsMarshalHelper:GetValueRefOrAddDefault(System.Collections.Generic.Dictionary`2[System.__Canon, System.__Canon],System.__Canon,byref):byref
          38 ( 3.71% of base) : 125801.dasm - System.Collections.Generic.Dictionary`2:TryInsert(int,System.__Canon,ubyte):bool:this
          34 ( 3.26% of base) : 126035.dasm - System.Collections.Generic.Dictionary`2:TryInsert(long,System.__Canon,ubyte):bool:this
          34 ( 3.26% of base) : 126492.dasm - System.Collections.Generic.Dictionary`2:TryInsert(long,System.__Canon,ubyte):bool:this
          28 ( 2.85% of base) : 125871.dasm - System.Collections.Generic.Dictionary`2:TryInsert(int,bool,ubyte):bool:this
          28 ( 2.81% of base) : 125737.dasm - System.Collections.Generic.Dictionary`2:TryInsert(long,ushort,ubyte):bool:this
          25 ( 2.72% of base) : 61418.dasm - ObjectPrinter:GenericToString(Microsoft.FSharp.Core.PrintfImpl+FormatSpecifier):Microsoft.FSharp.Core.PrintfImpl+ValueConverter
          11 ( 1.11% of base) : 122236.dasm - System.DateTimeFormat:TryFormatR(System.DateTime,System.TimeSpan,System.Span`1[System.Char],byref):bool
          10 ( 0.76% of base) : 126249.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,System.Resources.ResourceLocator,ubyte):bool:this
           9 ( 0.74% of base) : 107010.dasm - System.Diagnostics.Tracing.EventSource:DecodeObjects(System.Object[],System.Type[],long)
           8 ( 3.77% of base) : 88135.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol:AtomicSetFlagAndRaiseSymbolDeclaredEvent(byref,int,int,Microsoft.CodeAnalysis.VisualBasic.Symbol):bool:this
           7 ( 0.47% of base) : 105714.dasm - System.Collections.Generic.HashSet`1:AddIfNotPresent(System.__Canon,byref):bool:this
           5 ( 0.60% of base) : 103079.dasm - System.Data.DataTable:InsertRow(System.Data.DataRow,long,int,bool):this
           4 ( 0.80% of base) : 21876.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindGlobalStatement(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.DiagnosticBag,bool):Microsoft.CodeAnalysis.CSharp.BoundInitializer
           4 ( 1.08% of base) : 91697.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindGlobalStatement(Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.DiagnosticBag,bool):Microsoft.CodeAnalysis.VisualBasic.BoundInitializer:this
           4 ( 0.57% of base) : 105745.dasm - System.Collections.Generic.HashSet`1:FindItemIndex(System.__Canon):int:this

Top method improvements (bytes):
        -170 (-18.10% of base) : 108311.dasm - System.IO.StreamReader:DetectEncoding():this
        -136 (-7.09% of base) : 54443.dasm - Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser:ReadScheduleSwitch(Microsoft.Diagnostics.Tracing.Utilities.FastStream):Microsoft.Diagnostics.Tracing.StackSources.ScheduleSwitch:this
         -83 (-59.71% of base) : 124084.dasm - System.String:Equals(System.String):bool:this
         -80 (-1.74% of base) : 109032.dasm - <WriteToUnderlyingStreamAsync>d__60:MoveNext():this
         -74 (-1.77% of base) : 108288.dasm - <ReadAsyncInternal>d__68:MoveNext():this
         -68 (-54.40% of base) : 124082.dasm - System.String:Equals(System.String,System.String):bool
         -66 (-3.94% of base) : 115290.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):bool:this
         -64 (-12.88% of base) : 166087.dasm - System.Data.Common.DBConnectionString:Intersect(System.Data.Common.DBConnectionString):System.Data.Common.DBConnectionString:this
         -64 (-2.15% of base) : 22700.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexSet`1:CreateMulti(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]],int):System.Text.RegularExpressions.Symbolic.SymbolicRegexSet`1[System.__Canon]
         -64 (-2.05% of base) : 23811.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexSet`1:CreateMulti(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.UInt64],System.Collections.Generic.IEnumerable`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.UInt64]],int):System.Text.RegularExpressions.Symbolic.SymbolicRegexSet`1[System.UInt64]
         -63 (-5.22% of base) : 121046.dasm - Grisu3:TryDigitGenShortest(byref,byref,byref,System.Span`1[System.Byte],byref,byref):bool
         -63 (-6.92% of base) : 61937.dasm - Microsoft.FSharp.Quotations.PatternsModule:u_ModuleDefn$cont@1552(Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.String, System.Int32]],System.Type,System.String,Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Quotations.PatternsModule+ModuleDefinitionBindingResult`2[Microsoft.FSharp.Quotations.ExprConstInfo, Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.Type], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.Type], Microsoft.FSharp.Quotations.ExprConstInfo]]]
         -60 (-11.07% of base) : 93293.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundForToStatement:.ctor(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,bool,Microsoft.CodeAnalysis.VisualBasic.BoundForToUserDefinedOperators,Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol,bool):this
         -60 (-1.48% of base) : 138210.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitLoop(System.Xml.Xsl.Qil.QilLoop):System.Xml.Xsl.Qil.QilNode:this
         -57 (-1.92% of base) : 36895.dasm - <NextEvent>d__30:MoveNext():bool:this
         -56 (-5.53% of base) : 196566.dasm - System.ComponentModel.Composition.Hosting.ImportEngine:TrySatisfyImportsStateMachine(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Primitives.ComposablePart):System.ComponentModel.Composition.CompositionResult:this
         -55 (-6.31% of base) : 196564.dasm - System.ComponentModel.Composition.Hosting.ImportEngine:TrySatisfyImportSubset(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.Primitives.ImportDefinition],System.ComponentModel.Composition.Hosting.AtomicComposition):System.ComponentModel.Composition.CompositionResult:this
         -55 (-37.16% of base) : 124085.dasm - System.String:Equals(System.Object):bool:this
         -55 (-3.92% of base) : 115280.dasm - System.Threading.ReaderWriterLockSlim:TryEnterUpgradeableReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):bool:this
         -54 (-3.08% of base) : 115285.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):bool:this

Top method regressions (percentages):
          44 ( 3.84% of base) : 125627.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,bool,ubyte):bool:this
          44 ( 3.84% of base) : 126022.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,int,ubyte):bool:this
          44 ( 3.84% of base) : 125791.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,long,ubyte):bool:this
           8 ( 3.77% of base) : 88135.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol:AtomicSetFlagAndRaiseSymbolDeclaredEvent(byref,int,int,Microsoft.CodeAnalysis.VisualBasic.Symbol):bool:this
          38 ( 3.71% of base) : 125801.dasm - System.Collections.Generic.Dictionary`2:TryInsert(int,System.__Canon,ubyte):bool:this
          43 ( 3.64% of base) : 105822.dasm - System.Collections.Generic.Dictionary`2:TryInsert(System.__Canon,System.__Canon,ubyte):bool:this
          41 ( 3.42% of base) : 105797.dasm - CollectionsMarshalHelper:GetValueRefOrAddDefault(System.Collections.Generic.Dictionary`2[System.__Canon, System.__Canon],System.__Canon,byref):byref
          34 ( 3.26% of base) : 126035.dasm - System.Collections.Generic.Dictionary`2:TryInsert(long,System.__Canon,ubyte):bool:this
          34 ( 3.26% of base) : 126492.dasm - System.Collections.Generic.Dictionary`2:TryInsert(long,System.__Canon,ubyte):bool:this
          28 ( 2.85% of base) : 125871.dasm - System.Collections.Generic.Dictionary`2:TryInsert(int,bool,ubyte):bool:this
          28 ( 2.81% of base) : 125737.dasm - System.Collections.Generic.Dictionary`2:TryInsert(long,ushort,ubyte):bool:this
          25 ( 2.72% of base) : 61418.dasm - ObjectPrinter:GenericToString(Microsoft.FSharp.Core.PrintfImpl+FormatSpecifier):Microsoft.FSharp.Core.PrintfImpl+ValueConverter
           2 ( 1.98% of base) : 86911.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundExpressionExtensions:ToStatement(Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement
           2 ( 1.83% of base) : 106146.dasm - System.Collections.HashHelpers:FastMod(int,int,long):int
           3 ( 1.51% of base) : 116722.dasm - System.Globalization.NumberFormatInfo:InitializeInvariantAndNegativeSignFlags():this
           3 ( 1.44% of base) : 111568.dasm - Container:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon, System.__Canon],System.Int32[],System.Runtime.CompilerServices.ConditionalWeakTable`2+Entry[System.__Canon, System.__Canon][],int):this
           2 ( 1.40% of base) : 125739.dasm - System.Collections.Generic.Dictionary`2:GetBucket(int):byref:this
           2 ( 1.40% of base) : 105798.dasm - System.Collections.Generic.Dictionary`2:GetBucket(int):byref:this
           2 ( 1.40% of base) : 105744.dasm - System.Collections.Generic.HashSet`1:GetBucketRef(int):byref:this
          11 ( 1.11% of base) : 122236.dasm - System.DateTimeFormat:TryFormatR(System.DateTime,System.TimeSpan,System.Span`1[System.Char],byref):bool

Top method improvements (percentages):
         -83 (-59.71% of base) : 124084.dasm - System.String:Equals(System.String):bool:this
         -68 (-54.40% of base) : 124082.dasm - System.String:Equals(System.String,System.String):bool
         -55 (-37.16% of base) : 124085.dasm - System.String:Equals(System.Object):bool:this
          -8 (-26.67% of base) : 146329.dasm - System.Xml.XmlTextReaderImpl:GetResolver():System.Xml.XmlResolver:this
         -16 (-23.19% of base) : 23392.dasm - System.Text.RegularExpressions.RegexCharClass:TryAddCharClass(System.Text.RegularExpressions.RegexCharClass):bool:this
         -44 (-21.57% of base) : 73522.dasm - Microsoft.CodeAnalysis.VisualBasic.LambdaUtilities:IsNonUserCodeQueryLambda(Microsoft.CodeAnalysis.SyntaxNode):bool
         -11 (-20.37% of base) : 108734.dasm - System.IO.FileStream:BaseReadAsync(System.Byte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Int32]:this
         -11 (-20.37% of base) : 108731.dasm - System.IO.FileStream:BaseWriteAsync(System.Byte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this
         -11 (-18.97% of base) : 108423.dasm - System.IO.Stream:ReadAsync(System.Byte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Int32]:this
         -11 (-18.97% of base) : 108413.dasm - System.IO.Stream:WriteAsync(System.Byte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this
         -11 (-18.33% of base) : 107777.dasm - System.IO.Strategies.DerivedFileStreamStrategy:ReadAsync(System.Byte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Int32]:this
         -11 (-18.33% of base) : 107770.dasm - System.IO.Strategies.DerivedFileStreamStrategy:WriteAsync(System.Byte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this
         -12 (-18.18% of base) : 121081.dasm - BigInteger:GetBlock(int):int:this
          -8 (-18.18% of base) : 115504.dasm - System.Threading.CancellationToken:ThrowIfCancellationRequested():this
        -170 (-18.10% of base) : 108311.dasm - System.IO.StreamReader:DetectEncoding():this
         -11 (-18.03% of base) : 35951.dasm - System.Data.OleDb.OleDbParameter:get_ScaleInternal():ubyte:this
          -8 (-16.00% of base) : 192287.dasm - Node:get_Is4Node():bool:this
         -11 (-15.49% of base) : 165572.dasm - System.Data.Odbc.OdbcParameter:get_ScaleInternal():ubyte:this
         -11 (-15.07% of base) : 136182.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:IsSequence(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[]):bool:this
         -11 (-15.07% of base) : 136093.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:IsSequence(System.Xml.Serialization.XmlSerializationReaderILGen+Member[]):bool:this

1957 total methods with Code Size differences (1922 improved, 35 regressed), 156 unchanged.


libraries.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45313983 (overridden on cmd)
Total bytes of diff: 45123590 (overridden on cmd)
Total bytes of delta: -190393 (-0.42 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          30 : 133830.dasm (0.38% of base)
          25 : 6765.dasm (2.86% of base)
           9 : 29361.dasm (0.60% of base)
           8 : 150863.dasm (0.47% of base)
           8 : 53236.dasm (0.22% of base)
           8 : 54058.dasm (3.27% of base)
           6 : 175008.dasm (0.39% of base)
           5 : 110357.dasm (0.61% of base)
           5 : 186670.dasm (0.42% of base)
           4 : 68590.dasm (0.36% of base)
           4 : 49656.dasm (0.40% of base)
           4 : 49676.dasm (2.14% of base)
           4 : 49677.dasm (2.09% of base)
           4 : 49689.dasm (0.84% of base)
           4 : 49698.dasm (2.52% of base)
           4 : 23828.dasm (0.48% of base)
           4 : 143746.dasm (0.82% of base)
           4 : 50247.dasm (1.00% of base)
           3 : 218498.dasm (0.53% of base)
           3 : 218631.dasm (0.53% of base)

Top file improvements (bytes):
        -932 : 149489.dasm (-17.31% of base)
        -781 : 149490.dasm (-25.01% of base)
        -698 : 184164.dasm (-32.45% of base)
        -698 : 186198.dasm (-32.45% of base)
        -647 : 108774.dasm (-30.97% of base)
        -629 : 140788.dasm (-10.54% of base)
        -572 : 29687.dasm (-6.66% of base)
        -560 : 108992.dasm (-25.01% of base)
        -560 : 149504.dasm (-21.87% of base)
        -555 : 224695.dasm (-19.03% of base)
        -554 : 35300.dasm (-29.61% of base)
        -552 : 224771.dasm (-20.40% of base)
        -552 : 108991.dasm (-20.84% of base)
        -550 : 108781.dasm (-16.51% of base)
        -544 : 139004.dasm (-28.32% of base)
        -540 : 224849.dasm (-22.30% of base)
        -539 : 185996.dasm (-15.65% of base)
        -536 : 140567.dasm (-31.09% of base)
        -535 : 224806.dasm (-11.86% of base)
        -530 : 143134.dasm (-16.17% of base)

5398 total files with Code Size differences (5366 improved, 32 regressed), 215 unchanged.

Top method regressions (bytes):
          30 ( 0.38% of base) : 133830.dasm - <ParseXmlDeclarationAsync>d__505:MoveNext():this
          25 ( 2.86% of base) : 6765.dasm - ObjectPrinter:GenericToString(FormatSpecifier):ValueConverter
           9 ( 0.60% of base) : 29361.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:TrivialLiftedComparisonOperatorOptimizations(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
           8 ( 0.22% of base) : 53236.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int):Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol
           8 ( 3.27% of base) : 54058.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol:AtomicSetFlagAndRaiseSymbolDeclaredEvent(byref,int,int,Microsoft.CodeAnalysis.VisualBasic.Symbol):bool:this
           8 ( 0.47% of base) : 150863.dasm - System.Text.Json.ThrowHelper:GetResourceString(byref,int,ubyte,System.String):System.String
           6 ( 0.39% of base) : 175008.dasm - System.Collections.BitArray:CopyTo(System.Array,int):this
           5 ( 0.61% of base) : 110357.dasm - System.Data.DataTable:InsertRow(System.Data.DataRow,long,int,bool):this
           5 ( 0.42% of base) : 186670.dasm - System.Diagnostics.Activity:Create(System.Diagnostics.ActivitySource,System.String,int,System.String,System.Diagnostics.ActivityContext,System.Collections.Generic.IEnumerable`1[[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.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,System.Diagnostics.ActivityTagsCollection,int,bool,int):System.Diagnostics.Activity
           4 ( 0.48% of base) : 23828.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindGlobalStatement(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.DiagnosticBag,bool):Microsoft.CodeAnalysis.CSharp.BoundInitializer
           4 ( 1.00% of base) : 50247.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindGlobalStatement(Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.DiagnosticBag,bool):Microsoft.CodeAnalysis.VisualBasic.BoundInitializer:this
           4 ( 0.36% of base) : 68590.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyMethodConversionForLambdaOrAnonymousDelegateBasedOnParameters(TargetSignature,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],byref):int
           4 ( 2.52% of base) : 49698.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:CheckAssigned(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,int):this
           4 ( 0.84% of base) : 49689.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:CheckAssignedFromArgumentWrite(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):this
           4 ( 0.40% of base) : 49656.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitAsNewLocalDeclarations(Microsoft.CodeAnalysis.VisualBasic.BoundAsNewLocalDeclarations):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
           4 ( 2.14% of base) : 49676.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitFieldAccess(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
           4 ( 2.09% of base) : 49677.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitFieldAccessInReadWriteContext(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,int):this
           4 ( 0.82% of base) : 143746.dasm - System.Xml.Serialization.XmlSchemaExporter:FindImport(System.Xml.Schema.XmlSchema,System.String):System.Xml.Schema.XmlSchemaImport:this
           3 ( 0.12% of base) : 57200.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:RewriteLiftedBooleanBinaryOperator(Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,bool,bool,bool,bool):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this
           3 ( 0.45% of base) : 186801.dasm - System.Diagnostics.ActivityCreationOptions`1[__Canon][System.__Canon]:.ctor(System.Diagnostics.ActivitySource,System.String,System.__Canon,int,System.Collections.Generic.IEnumerable`1[[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.Collections.Generic.IEnumerable`1[ActivityLink],int):this

Top method improvements (bytes):
        -932 (-17.31% of base) : 149489.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseGrammar(System.Xml.XmlReader,System.Speech.Internal.SrgsParser.IGrammar):this
        -781 (-25.01% of base) : 149490.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseRule(System.Speech.Internal.SrgsParser.IGrammar,System.Xml.XmlReader):System.Speech.Internal.SrgsParser.IRule:this
        -698 (-32.45% of base) : 184164.dasm - System.Data.Common.DbConnectionOptions:ExpandDataDirectories(byref,byref):System.String:this
        -698 (-32.45% of base) : 186198.dasm - System.Data.Common.DbConnectionOptions:ExpandDataDirectories(byref,byref):System.String:this
        -647 (-30.97% of base) : 108774.dasm - System.Data.XDRSchema:FindTypeNode(System.Xml.XmlElement):System.Xml.XmlElement:this
        -629 (-10.54% of base) : 140788.dasm - System.Xml.Xsl.Runtime.XmlCollation:Create(System.String,bool):System.Xml.Xsl.Runtime.XmlCollation
        -572 (-6.66% of base) : 29687.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
        -560 (-25.01% of base) : 108992.dasm - System.Data.XSDSchema:HandleSimpleContentColumn(System.String,System.Data.DataTable,bool,System.Xml.XmlAttribute[],bool):this
        -560 (-21.87% of base) : 149504.dasm - System.Speech.Internal.SrgsParser.XmlParser:ProcessChildNodes(System.Xml.XmlReader,System.Speech.Internal.SrgsParser.IElement,System.Speech.Internal.SrgsParser.IRule,System.String):bool:this
        -555 (-19.03% of base) : 224695.dasm - System.ServiceModel.Syndication.Atom10FeedFormatter:ReadLink(System.Xml.XmlReader,System.ServiceModel.Syndication.SyndicationLink,System.Uri):this
        -554 (-29.61% of base) : 35300.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DocumentationCommentXmlTokens:LookupXmlElementTag(System.String):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        -552 (-20.84% of base) : 108991.dasm - System.Data.XSDSchema:HandleSimpleTypeSimpleContentColumn(System.Xml.Schema.XmlSchemaSimpleType,System.String,System.Data.DataTable,bool,System.Xml.XmlAttribute[],bool):this
        -552 (-20.40% of base) : 224771.dasm - System.ServiceModel.Syndication.AtomPub10ServiceDocumentFormatter:ReadInlineCategories(System.Xml.XmlReader,System.ServiceModel.Syndication.InlineCategoriesDocument,System.Uri,System.String,int)
        -550 (-16.51% of base) : 108781.dasm - System.Data.XDRSchema:HandleColumn(System.Xml.XmlElement,System.Data.DataTable):this
        -544 (-28.32% of base) : 139004.dasm - System.Xml.Xsl.Xslt.QilGenerator:IsElementAvailable(System.Xml.XmlQualifiedName):bool
        -540 (-22.30% of base) : 224849.dasm - System.ServiceModel.Syndication.Rss20FeedFormatter:ReadMediaEnclosure(System.Xml.XmlReader,System.Uri):System.ServiceModel.Syndication.SyndicationLink:this
        -539 (-15.65% of base) : 185996.dasm - System.Data.OleDb.OleDbMetaDataFactory:PrepareCollection(System.String,System.String[],System.Data.Common.DbConnection):System.Data.DataTable:this
        -536 (-31.09% of base) : 140567.dasm - System.Xml.Xsl.XPath.XPathScanner:CheckAxis():int:this
        -535 (-11.86% of base) : 224806.dasm - System.ServiceModel.Syndication.DateTimeHelper:NormalizeTimeZone(System.String,byref):System.String
        -530 (-16.17% of base) : 143134.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:ConvertPrimitiveToString(System.Object,System.Xml.Serialization.TypeDesc):System.String:this

Top method regressions (percentages):
           8 ( 3.27% of base) : 54058.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol:AtomicSetFlagAndRaiseSymbolDeclaredEvent(byref,int,int,Microsoft.CodeAnalysis.VisualBasic.Symbol):bool:this
          25 ( 2.86% of base) : 6765.dasm - ObjectPrinter:GenericToString(FormatSpecifier):ValueConverter
           4 ( 2.52% of base) : 49698.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:CheckAssigned(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,int):this
           4 ( 2.14% of base) : 49676.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitFieldAccess(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
           4 ( 2.09% of base) : 49677.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitFieldAccessInReadWriteContext(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,int):this
           2 ( 1.85% of base) : 55283.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundExpressionExtensions:ToStatement(Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement
           4 ( 1.00% of base) : 50247.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindGlobalStatement(Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.DiagnosticBag,bool):Microsoft.CodeAnalysis.VisualBasic.BoundInitializer:this
           3 ( 0.90% of base) : 186796.dasm - System.Diagnostics.ActivityCreationOptions`1[__Canon][System.__Canon]:get_TraceId():System.Diagnostics.ActivityTraceId:this
           4 ( 0.84% of base) : 49689.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:CheckAssignedFromArgumentWrite(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):this
           4 ( 0.82% of base) : 143746.dasm - System.Xml.Serialization.XmlSchemaExporter:FindImport(System.Xml.Schema.XmlSchema,System.String):System.Xml.Schema.XmlSchemaImport:this
           5 ( 0.61% of base) : 110357.dasm - System.Data.DataTable:InsertRow(System.Data.DataRow,long,int,bool):this
           9 ( 0.60% of base) : 29361.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:TrivialLiftedComparisonOperatorOptimizations(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
           3 ( 0.53% of base) : 218498.dasm - System.Security.Cryptography.DSA:VerifyData(System.Byte[],int,int,System.Byte[],System.Security.Cryptography.HashAlgorithmName,int):bool:this
           3 ( 0.53% of base) : 218631.dasm - System.Security.Cryptography.ECDsa:VerifyData(System.Byte[],int,int,System.Byte[],System.Security.Cryptography.HashAlgorithmName,int):bool:this
           4 ( 0.48% of base) : 23828.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindGlobalStatement(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.DiagnosticBag,bool):Microsoft.CodeAnalysis.CSharp.BoundInitializer
           8 ( 0.47% of base) : 150863.dasm - System.Text.Json.ThrowHelper:GetResourceString(byref,int,ubyte,System.String):System.String
           3 ( 0.45% of base) : 186801.dasm - System.Diagnostics.ActivityCreationOptions`1[__Canon][System.__Canon]:.ctor(System.Diagnostics.ActivitySource,System.String,System.__Canon,int,System.Collections.Generic.IEnumerable`1[[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.Collections.Generic.IEnumerable`1[ActivityLink],int):this
           5 ( 0.42% of base) : 186670.dasm - System.Diagnostics.Activity:Create(System.Diagnostics.ActivitySource,System.String,int,System.String,System.Diagnostics.ActivityContext,System.Collections.Generic.IEnumerable`1[[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.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,System.Diagnostics.ActivityTagsCollection,int,bool,int):System.Diagnostics.Activity
           4 ( 0.40% of base) : 49656.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitAsNewLocalDeclarations(Microsoft.CodeAnalysis.VisualBasic.BoundAsNewLocalDeclarations):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
           6 ( 0.39% of base) : 175008.dasm - System.Collections.BitArray:CopyTo(System.Array,int):this

Top method improvements (percentages):
         -53 (-39.26% of base) : 108609.dasm - System.Xml.XPathNodePointer:IsNamespaceNode(int,System.String):bool:this
         -40 (-37.04% of base) : 70087.dasm - Microsoft.CodeAnalysis.VisualBasic.LambdaUtilities:IsNonUserCodeQueryLambda(Microsoft.CodeAnalysis.SyntaxNode):bool
         -45 (-36.89% of base) : 232399.dasm - <>c:<CreateLibrary>b__20_1(RuntimeTargetEntryStub):bool:this
         -45 (-36.89% of base) : 232402.dasm - <>c:<CreateLibrary>b__20_4(RuntimeTargetEntryStub):bool:this
         -45 (-36.89% of base) : 161591.dasm - <>c:<CreateLibrary>b__25_1(RuntimeTargetEntryStub):bool:this
         -45 (-36.89% of base) : 161594.dasm - <>c:<CreateLibrary>b__25_4(RuntimeTargetEntryStub):bool:this
         -45 (-36.59% of base) : 82429.dasm - <>c:<WritePeToStream>b__15_1(Microsoft.Cci.SectionHeader):bool:this
         -45 (-36.59% of base) : 82430.dasm - <>c:<WritePeToStream>b__15_2(Microsoft.Cci.SectionHeader):bool:this
         -45 (-36.59% of base) : 206652.dasm - System.Net.Mime.ContentDisposition:get_Inline():bool:this
         -50 (-35.71% of base) : 129894.dasm - MS.Internal.Xml.Cache.XPathNode:get_IsXmlNamespaceNode():bool:this
         -92 (-35.38% of base) : 186587.dasm - <>c__DisplayClass7_0:<CreateActivityListener>b__2(System.Diagnostics.ActivitySource):bool:this
        -414 (-35.38% of base) : 108835.dasm - System.Data.XmlTreeGen:FindTypeNode(System.Xml.XmlElement,System.String):System.Xml.XmlElement:this
         -50 (-34.48% of base) : 128555.dasm - XmlNode:IsNamespaceUri(System.Xml.XmlDictionaryString):bool:this
        -141 (-34.39% of base) : 215367.dasm - System.Reflection.Runtime.BindingFlagSupport.EventPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.EventInfo,System.Reflection.EventInfo[],int,int):bool:this
        -176 (-34.38% of base) : 136891.dasm - System.Xml.Schema.SchemaEntity:IsPredefinedEntity(System.String):bool
        -267 (-34.10% of base) : 155188.dasm - System.Text.RegularExpressions.Symbolic.Unicode.IgnoreCaseTransformer:IsTurkishAlphabet(System.String):bool
        -521 (-34.10% of base) : 139003.dasm - System.Xml.Xsl.Xslt.QilGenerator:IsFunctionAvailable(System.String,System.String):bool
        -214 (-34.08% of base) : 154063.dasm - System.Text.RegularExpressions.RegexCharClass:<MayOverlap>g__KnownDistinctSets|72_0(System.String,System.String):bool
        -209 (-33.98% of base) : 219687.dasm - System.Security.Cryptography.CngKey:EcdhCurveNameToAlgorithm(System.String):System.Security.Cryptography.CngAlgorithm
        -209 (-33.98% of base) : 219686.dasm - System.Security.Cryptography.CngKey:EcdsaCurveNameToAlgorithm(System.String):System.Security.Cryptography.CngAlgorithm

5398 total methods with Code Size differences (5366 improved, 32 regressed), 215 unchanged.


libraries_tests.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 114243521 (overridden on cmd)
Total bytes of diff: 114063613 (overridden on cmd)
Total bytes of delta: -179908 (-0.16 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          39 : 34205.dasm (1.58% of base)
          18 : 184810.dasm (0.79% of base)
          18 : 64730.dasm (0.79% of base)
           7 : 314077.dasm (0.53% of base)
           4 : 118668.dasm (0.32% of base)
           3 : 129094.dasm (0.19% of base)
           3 : 127005.dasm (0.18% of base)
           2 : 353138.dasm (0.57% of base)
           1 : 134678.dasm (0.16% of base)
           1 : 157635.dasm (0.15% of base)
           1 : 128954.dasm (0.08% of base)
           1 : 132217.dasm (0.75% of base)
           1 : 233313.dasm (0.08% of base)
           1 : 245934.dasm (0.17% of base)
           1 : 245199.dasm (0.16% of base)
           1 : 245200.dasm (0.17% of base)

Top file improvements (bytes):
        -697 : 118306.dasm (-20.37% of base)
        -572 : 260126.dasm (-8.94% of base)
        -520 : 6841.dasm (-15.90% of base)
        -520 : 348413.dasm (-13.11% of base)
        -520 : 10420.dasm (-15.71% of base)
        -520 : 345322.dasm (-12.54% of base)
        -518 : 242668.dasm (-17.26% of base)
        -507 : 132628.dasm (-21.46% of base)
        -502 : 253384.dasm (-10.88% of base)
        -499 : 345557.dasm (-7.44% of base)
        -496 : 261279.dasm (-18.24% of base)
        -491 : 121986.dasm (-27.93% of base)
        -483 : 261291.dasm (-24.09% of base)
        -483 : 261299.dasm (-12.54% of base)
        -481 : 328323.dasm (-15.83% of base)
        -480 : 125744.dasm (-15.24% of base)
        -480 : 328325.dasm (-10.03% of base)
        -480 : 181087.dasm (-22.76% of base)
        -456 : 132632.dasm (-16.50% of base)
        -453 : 261305.dasm (-27.08% of base)

4968 total files with Code Size differences (4952 improved, 16 regressed), 137 unchanged.

Top method regressions (bytes):
          39 ( 1.58% of base) : 34205.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.method.genmethod.genclass.genclass008.genclass008.Test:MainMethod():int
          18 ( 0.79% of base) : 184810.dasm - <SendResponseAsync>d__65:MoveNext():this
          18 ( 0.79% of base) : 64730.dasm - <SendResponseAsync>d__65:MoveNext():this
           7 ( 0.53% of base) : 314077.dasm - System.Collections.ObjectModel.Tests.IReadOnlyList_T_Test`1[Byte][System.Byte]:VerifyEnumerator(System.Collections.Generic.IReadOnlyList`1[Byte],System.Byte[]):this
           4 ( 0.32% of base) : 118668.dasm - Microsoft.Build.Graph.GraphBuilder:<DetectCycles>g__VisitNode|32_0(Microsoft.Build.Graph.ProjectGraphNode,System.Collections.Generic.IDictionary`2[[Microsoft.Build.Graph.ProjectGraphNode, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[Microsoft.Build.Graph.GraphBuilder+NodeVisitationState, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):System.ValueTuple`2[[System.Boolean, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
           3 ( 0.18% of base) : 127005.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:DocumentationCommentTrivia(System.Collections.Generic.IEnumerable`1[[Microsoft.CodeAnalysis.SyntaxNode, Microsoft.CodeAnalysis, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.SyntaxTrivia,System.String):Microsoft.CodeAnalysis.SyntaxNode:this
           3 ( 0.19% of base) : 129094.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGeneration.VisualBasicSyntaxGenerator:DocumentationCommentTrivia(System.Collections.Generic.IEnumerable`1[[Microsoft.CodeAnalysis.SyntaxNode, Microsoft.CodeAnalysis, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.SyntaxTrivia,System.String):Microsoft.CodeAnalysis.SyntaxNode:this
           2 ( 0.57% of base) : 353138.dasm - System.AssertExtensions:AtLeastOneEquals(short,short,short)
           1 ( 0.16% of base) : 134678.dasm - <EnumerateObjectsOfType>d__34:MoveNext():bool:this
           1 ( 0.15% of base) : 157635.dasm - BasicEventSourceTests.EventListenerListener:EventSourceCommand(System.String,int,BasicEventSourceTests.FilteringOptions):this
           1 ( 0.08% of base) : 233313.dasm - FluentAssertions.Xml.XmlReaderValidator:ValidateAttributes():ValidationResult:this
           1 ( 0.16% of base) : 245199.dasm - Microsoft.CodeAnalysis.Scripting.Hosting.ObjectFormatterHelpers:GetApplicableDebuggerDisplayAttribute(System.Reflection.MemberInfo):System.Diagnostics.DebuggerDisplayAttribute
           1 ( 0.17% of base) : 245200.dasm - Microsoft.CodeAnalysis.Scripting.Hosting.ObjectFormatterHelpers:GetApplicableDebuggerTypeProxyAttribute(System.Reflection.TypeInfo):System.Diagnostics.DebuggerTypeProxyAttribute
           1 ( 0.08% of base) : 128954.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGeneration.VisualBasicSyntaxGenerator:WithBody(Microsoft.CodeAnalysis.SyntaxNode,bool):Microsoft.CodeAnalysis.SyntaxNode:this
           1 ( 0.75% of base) : 132217.dasm - Microsoft.Diagnostics.Runtime.CoreDumpReader:ReadMemory(long,long,int,byref):bool:this
           1 ( 0.17% of base) : 245934.dasm - Microsoft.DotNet.ProjectModel.Resolution.LibraryManager:AddDiagnostics(System.Collections.Generic.List`1[[Microsoft.DotNet.ProjectModel.DiagnosticMessage, Microsoft.DotNet.ProjectModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]],Microsoft.DotNet.ProjectModel.LibraryDescription,System.String,int,System.String):this

Top method improvements (bytes):
        -697 (-20.37% of base) : 118306.dasm - Microsoft.Build.Construction.ProjectParser:Parse():this
        -572 (-8.94% of base) : 260126.dasm - NuGet.Frameworks.NuGetFramework:TryParseCommonFramework(System.String,byref):bool
        -520 (-15.71% of base) : 10420.dasm - Microsoft.CodeAnalysis.Editing.SyntaxGenerator:GetOperatorKind(Microsoft.CodeAnalysis.IMethodSymbol):int
        -520 (-15.90% of base) : 6841.dasm - Microsoft.CodeAnalysis.Shared.Extensions.IMethodSymbolExtensions:GetPredefinedOperator(Microsoft.CodeAnalysis.IMethodSymbol):int
        -520 (-13.11% of base) : 348413.dasm - TCWriteState:InvokeMethod(System.Xml.XmlWriter,System.String):this
        -520 (-12.54% of base) : 345322.dasm - TCWriteState:InvokeMethod(System.Xml.XmlWriter,System.String):this
        -518 (-17.26% of base) : 242668.dasm - Microsoft.Build.Utilities.SDKManifest:ReadFileListAttributes(System.Xml.XmlAttributeCollection):this
        -507 (-21.46% of base) : 132628.dasm - Microsoft.Diagnostics.Runtime.Desktop.DesktopGCHeap:GetElementType(Microsoft.Diagnostics.Runtime.Desktop.BaseDesktopHeapType,int):int:this
        -502 (-10.88% of base) : 253384.dasm - Microsoft.Interop.MarshallingAttributeInfoParser:CreateInfoFromMarshalAs(Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.AttributeData,System.Collections.Immutable.ImmutableHashSet`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref):Microsoft.Interop.MarshallingInfo:this
        -499 (-7.44% of base) : 345557.dasm - TCNamespace:TestNamespace6():this
        -496 (-18.24% of base) : 261279.dasm - <>c__DisplayClass14_0:<GetPackageSpec>b__0(System.String):this
        -491 (-27.93% of base) : 121986.dasm - Microsoft.Build.BackEnd.Logging.BaseConsoleLogger:ApplyParameter(System.String,System.String):bool:this
        -483 (-24.09% of base) : 261291.dasm - <>c__DisplayClass20_1:<ReadDependencies>b__1(System.String):this
        -483 (-12.54% of base) : 261299.dasm - <>c__DisplayClass27_0:<ReadMSBuildMetadata>b__0(System.String):this
        -481 (-15.83% of base) : 328323.dasm - System.Numerics.Tests.StackCalc:DoUnaryOperatorSN(System.Numerics.BigInteger,System.String):System.Numerics.BigInteger:this
        -480 (-15.24% of base) : 125744.dasm - Microsoft.CodeAnalysis.CSharp.Recommendations.CSharpRecommendationServiceRunner:IsLiftableOperator(Microsoft.CodeAnalysis.IMethodSymbol):bool
        -480 (-22.76% of base) : 181087.dasm - System.Net.Http.Headers.CacheControlHeaderValue:TrySetCacheControlValues(System.Net.Http.Headers.CacheControlHeaderValue,System.Collections.Generic.List`1[[System.Net.Http.Headers.NameValueHeaderValue, System.Net.Http.Unit.Tests, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51]]):bool
        -480 (-10.03% of base) : 328325.dasm - System.Numerics.Tests.StackCalc:DoBinaryOperatorSN(System.Numerics.BigInteger,System.Numerics.BigInteger,System.String,byref):System.Numerics.BigInteger:this
        -456 (-16.50% of base) : 132632.dasm - Microsoft.Diagnostics.Runtime.Desktop.DesktopGCHeap:InitBasicTypes():this
        -453 (-27.08% of base) : 261305.dasm - <>c__DisplayClass33_0:<ReadPackOptions>b__0(System.String):this

Top method regressions (percentages):
          39 ( 1.58% of base) : 34205.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.method.genmethod.genclass.genclass008.genclass008.Test:MainMethod():int
          18 ( 0.79% of base) : 184810.dasm - <SendResponseAsync>d__65:MoveNext():this
          18 ( 0.79% of base) : 64730.dasm - <SendResponseAsync>d__65:MoveNext():this
           1 ( 0.75% of base) : 132217.dasm - Microsoft.Diagnostics.Runtime.CoreDumpReader:ReadMemory(long,long,int,byref):bool:this
           2 ( 0.57% of base) : 353138.dasm - System.AssertExtensions:AtLeastOneEquals(short,short,short)
           7 ( 0.53% of base) : 314077.dasm - System.Collections.ObjectModel.Tests.IReadOnlyList_T_Test`1[Byte][System.Byte]:VerifyEnumerator(System.Collections.Generic.IReadOnlyList`1[Byte],System.Byte[]):this
           4 ( 0.32% of base) : 118668.dasm - Microsoft.Build.Graph.GraphBuilder:<DetectCycles>g__VisitNode|32_0(Microsoft.Build.Graph.ProjectGraphNode,System.Collections.Generic.IDictionary`2[[Microsoft.Build.Graph.ProjectGraphNode, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[Microsoft.Build.Graph.GraphBuilder+NodeVisitationState, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):System.ValueTuple`2[[System.Boolean, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
           3 ( 0.19% of base) : 129094.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGeneration.VisualBasicSyntaxGenerator:DocumentationCommentTrivia(System.Collections.Generic.IEnumerable`1[[Microsoft.CodeAnalysis.SyntaxNode, Microsoft.CodeAnalysis, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.SyntaxTrivia,System.String):Microsoft.CodeAnalysis.SyntaxNode:this
           3 ( 0.18% of base) : 127005.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:DocumentationCommentTrivia(System.Collections.Generic.IEnumerable`1[[Microsoft.CodeAnalysis.SyntaxNode, Microsoft.CodeAnalysis, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.SyntaxTrivia,System.String):Microsoft.CodeAnalysis.SyntaxNode:this
           1 ( 0.17% of base) : 245934.dasm - Microsoft.DotNet.ProjectModel.Resolution.LibraryManager:AddDiagnostics(System.Collections.Generic.List`1[[Microsoft.DotNet.ProjectModel.DiagnosticMessage, Microsoft.DotNet.ProjectModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]],Microsoft.DotNet.ProjectModel.LibraryDescription,System.String,int,System.String):this
           1 ( 0.17% of base) : 245200.dasm - Microsoft.CodeAnalysis.Scripting.Hosting.ObjectFormatterHelpers:GetApplicableDebuggerTypeProxyAttribute(System.Reflection.TypeInfo):System.Diagnostics.DebuggerTypeProxyAttribute
           1 ( 0.16% of base) : 245199.dasm - Microsoft.CodeAnalysis.Scripting.Hosting.ObjectFormatterHelpers:GetApplicableDebuggerDisplayAttribute(System.Reflection.MemberInfo):System.Diagnostics.DebuggerDisplayAttribute
           1 ( 0.16% of base) : 134678.dasm - <EnumerateObjectsOfType>d__34:MoveNext():bool:this
           1 ( 0.15% of base) : 157635.dasm - BasicEventSourceTests.EventListenerListener:EventSourceCommand(System.String,int,BasicEventSourceTests.FilteringOptions):this
           1 ( 0.08% of base) : 128954.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGeneration.VisualBasicSyntaxGenerator:WithBody(Microsoft.CodeAnalysis.SyntaxNode,bool):Microsoft.CodeAnalysis.SyntaxNode:this
           1 ( 0.08% of base) : 233313.dasm - FluentAssertions.Xml.XmlReaderValidator:ValidateAttributes():ValidationResult:this

Top method improvements (percentages):
         -70 (-43.48% of base) : 39515.dasm - System.Globalization.Tests.ConformanceIdnaTestResult:IsIgnoredError(System.String):bool:this
         -70 (-43.48% of base) : 39657.dasm - System.Globalization.Tests.ConformanceIdnaTestResult:IsIgnoredError(System.String):bool:this
         -47 (-41.59% of base) : 206067.dasm - <>c:<TestRunPerformance>b__15_1(System.IO.FileInfo):bool:this
         -47 (-41.59% of base) : 206068.dasm - <>c:<TestRunPerformance>b__15_2(System.IO.FileInfo):bool:this
         -49 (-41.18% of base) : 224568.dasm - Castle.Core.Resource.AssemblyResourceFactory:Accept(Castle.Core.Resource.CustomUri):bool:this
         -49 (-41.18% of base) : 224585.dasm - Castle.Core.Resource.FileResourceFactory:Accept(Castle.Core.Resource.CustomUri):bool:this
         -51 (-40.80% of base) : 32756.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.property.autoproperty.genclass.genclass008.genclass008.Test:TestMethod(System.String):int
         -86 (-40.76% of base) : 119804.dasm - Microsoft.Build.Execution.BuildManager:HandleResult(int,Microsoft.Build.Execution.BuildResult):this
         -47 (-40.17% of base) : 117233.dasm - <>c:<TryLoadTaskBody>b__21_1(System.Xml.Linq.XAttribute):bool:this
         -47 (-40.17% of base) : 117234.dasm - <>c:<TryLoadTaskBody>b__21_2(System.Xml.Linq.XAttribute):bool:this
         -48 (-39.34% of base) : 251927.dasm - <>c:<AddFilterLastWins>b__7_2(System.String,System.String,int):bool:this
         -51 (-39.23% of base) : 353068.dasm - CustomAttributesTestApp.TargetFrameworkNameTestApp:Main():int
         -48 (-38.40% of base) : 129227.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.ExpressionSyntaxExtensions:IsAnyLiteralExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax):bool
         -45 (-36.89% of base) : 251848.dasm - <>c:<LogValues_With_Basic_Types>b__0_0(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]]):bool:this
         -45 (-36.89% of base) : 319702.dasm - <>c:<NativeResources>b__14_1(System.Reflection.PortableExecutable.SectionHeader):bool:this
         -45 (-36.89% of base) : 64794.dasm - <>c:<SendResponseAsync>b__31_0(System.Net.Test.Common.HttpHeaderData):bool:this
         -45 (-36.89% of base) : 300040.dasm - <>c:<ValidateRequest>b__8_0(System.Net.Test.Common.HttpHeaderData):bool:this
         -45 (-36.89% of base) : 12236.dasm - Microsoft.CodeAnalysis.Classification.ClassifierHelper:IsClassifiedAsText(Microsoft.CodeAnalysis.Classification.ClassifiedSpan):bool
         -45 (-36.59% of base) : 318507.dasm - <>c:<AssemblyGetReferencedAssemblies>b__21_0(System.Reflection.AssemblyName):bool:this
         -45 (-36.59% of base) : 318508.dasm - <>c:<AssemblyGetReferencedAssemblies>b__21_1(System.Reflection.AssemblyName):bool:this

4968 total methods with Code Size differences (4952 improved, 16 regressed), 137 unchanged.


@AndyAyersMS
Copy link
Member Author

Sample diff.

Note we could not get this before because test byte ptr [rcx+48], 2 might cause an exception.

;; before

; Assembly listing for method System.IO.Strategies.OSFileStreamStrategy:Flush(bool):this
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; rsp based frame
; fully interruptible
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;  V00 this         [V00,T00] (  5,  3.50)     ref  ->  rcx         this class-hnd single-def
;  V01 arg1         [V01,T01] (  3,  3   )    bool  ->  rdx         single-def
;# V02 OutArgs      [V02    ] (  1,  1   )  lclBlk ( 0) [rsp+00H]   "OutgoingArgSpace"
;  V03 tmp1         [V03,T03] (  2,  1   )    bool  ->  rax         "Inline return value spill temp"
;  V04 tmp2         [V04,T02] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg"
;
; Lcl frame size = 0

G_M9306_IG01:        ; gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
						;; bbWeight=1    PerfScore 0.00
G_M9306_IG02:        ; gcrefRegs=00000002 {rcx}, byrefRegs=00000000 {}, byref, isz
       ; gcrRegs +[rcx]
       test     dl, dl
       je       SHORT G_M9306_IG05
						;; bbWeight=1    PerfScore 1.25
G_M9306_IG03:        ; gcrefRegs=00000002 {rcx}, byrefRegs=00000000 {}, byref, isz
       mov      rax, gword ptr [rcx+16]
       ; gcrRegs +[rax]
       test     byte  ptr [rax+16], 1
       jne      SHORT G_M9306_IG05
       test     byte  ptr [rcx+48], 2
       setne    al
       ; gcrRegs -[rax]
       movzx    rax, al
       test     eax, eax
       je       SHORT G_M9306_IG05
       mov      rcx, gword ptr [rcx+16]
						;; bbWeight=0.50 PerfScore 6.75
G_M9306_IG04:        ; , epilog, nogc, extend
       jmp      System.IO.Strategies.FileStreamHelpers:FlushToDisk(Microsoft.Win32.SafeHandles.SafeFileHandle)
       ; gcr arg pop 0
						;; bbWeight=0.50 PerfScore 1.00
G_M9306_IG05:        ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
       ; gcrRegs -[rcx]
       ret 

; Total bytes of code 38, prolog size 0, PerfScore 13.30, instruction count 13, allocated bytes for code 38 (MethodHash=e8aedba5) for method System.IO.Strategies.OSFileStreamStrategy:Flush(bool):this

;; after 

; Assembly listing for method System.IO.Strategies.OSFileStreamStrategy:Flush(bool):this
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; rsp based frame
; fully interruptible
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;  V00 this         [V00,T00] (  5,  3.50)     ref  ->  rcx         this class-hnd single-def
;  V01 arg1         [V01,T01] (  3,  3   )    bool  ->  rdx         single-def
;# V02 OutArgs      [V02    ] (  1,  1   )  lclBlk ( 0) [rsp+00H]   "OutgoingArgSpace"
;* V03 tmp1         [V03,T03] (  0,  0   )    bool  ->  zero-ref    "Inline return value spill temp"
;  V04 tmp2         [V04,T02] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg"
;
; Lcl frame size = 0

G_M9306_IG01:        ; gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
						;; bbWeight=1    PerfScore 0.00
G_M9306_IG02:        ; gcrefRegs=00000002 {rcx}, byrefRegs=00000000 {}, byref, isz
       ; gcrRegs +[rcx]
       test     dl, dl
       je       SHORT G_M9306_IG05
						;; bbWeight=1    PerfScore 1.25
G_M9306_IG03:        ; gcrefRegs=00000002 {rcx}, byrefRegs=00000000 {}, byref, isz
       mov      rax, gword ptr [rcx+16]
       ; gcrRegs +[rax]
       test     byte  ptr [rax+16], 1
       jne      SHORT G_M9306_IG05
       test     byte  ptr [rcx+48], 2
       je       SHORT G_M9306_IG05
       mov      rcx, gword ptr [rcx+16]
						;; bbWeight=0.50 PerfScore 6.00
G_M9306_IG04:        ; , epilog, nogc, extend
       jmp      System.IO.Strategies.FileStreamHelpers:FlushToDisk(Microsoft.Win32.SafeHandles.SafeFileHandle)
       ; gcr arg pop 0
						;; bbWeight=0.50 PerfScore 1.00
G_M9306_IG05:        ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
       ; gcrRegs -[rax rcx]
       ret      
						;; bbWeight=0.50 PerfScore 0.50

; Total bytes of code 30, prolog size 0, PerfScore 11.75, instruction count 10, allocated bytes for code 30 (MethodHash=e8aedba5) for method System.IO.Strategies.OSFileStreamStrategy:Flush(bool):this

@dotnet/jit-contrib PTAL

ValueNumPair origVNP = substituteTree->gtVNPair;

// Update the tree. Note we don't actually swap operands...?
//
substituteTree->SetOper(GenTree::ReverseRelop(substituteTree->OperGet()));
Copy link
Member

@jakobbotsch jakobbotsch Nov 8, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the comment incomplete?

Also, we can use substitudeTree->SetOper(..., ValueNumberUpdate::PRESERVE_VN); here instead. Nevermind, I misread the code.

Copy link
Member

@jakobbotsch jakobbotsch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with one question: I notice we allow exception side effects in the JTRUE tree, is there a risk that we swap the order of side effects in the RHS of the assignment and the JTRUE?

@AndyAyersMS
Copy link
Member Author

is there a risk that we swap the order of side effects in the RHS of the assignment and the JTRUE?

Good point. I need to verify that the RHS exec set "covers" the JTRUE set so any exception we would have thrown we'll still throw.

@AndyAyersMS
Copy link
Member Author

AndyAyersMS commented Nov 8, 2021

Not sure exc set overing is sufficient to prove that we'll throw the same exception for the same reason, but seems like it may be close enough? Will think about this some more.

The extra check didn't lead to any new diffs.

[EDIT] -- seems like CSE would run into this problem too -- we verify two trees are value-congruent and that all uses have exception sets that are (roughly speaking) the intersection of all the def sets.

@AndyAyersMS
Copy link
Member Author

Formatter failure seems like some random CI glitch.

Running: C:\Users\VSSADM~1\AppData\Local\Temp\tmp90enqfh1\jitutils\bin\jit-format.bat -a x64 -b Checked -o windows -c D:\a\1\s\src\coreclr --verbose --projects dll
Traceback (most recent call last):
  File "D:\a\1\s\src\tests\Common\scripts\format.py", line 266, in <module>
    return_code = main(sys.argv[1:])
  File "D:\a\1\s\src\tests\Common\scripts\format.py", line 212, in main
    proc = subprocess.Popen([jitformat, "-a", arch, "-b", build, "-o", platform, "-c", coreclr, "--verbose", "--projects", project], env=my_env)
  File "C:\hostedtoolcache\windows\Python\3.10.0\x64\lib\subprocess.py", line 966, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\hostedtoolcache\windows\Python\3.10.0\x64\lib\subprocess.py", line 1435, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified

Ditto with the arm build failure:

CSC : error CS2012: Cannot open 'D:\a\_work\1\s\artifacts\obj\DllImportGenerator\netstandard2.0-Release\Microsoft.Interop.DllImportGenerator.dll' for writing -- 'The process cannot access the file 'D:\a\_work\1\s\artifacts\obj\DllImportGenerator\netstandard2.0-Release\Microsoft.Interop.DllImportGenerator.dll' because it is being used by another process.' [D:\a\_work\1\s\src\libraries\System.Runtime.InteropServices\gen\DllImportGenerator\DllImportGenerator.csproj]

@AndyAyersMS
Copy link
Member Author

Formatting is good locally, so will merge and hope for the best.

@AndyAyersMS AndyAyersMS merged commit 0797038 into dotnet:main Nov 9, 2021
@AndyAyersMS AndyAyersMS deleted the RedundantRelopWithSideEffect branch November 9, 2021 01:30
@EgorBo
Copy link
Member

EgorBo commented Nov 16, 2021

Windows-x64 improvements: dotnet/perf-autofiling-issues#2373

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.

3 participants